瀏覽代碼

1.添加游戏超时或失败记录只保存一次

王鹏鹏 2 年之前
父節點
當前提交
9fdc34dde8

+ 1 - 0
.idea/misc.xml

@@ -509,6 +509,7 @@
         <entry key="..\:/workspace/hcp-pads/game/src/main/res/layout/activity_game_settlement.xml" value="0.264" />
         <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.6" />
+        <entry key="..\:/workspace/hcp-pads/game/src/main/res/layout/dialog_completion_training.xml" value="0.72" />
         <entry key="..\:/workspace/hcp-pads/game/src/main/res/layout/dialog_count_down.xml" value="0.4" />
         <entry key="..\:/workspace/hcp-pads/game/src/main/res/layout/dialog_exit_game.xml" value="0.22239583333333332" />
         <entry key="..\:/workspace/hcp-pads/game/src/main/res/layout/dialog_game_result.xml" value="0.536" />

+ 85 - 0
game/src/main/java/com/yingyangfly/game/dialog/CompletionTrainingDialog.kt

@@ -0,0 +1,85 @@
+package com.yingyangfly.game.dialog
+
+import android.annotation.SuppressLint
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.appcompat.widget.AppCompatButton
+import androidx.appcompat.widget.AppCompatTextView
+import androidx.fragment.app.DialogFragment
+import com.gyf.immersionbar.BarHide
+import com.gyf.immersionbar.ktx.immersionBar
+import com.yingyangfly.baselib.ext.setOnSingleClickListener
+import com.yingyangfly.baselib.utils.ViewTool
+import com.yingyangfly.game.R
+
+/**
+ * 训练完成弹窗
+ */
+class CompletionTrainingDialog : DialogFragment() {
+
+    private var tvTotalScore: AppCompatTextView? = null
+    private var tvGameLevelScore: AppCompatTextView? = null
+    private var totalScore: String = ""
+    private var curLevelScore: String = ""
+    private var btnDetermine: AppCompatButton? = null
+
+    var onDialogClickListener: ((bean: String) -> Unit)? = null
+
+    fun setData(totalScore: String, curLevelScore: String) {
+        this.totalScore = totalScore
+        this.curLevelScore = curLevelScore
+    }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        isCancelable = false
+        dialog?.setCanceledOnTouchOutside(true)
+    }
+
+    override fun onStart() {
+        super.onStart()
+        dialog?.window?.setLayout(
+            ViewGroup.LayoutParams.MATCH_PARENT,
+            ViewGroup.LayoutParams.MATCH_PARENT
+        )
+        dialog?.window?.setBackgroundDrawableResource(R.color.transparent)
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        immersionBar {
+            hideBar(BarHide.FLAG_HIDE_BAR)
+            navigationBarColor(R.color.transparent)
+        }
+        val rootView = ViewTool.inflateFragmentPixels(
+            activity, R.layout.dialog_completion_training, container, 1194, 834
+        )
+        findId(rootView)
+        initData()
+        initListener()
+        return rootView
+    }
+
+    private fun findId(rootView: View) {
+        tvTotalScore = rootView.findViewById(R.id.tvTotalScore)
+        tvGameLevelScore = rootView.findViewById(R.id.tvGameLevelScore)
+        btnDetermine = rootView.findViewById(R.id.btnDetermine)
+    }
+
+    @SuppressLint("SetTextI18n")
+    private fun initData() {
+        tvTotalScore?.text = "累计得分:" + totalScore + "分"
+        tvGameLevelScore?.text = "本关得分:" + curLevelScore + "分"
+    }
+
+    private fun initListener() {
+        btnDetermine?.setOnSingleClickListener {
+            onDialogClickListener?.invoke("")
+        }
+    }
+}

+ 2 - 1
game/src/main/java/com/yingyangfly/game/dialog/GameResultDialog.kt

@@ -103,7 +103,8 @@ class GameResultDialog : DialogFragment() {
         } else {
             "当前关卡:$curLevel"
         }
-        tvTotalGameScore?.text = "总得分:" + totalScore + "分"
+        val score: Int = totalScore.toInt() + curLevelScore.toInt()
+        tvTotalGameScore?.text = "累计得分:" + score.toString() + "分"
         tvGameScore?.text = "本关得分:" + curLevelScore + "分"
         btnContinueThisLevel!!.text = if (TextUtils.equals("0", isPass)) {
             "下一关"

+ 23 - 14
game/src/main/java/com/yingyangfly/game/play/PlayGameActivity.kt

@@ -27,6 +27,7 @@ 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.dialog.CompletionTrainingDialog
 import com.yingyangfly.game.dialog.CountdownDialog
 import com.yingyangfly.game.dialog.GameResultDialog
 import com.yingyangfly.game.entity.GameDataBean
@@ -55,7 +56,6 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
     private lateinit var webSettings: WebSettings
     private var voicePlayer: VoicePlayer? = null
     private var gameResultDialog: GameResultDialog? = null
-    private var gameOvertime = false
 
     override fun onCreate(savedInstanceState: Bundle?) {
         gameCode = intent.getStringExtra("gameCode") ?: ""
@@ -129,8 +129,22 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
                         .withTransition(R.anim.leftin, R.anim.leftout)
                         .navigation(mContext)
                 } else {
+                    val score: Int = gameTotalScore.toInt() + gameDataBean.curLevelScore.toInt()
+                    gameTotalScore = score.toString()
                     if (TextUtils.equals("A", playClass)) {
-
+                        val completionTrainingDialog = CompletionTrainingDialog()
+                        completionTrainingDialog.setData(
+                            score.toString(),
+                            gameDataBean.curLevelScore
+                        )
+                        completionTrainingDialog.onDialogClickListener = {
+                            finish()
+                            LiveEventBusUtil.send(RxBusCodes.GAMEOVERTIME, "")
+                        }
+                        completionTrainingDialog.show(
+                            supportFragmentManager,
+                            "completionTrainingDialog"
+                        )
                     } else {
                         //游戏成功/失败
                         gameResultDialog = GameResultDialog()
@@ -141,13 +155,8 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
                             gameDataBean.isPass
                         )
                         gameResultDialog?.onBackHomeDialogClickListener = {
-                            if (gameOvertime) {
-                                Log.e("wpp", "--------------------------999")
-                                finish()
-                                LiveEventBusUtil.send(RxBusCodes.GAMEOVERTIME, "")
-                            } else {
-                                RxBus.get().send(RxBusCodes.CALLQUITGAME)
-                            }
+                            finish()
+                            LiveEventBusUtil.send(RxBusCodes.GAMEOVERTIME, "")
                         }
                         gameResultDialog?.onGameDialogClickListener = {
                             loadJs(it)
@@ -368,12 +377,12 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
                 if (TextUtils.isEmpty(it).not()) {
                     val gameDataBean = GsonUtil.GsonToBean(it, GameDataBean::class.java)
                     if (gameDataBean != null) {
-                        gameOvertime = TextUtils.equals("4", gameDataBean.isPass) || TextUtils.equals(
-                            "1",
-                            gameDataBean.isPass
-                        )
                         val isPass = gameDataBean.isPass
-                        if (TextUtils.equals("4", gameDataBean.isPass)) {
+                        if (TextUtils.equals("4", gameDataBean.isPass) || TextUtils.equals(
+                                "2",
+                                gameDataBean.isPass
+                            )
+                        ) {
                             gameDataBean.isPass = "1"
                         } else if (TextUtils.equals("3", gameDataBean.isPass)) {
                             gameDataBean.isPass = "0"

+ 85 - 0
game/src/main/res/layout/dialog_completion_training.xml

@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:ignore="ResourceName">
+
+    <FrameLayout
+        android:layout_width="@dimen/divider_497px"
+        android:layout_height="@dimen/divider_601px"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
+
+        <androidx.appcompat.widget.AppCompatImageView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="@mipmap/bg_completion_training" />
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent">
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tvTrainingCompletion"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/divider_238px"
+                android:gravity="center"
+                android:text="@string/training_completion"
+                android:textColor="@color/color_FFCD7E21"
+                android:textSize="@dimen/divider_50px"
+                android:textStyle="bold"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tvTotalScore"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/divider_15px"
+                android:gravity="center"
+                android:textColor="@color/color_FFCD7E21"
+                android:textSize="@dimen/divider_32px"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/tvTrainingCompletion" />
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tvGameLevelScore"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/divider_12px"
+                android:gravity="center"
+                android:textColor="@color/color_FFCD7E21"
+                android:textSize="@dimen/divider_32px"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/tvTotalScore" />
+
+            <androidx.appcompat.widget.AppCompatButton
+                android:id="@+id/btnDetermine"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/divider_76px"
+                android:layout_marginStart="@dimen/divider_85px"
+                android:layout_marginTop="@dimen/divider_40px"
+                android:layout_marginEnd="@dimen/divider_85px"
+                android:background="@mipmap/bg_determine_btn"
+                android:gravity="center"
+                android:text="@string/determine"
+                android:textColor="@android:color/white"
+                android:textSize="@dimen/divider_28px"
+                android:textStyle="bold"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/tvGameLevelScore" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+    </FrameLayout>
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 2 - 4
game/src/main/res/layout/dialog_game_result.xml

@@ -47,8 +47,7 @@
                 android:textSize="@dimen/divider_32px"
                 android:textStyle="bold"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/tvGameLevel"
-                tools:text="总得分:80分" />
+                app:layout_constraintTop_toBottomOf="@+id/tvGameLevel" />
 
             <androidx.appcompat.widget.AppCompatTextView
                 android:id="@+id/tvGameScore"
@@ -60,8 +59,7 @@
                 android:textSize="@dimen/divider_32px"
                 android:textStyle="bold"
                 app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/tvGameLevel"
-                tools:text="本关得分:80分" />
+                app:layout_constraintTop_toBottomOf="@+id/tvGameLevel" />
 
             <androidx.appcompat.widget.AppCompatButton
                 android:id="@+id/btnHome"

二進制
game/src/main/res/mipmap-xxhdpi/bg_completion_training.png


二進制
game/src/main/res/mipmap-xxhdpi/bg_determine_btn.png


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

@@ -41,4 +41,5 @@
     <color name="color_FFFFE9A0" tools:ignore="ResourceName">#FFFFE9A0</color>
     <color name="color_FFC63910" tools:ignore="ResourceName">#FFC63910</color>
     <color name="color_FFFF9E58" tools:ignore="ResourceName">#FFFF9E58</color>
+    <color name="color_FFCD7E21" tools:ignore="ResourceName">#FFCD7E21</color>
 </resources>

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

@@ -12,6 +12,7 @@
     <dimen name="divider_656px" tools:ignore="ResourceName">656px</dimen>
     <dimen name="divider_645px" tools:ignore="ResourceName">645px</dimen>
     <dimen name="divider_616px" tools:ignore="ResourceName">616px</dimen>
+    <dimen name="divider_601px" tools:ignore="ResourceName">601px</dimen>
     <dimen name="divider_597px" tools:ignore="ResourceName">597px</dimen>
     <dimen name="divider_588px" tools:ignore="ResourceName">588px</dimen>
     <dimen name="divider_561px" tools:ignore="ResourceName">561px</dimen>
@@ -22,6 +23,7 @@
     <dimen name="divider_522px" tools:ignore="ResourceName">522px</dimen>
     <dimen name="divider_503px" tools:ignore="ResourceName">503px</dimen>
     <dimen name="divider_502px" tools:ignore="ResourceName">502px</dimen>
+    <dimen name="divider_497px" tools:ignore="ResourceName">497px</dimen>
     <dimen name="divider_482px" tools:ignore="ResourceName">482px</dimen>
     <dimen name="divider_472px" tools:ignore="ResourceName">472px</dimen>
     <dimen name="divider_464px" tools:ignore="ResourceName">464px</dimen>

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

@@ -13,4 +13,5 @@
     <string name="score" tools:ignore="ResourceName">得分</string>
     <string name="zero" tools:ignore="ResourceName">0</string>
     <string name="keep_going_try_to_surpass_yourself" tools:ignore="ResourceName">继续加油,努力超越自己!\n坚持训练下去,你的注意力分配能力会得到很大的提升</string>
+    <string name="training_completion" tools:ignore="ResourceName">训练完成</string>
 </resources>