Browse Source

1.添加游戏结算页面

王鹏鹏 2 years ago
parent
commit
2a1037e8c0

+ 1 - 0
.idea/misc.xml

@@ -493,6 +493,7 @@
         <entry key="..\:/workspace/hcp-pads/game/src/main/res/drawable/bg_start_game.xml" value="0.151" />
         <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_game_settlement.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.536" />
         <entry key="..\:/workspace/hcp-pads/game/src/main/res/layout/dialog_count_down.xml" value="0.23697916666666666" />

+ 5 - 0
baselib/src/main/java/com/yingyangfly/baselib/router/RouterUrlCommon.kt

@@ -204,4 +204,9 @@ object RouterUrlCommon {
      * 玩游戏页面
      */
     const val playGame = "/play/game"
+
+    /**
+     * 游戏结算
+     */
+    const val gameSettlement = "/game/settlement"
 }

+ 6 - 0
game/src/main/AndroidManifest.xml

@@ -22,6 +22,12 @@
             android:screenOrientation="landscape"
             android:windowSoftInputMode="adjustResize|adjustPan" />
 
+        <activity
+            android:name="com.yingyangfly.game.settlement.GameSettlementActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:screenOrientation="landscape"
+            android:windowSoftInputMode="adjustResize|adjustPan" />
+
     </application>
 
 </manifest>

+ 44 - 21
game/src/main/java/com/yingyangfly/game/play/PlayGameActivity.kt

@@ -39,6 +39,9 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
     private var gameBean: GameBean? = null
     private lateinit var webSettings: WebSettings
     private var gameResultDialog: GameResultDialog? = null
+    private var gameScore = ""
+    private var gameLevel = ""
+    private var gameTime = ""
 
     override fun onCreate(savedInstanceState: Bundle?) {
         gameBean = intent.getSerializableExtra("bean") as GameBean
@@ -65,6 +68,7 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
         }
     }
 
+    @SuppressLint("SetTextI18n")
     override fun initData() {
         Glide.with(mContext)
             .asGif()
@@ -75,6 +79,7 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
             binding.tvTime.post {
                 if (TextUtils.isEmpty(it).not()) {
                     binding.tvTime.text = it
+                    gameTime = it
                 }
             }
         }
@@ -83,6 +88,7 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
             binding.tvScore.post {
                 if (TextUtils.isEmpty(it).not()) {
                     binding.tvScore.text = it
+                    gameScore = it
                 }
             }
         }
@@ -90,7 +96,8 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
         LiveEventBusUtil.observer<String>(this, RxBusCodes.SETLEVEL) {
             binding.tvGameLevel.post {
                 if (TextUtils.isEmpty(it).not()) {
-                    binding.tvGameLevel.text = it
+                    binding.tvGameLevel.text = "第" + it + "关"
+                    gameLevel = it
                 }
             }
         }
@@ -101,7 +108,7 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
                     Log.e("wpp", it)
                     val gameDataBean = GsonUtil.GsonToBean(it, GameDataBean::class.java)
                     if (gameDataBean != null) {
-                        saveData(gameDataBean)
+                        saveData(gameDataBean, "2")
                     }
                 }
             }
@@ -111,25 +118,33 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
     /**
      * 保存游戏进度
      */
-    private fun saveData(gameDataBean: GameDataBean) {
+    private fun saveData(gameDataBean: GameDataBean, type: String) {
         viewModel.saveGameRecord(gameBean!!.gameCode, gameBean!!.playClass, gameDataBean, fail = {
-            it.toast()
-        }, success = {
             runOnUiThread {
-                gameResultDialog = GameResultDialog()
-                gameResultDialog?.setData(
-                    gameDataBean.curLevel,
-                    gameBean!!.gameTotalScore,
-                    gameDataBean.curLevelScore,
-                    gameDataBean.isPass
-                )
-                gameResultDialog?.onBackHomeDialogClickListener = {
+                if (TextUtils.equals("1", type)) {
                     finish()
                 }
-                gameResultDialog?.onGameDialogClickListener = {
-                    loadJs(it)
+            }
+        }, success = {
+            runOnUiThread {
+                if (TextUtils.equals("1", type)) {
+                    finish()
+                } else {
+                    gameResultDialog = GameResultDialog()
+                    gameResultDialog?.setData(
+                        gameDataBean.curLevel,
+                        gameBean!!.gameTotalScore,
+                        gameDataBean.curLevelScore,
+                        gameDataBean.isPass
+                    )
+                    gameResultDialog?.onBackHomeDialogClickListener = {
+                        finish()
+                    }
+                    gameResultDialog?.onGameDialogClickListener = {
+                        loadJs(it)
+                    }
+                    gameResultDialog?.show(supportFragmentManager, "gameResultDialog")
                 }
-                gameResultDialog?.show(supportFragmentManager, "gameResultDialog")
             }
         })
     }
@@ -174,7 +189,7 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
                     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                         view?.loadUrl(request.url.toString())
                     } else {
-                        view?.loadUrl(request.toString()!!)
+                        view?.loadUrl(request.toString())
                     }
                 } else {
                     gameUrl.let {
@@ -202,7 +217,15 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
             MotionEvent.ACTION_UP -> {
                 v.startAnimation(getEndAnimation())
                 if (v.id == R.id.tvPause) {
-                    finish()
+                    runOnUiThread {
+                        val gameDataBean = GameDataBean().apply {
+                            curLevel = gameLevel
+                            curLevelScore = gameScore
+                            curLevelTime = gameTime
+                            isPass = "1"
+                        }
+                        saveData(gameDataBean, "1")
+                    }
                 }
             }
             MotionEvent.ACTION_CANCEL -> {
@@ -238,15 +261,15 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
     private fun loadJs(it: String) {
         if (TextUtils.equals("0", it)) {
             binding.webView.evaluateJavascript(
-                "javascript:NextLevel()"
+                "javascript:CallNextLevel()"
             ) {
 
             }
         } else {
             binding.webView.evaluateJavascript(
-                "javascript:RestartGame()"
+                "javascript:CallRestartGame()"
             ) {
-                
+
             }
         }
     }

+ 25 - 0
game/src/main/java/com/yingyangfly/game/settlement/GameSettlementActivity.kt

@@ -0,0 +1,25 @@
+package com.yingyangfly.game.settlement
+
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
+import com.yingyangfly.baselib.router.RouterUrlCommon
+import com.yingyangfly.game.databinding.ActivityGameSettlementBinding
+
+/**
+ * 游戏结算
+ */
+@Route(path = RouterUrlCommon.gameSettlement)
+class GameSettlementActivity :
+    BaseMVVMActivity<ActivityGameSettlementBinding, GameSettlementViewModel>() {
+    override fun initViews() {
+
+    }
+
+    override fun initListener() {
+
+    }
+
+    override fun initData() {
+
+    }
+}

+ 36 - 0
game/src/main/java/com/yingyangfly/game/settlement/GameSettlementViewModel.kt

@@ -0,0 +1,36 @@
+package com.yingyangfly.game.settlement
+
+import com.yingyangfly.baselib.mvvm.BaseViewModel
+import com.yingyangfly.baselib.net.XUtils
+import com.yingyangfly.baselib.utils.GsonUtil
+import com.yingyangfly.game.entity.GameBean
+import com.yingyangfly.game.entity.GetGameDetailByCodeBean
+import com.yingyangfly.game.net.GAME_API
+
+/**
+ * @author 王鹏鹏
+ */
+class GameSettlementViewModel : BaseViewModel() {
+
+    /**
+     * 获取游戏详情
+     */
+    fun getGameDetailByCode(
+        code: String,
+        playClasses: String,
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: GameBean?) -> Unit)? = null,
+    ) = launchFlow(false) {
+        val requestBean = GetGameDetailByCodeBean().apply {
+            gameCode = code
+            playClass = playClasses
+        }
+        val body = XUtils.createJson(GsonUtil.GsonString(requestBean))
+        GAME_API.getGameDetailByCode(body)
+    }.runUI(
+        success,
+        fail
+    )
+
+
+}

+ 7 - 0
game/src/main/manifest/AndroidManifest.xml

@@ -20,6 +20,13 @@
             android:configChanges="keyboardHidden|orientation|screenSize"
             android:screenOrientation="landscape"
             android:windowSoftInputMode="adjustResize|adjustPan" />
+
+        <activity
+            android:name="com.yingyangfly.game.settlement.GameSettlementActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:screenOrientation="landscape"
+            android:windowSoftInputMode="adjustResize|adjustPan" />
+
     </application>
 
 </manifest>

+ 3 - 0
game/src/main/res/drawable/bg_start_game.xml

@@ -6,6 +6,9 @@
     <item>
         <shape android:shape="rectangle">
             <corners android:radius="@dimen/divider_44px" />
+            <stroke
+                android:width="@dimen/divider_6px"
+                android:color="@color/color_E0FFFFFF" />
             <gradient
                 android:angle="180"
                 android:endColor="@color/color_FF8756FF"

+ 12 - 0
game/src/main/res/layout/activity_game_settlement.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:ignore="ResourceName">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+</layout>

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

@@ -13,4 +13,5 @@
     <color name="color_FF77B0FF" tools:ignore="ResourceName">#FF77B0FF</color>
     <color name="transparent" tools:ignore="ResourceName">#00000000</color><!-- 透明   -->
     <color name="color_FF5F3100" tools:ignore="ResourceName">#FF5F3100</color>
+    <color name="color_E0FFFFFF" tools:ignore="ResourceName">#E0FFFFFF</color>
 </resources>