王鹏鹏 2 лет назад
Родитель
Сommit
bdf0620a5c

+ 2 - 1
.idea/misc.xml

@@ -484,6 +484,7 @@
         <entry key="..\:/workspace/hcp-pads/baselib/src/main/res/layout/rv_empty.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pads/game/src/main/res/drawable/bg_game_introduction.xml" value="0.151" />
         <entry key="..\:/workspace/hcp-pads/game/src/main/res/drawable/bg_game_loading.xml" value="0.151" />
+        <entry key="..\:/workspace/hcp-pads/game/src/main/res/drawable/bg_game_pause.xml" value="0.151" />
         <entry key="..\:/workspace/hcp-pads/game/src/main/res/drawable/bg_game_progressbar_selector.xml" value="0.151" />
         <entry key="..\:/workspace/hcp-pads/game/src/main/res/drawable/bg_game_record.xml" value="0.151" />
         <entry key="..\:/workspace/hcp-pads/game/src/main/res/drawable/bg_game_score.xml" value="0.151" />
@@ -492,7 +493,7 @@
         <entry key="..\:/workspace/hcp-pads/game/src/main/res/layout/activity_game_introduction.xml" value="0.4" />
         <entry key="..\:/workspace/hcp-pads/game/src/main/res/layout/activity_game_loading.xml" value="0.22239583333333332" />
         <entry key="..\:/workspace/hcp-pads/game/src/main/res/layout/activity_main.xml" value="0.23697916666666666" />
-        <entry key="..\:/workspace/hcp-pads/game/src/main/res/layout/activity_play_game.xml" value="0.2" />
+        <entry key="..\:/workspace/hcp-pads/game/src/main/res/layout/activity_play_game.xml" value="0.536" />
         <entry key="..\:/workspace/hcp-pads/healthconsultation/src/main/res/layout/activity_consultation_request.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pads/healthconsultation/src/main/res/layout/activity_doctor_details.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pads/healthconsultation/src/main/res/layout/activity_payment.xml" value="0.23697916666666666" />

+ 51 - 8
game/src/main/java/com/yingyangfly/game/play/PlayGameActivity.kt

@@ -4,19 +4,23 @@ import android.annotation.SuppressLint
 import android.os.Build
 import android.os.Bundle
 import android.util.Log
+import android.view.MotionEvent
+import android.view.View
 import android.webkit.WebResourceRequest
 import android.webkit.WebSettings
 import android.webkit.WebView
 import android.webkit.WebViewClient
 import com.alibaba.android.arouter.facade.annotation.Route
 import com.bumptech.glide.Glide
-import com.yingyangfly.baselib.R
+import com.yingyangfly.baselib.ext.getEndAnimation
+import com.yingyangfly.baselib.ext.getScaleAnimation
 import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
 import com.yingyangfly.baselib.router.RouterUrlCommon
 import com.yingyangfly.baselib.utils.GsonUtil
 import com.yingyangfly.baselib.utils.LiveEventBusUtil
 import com.yingyangfly.baselib.utils.RxBusCodes
+import com.yingyangfly.game.R
 import com.yingyangfly.game.databinding.ActivityPlayGameBinding
 import com.yingyangfly.game.entity.GameBean
 import com.yingyangfly.game.entity.GameDataBean
@@ -26,7 +30,8 @@ import com.yingyangfly.game.utils.AndroidToJs
  * 玩游戏页面
  */
 @Route(path = RouterUrlCommon.playGame)
-class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewModel>() {
+class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewModel>(),
+    View.OnTouchListener {
 
     private var gameBean: GameBean? = null
     private lateinit var webSettings: WebSettings
@@ -49,8 +54,11 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
         }
     }
 
+    @SuppressLint("ClickableViewAccessibility")
     override fun initListener() {
-
+        binding {
+            tvPause.setOnTouchListener(this@PlayGameActivity)
+        }
     }
 
     override fun initData() {
@@ -62,7 +70,7 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
         LiveEventBusUtil.observer<String>(this, RxBusCodes.SETTIME) {
             binding.tvTime.post {
                 val data = it.split("setTime:")
-                Log.e("wpp", "setTime:"+data)
+                Log.e("wpp", "setTime:" + data)
                 binding.tvTime.text = it
             }
         }
@@ -70,7 +78,7 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
         LiveEventBusUtil.observer<String>(this, RxBusCodes.SETSCORE) {
             binding.tvScore.post {
                 val data = it.split("setScore:")
-                Log.e("wpp", "setScore:"+data)
+                Log.e("wpp", "setScore:" + data)
                 binding.tvScore.text = it
             }
         }
@@ -82,9 +90,10 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
                 if (data.isNullOrEmpty().not()) {
                     if (data[1].isNullOrEmpty().not()) {
                         Log.e("wpp", data[1])
-//                        var gameDataBean = GsonUtil.GsonToBean(data[1], GameDataBean::class.java)
-
-
+                        val gameDataBean = GsonUtil.GsonToBean(data[1], GameDataBean::class.java)
+                        if (gameDataBean != null) {
+                            saveData(gameDataBean)
+                        }
                     }
                 }
 
@@ -92,6 +101,17 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
         }
     }
 
+    /**
+     * 保存游戏进度
+     */
+    private fun saveData(gameDataBean: GameDataBean) {
+        viewModel.saveGameRecord(gameBean!!.gameCode, gameBean!!.playClass, gameDataBean, fail = {
+
+        }, success = {
+
+        })
+    }
+
     @SuppressLint("JavascriptInterface", "SetJavaScriptEnabled")
     private fun initWebView(gameUrl: String) {
         webSettings = binding.webView.settings
@@ -148,4 +168,27 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
         }
         binding.webView.loadUrl(gameUrl)
     }
+
+    @SuppressLint("ClickableViewAccessibility")
+    override fun onTouch(v: View, event: MotionEvent): Boolean {
+        when (event.action) {
+            MotionEvent.ACTION_DOWN -> {
+                if (v.id == R.id.tvPause) {
+                    v.startAnimation(getScaleAnimation())
+                }
+            }
+            MotionEvent.ACTION_UP -> {
+                v.startAnimation(getEndAnimation())
+                if (v.id == R.id.tvPause) {
+                    finish()
+                }
+            }
+            MotionEvent.ACTION_CANCEL -> {
+                if (v.id == R.id.tvPause) {
+                    v.startAnimation(getEndAnimation())
+                }
+            }
+        }
+        return true
+    }
 }

+ 10 - 1
game/src/main/java/com/yingyangfly/game/play/PlayGameViewModel.kt

@@ -16,11 +16,20 @@ class PlayGameViewModel : BaseViewModel() {
      * 获取游戏详情
      */
     fun saveGameRecord(
+        code: String,
+        playClasses: String,
         bean: GameDataBean,
         fail: ((msg: String) -> Unit)? = null,
         success: ((success: GameBean?) -> Unit)? = null,
     ) = launchFlow(false) {
-        val requestBean = GetSaveGameRecordBean()
+        val requestBean = GetSaveGameRecordBean().apply {
+            gameCode = code
+            playClass = playClasses
+            duration = bean.curLevelTime
+            isPass = bean.isPass
+            gameLevel = bean.curLevel
+            gameScore = bean.curLevelScore
+        }
         val body = XUtils.createJson(GsonUtil.GsonString(requestBean))
         GAME_API.saveGameRecord(body)
     }.runUI(

+ 10 - 0
game/src/main/res/drawable/bg_game_pause.xml

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+    <corners android:radius="@dimen/divider_43px" />
+    <stroke
+        android:width="@dimen/divider_4px"
+        android:color="@color/color_FFFFA916" />
+    <solid android:color="@android:color/white" />
+</shape>

+ 12 - 7
game/src/main/res/layout/activity_play_game.xml

@@ -16,13 +16,18 @@
         android:layout_height="match_parent"
         android:background="@drawable/bg_game_introduction">
 
-        <androidx.appcompat.widget.AppCompatImageView
-            android:id="@+id/homeImage"
-            android:layout_width="@dimen/divider_48px"
-            android:layout_height="@dimen/divider_43px"
-            android:layout_marginStart="@dimen/divider_65px"
-            android:layout_marginTop="@dimen/divider_35px"
-            android:background="@mipmap/bg_home"
+        <androidx.appcompat.widget.AppCompatTextView
+            android:id="@+id/tvPause"
+            android:layout_width="@dimen/divider_169px"
+            android:layout_height="@dimen/divider_65px"
+            android:layout_marginStart="@dimen/divider_32px"
+            android:layout_marginTop="@dimen/divider_32px"
+            android:background="@drawable/bg_game_pause"
+            android:gravity="center"
+            android:text="@string/pause_help"
+            android:textColor="@color/color_FFFFA916"
+            android:textSize="@dimen/divider_28px"
+            android:textStyle="bold"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
 

+ 1 - 0
game/src/main/res/values/dimens.xml

@@ -94,6 +94,7 @@
     <dimen name="divider_180px" tools:ignore="ResourceName">180px</dimen>
     <dimen name="divider_176px" tools:ignore="ResourceName">176px</dimen>
     <dimen name="divider_173px" tools:ignore="ResourceName">173px</dimen>
+    <dimen name="divider_169px" tools:ignore="ResourceName">169px</dimen>
     <dimen name="divider_164px" tools:ignore="ResourceName">164px</dimen>
     <dimen name="divider_163px" tools:ignore="ResourceName">163px</dimen>
     <dimen name="divider_160px" tools:ignore="ResourceName">160px</dimen>

+ 1 - 0
game/src/main/res/values/strings.xml

@@ -1,3 +1,4 @@
 <resources xmlns:tools="http://schemas.android.com/tools">
     <string name="started_training" tools:ignore="ResourceName">开始训练</string>
+    <string name="pause_help" tools:ignore="ResourceName">暂停/帮助</string>
 </resources>