Ver Fonte

1.添加直播推送游戏任务功能

王鹏鹏 há 2 anos atrás
pai
commit
416cd2e2b6

+ 2 - 2
game/src/main/java/com/yingyangfly/game/introduction/GameIntroductionActivity.kt

@@ -97,7 +97,6 @@ class GameIntroductionActivity :
      */
     private fun getGameSound() {
         viewModel.getGameVoice(fail = {
-            it.toast()
         }, success = {
             if (gameSoundDao != null) {
                 gameSoundDao?.deleteAll()
@@ -136,7 +135,8 @@ class GameIntroductionActivity :
      */
     private fun getGameDetailByCode() {
         viewModel.getGameDetailByCode(gameCode, playClass, fail = {
-            it.toast()
+            val str = "获取游戏信息失败$it"
+            str.toast()
         }, success = {
             if (it != null) {
                 gameBean = it

+ 38 - 25
game/src/main/java/com/yingyangfly/game/play/PlayGameActivity.kt

@@ -253,22 +253,30 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
                 when (v.id) {
                     R.id.imagePause, R.id.iamgePauses -> {
                         runOnUiThread {
-                            binding.webView.evaluateJavascript(
-                                "javascript:CallPauseGame()"
-                            ) {
-                                ARouter.getInstance().build(RouterUrlCommon.gameIntroduction)
-                                    .withString("gameCode", gameCode)
-                                    .withString("playClass", playClass)
-                                    .withTransition(R.anim.leftin, R.anim.leftout)
-                                    .navigation(mContext)
+                            if (TextUtils.equals("D", playClass)) {
+                                finish()
+                            } else {
+                                binding.webView.evaluateJavascript(
+                                    "javascript:CallPauseGame()"
+                                ) {
+                                    ARouter.getInstance().build(RouterUrlCommon.gameIntroduction)
+                                        .withString("gameCode", gameCode)
+                                        .withString("playClass", playClass)
+                                        .withTransition(R.anim.leftin, R.anim.leftout)
+                                        .navigation(mContext)
+                                }
                             }
                         }
                     }
                     R.id.tvFullScreen -> {
-                        setReduce(false)
+                        runOnUiThread {
+                            setReduce(false)
+                        }
                     }
                     R.id.tvReduce -> {
-                        setReduce(true)
+                        runOnUiThread {
+                            setReduce(true)
+                        }
                     }
                 }
             }
@@ -314,20 +322,24 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
                     }
                 }
             }
-            val countdownDialog = CountdownDialog()
-            countdownDialog.setContentBackground(
-                gameInbetweenImage,
-                gameName,
-                oneStep,
-                twoStep,
-                threeStep
-            )
-            countdownDialog.onDialogClickListener = {
-                if (loadingOver) {
-                    callStartGame()
+            if (TextUtils.equals("D", playClass).not()) {
+                val countdownDialog = CountdownDialog()
+                countdownDialog.setContentBackground(
+                    gameInbetweenImage,
+                    gameName,
+                    oneStep,
+                    twoStep,
+                    threeStep
+                )
+                countdownDialog.onDialogClickListener = {
+                    if (loadingOver) {
+                        callStartGame()
+                    }
                 }
+                countdownDialog.show(supportFragmentManager, "countdownDialog")
+            } else {
+                countdownSuccess = true
             }
-            countdownDialog.show(supportFragmentManager, "countdownDialog")
         }
         mConstrainSet_one?.clone(binding.gameParentLayout)
     }
@@ -440,7 +452,9 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
                         } else if (TextUtils.equals("3", gameDataBean.isPass)) {
                             gameDataBean.isPass = "0"
                         }
-                        saveData(gameDataBean)
+                        if (TextUtils.equals("D", playClass).not()) {
+                            saveData(gameDataBean)
+                        }
                         parsingData(gameDataBean, isPass)
                     }
                 }
@@ -542,7 +556,6 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
      */
     private fun getVoiceUrl(taskDesn: String) {
         viewModel.getVoiceUrl(taskDesn, fail = {
-            it.toast()
         }, success = {
             if (TextUtils.isEmpty(it).not()) {
                 if (db != null) {
@@ -581,7 +594,7 @@ class PlayGameActivity : BaseMVVMActivity<ActivityPlayGameBinding, PlayGameViewM
      */
     private fun parsingData(gameDataBean: GameDataBean, isPass: String) {
         runOnUiThread {
-            if (TextUtils.equals("A", playClass)) {
+            if (TextUtils.equals("A", playClass) || TextUtils.equals("D", playClass)) {
                 val score: Int = gameTotalScore.toInt() + gameDataBean.curLevelScore.toInt()
                 gameTotalScore = score.toString()
                 showCompletionTrainingDialog(gameDataBean)

+ 11 - 11
game/src/main/res/layout/dialog_completion_training.xml

@@ -7,8 +7,8 @@
     tools:ignore="ResourceName">
 
     <FrameLayout
-        android:layout_width="@dimen/divider_568px"
-        android:layout_height="@dimen/divider_601px"
+        android:layout_width="@dimen/divider_693px"
+        android:layout_height="@dimen/divider_693px"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
@@ -28,7 +28,7 @@
                 android:id="@+id/totalScoreLayout"
                 android:layout_width="@dimen/divider_190px"
                 android:layout_height="@dimen/divider_58px"
-                android:layout_marginTop="@dimen/divider_311px"
+                android:layout_marginTop="@dimen/divider_418px"
                 android:gravity="center"
                 android:orientation="horizontal"
                 app:layout_constraintEnd_toEndOf="parent"
@@ -43,7 +43,7 @@
                     android:includeFontPadding="false"
                     android:text="@string/cumulative_score"
                     android:textColor="@android:color/white"
-                    android:textSize="@dimen/divider_28px" />
+                    android:textSize="@dimen/divider_32px" />
 
                 <com.yingyangfly.game.widget.NumberAnimTextView
                     android:id="@+id/tvTotalScore"
@@ -53,7 +53,7 @@
                     android:gravity="center"
                     android:includeFontPadding="false"
                     android:textColor="@android:color/white"
-                    android:textSize="@dimen/divider_28px" />
+                    android:textSize="@dimen/divider_32px" />
 
                 <androidx.appcompat.widget.AppCompatTextView
                     android:layout_width="wrap_content"
@@ -63,7 +63,7 @@
                     android:includeFontPadding="false"
                     android:text="@string/scores"
                     android:textColor="@android:color/white"
-                    android:textSize="@dimen/divider_28px" />
+                    android:textSize="@dimen/divider_32px" />
 
             </LinearLayout>
 
@@ -71,7 +71,7 @@
                 android:id="@+id/gameLevelScoreLayout"
                 android:layout_width="@dimen/divider_190px"
                 android:layout_height="@dimen/divider_58px"
-                android:layout_marginTop="@dimen/divider_8px"
+                android:layout_marginTop="@dimen/divider_12px"
                 android:gravity="center"
                 android:orientation="horizontal"
                 app:layout_constraintEnd_toEndOf="parent"
@@ -86,7 +86,7 @@
                     android:includeFontPadding="false"
                     android:text="@string/this_level_score"
                     android:textColor="@android:color/white"
-                    android:textSize="@dimen/divider_28px" />
+                    android:textSize="@dimen/divider_32px" />
 
                 <com.yingyangfly.game.widget.NumberAnimTextView
                     android:id="@+id/tvGameLevelScore"
@@ -96,7 +96,7 @@
                     android:gravity="center"
                     android:includeFontPadding="false"
                     android:textColor="@android:color/white"
-                    android:textSize="@dimen/divider_28px" />
+                    android:textSize="@dimen/divider_32px" />
 
                 <androidx.appcompat.widget.AppCompatTextView
                     android:layout_width="wrap_content"
@@ -106,14 +106,14 @@
                     android:includeFontPadding="false"
                     android:text="@string/scores"
                     android:textColor="@android:color/white"
-                    android:textSize="@dimen/divider_28px" />
+                    android:textSize="@dimen/divider_32px" />
             </LinearLayout>
 
             <androidx.appcompat.widget.AppCompatImageView
                 android:id="@+id/btnDetermine"
                 android:layout_width="@dimen/divider_176px"
                 android:layout_height="@dimen/divider_60px"
-                android:layout_marginTop="@dimen/divider_36px"
+                android:layout_marginTop="@dimen/divider_56px"
                 android:layout_marginBottom="@dimen/divider_30px"
                 android:background="@mipmap/icon_back_home"
                 android:scaleType="centerInside"

+ 49 - 5
livebroadcast/src/main/java/com/yingyang/livebroadcast/activity/detail/LiveBroadcastActivity.kt

@@ -7,6 +7,7 @@ import android.util.Log
 import android.view.MotionEvent
 import android.view.View
 import com.alibaba.android.arouter.facade.annotation.Route
+import com.alibaba.android.arouter.launcher.ARouter
 import com.tencent.bugly.crashreport.CrashReport
 import com.tencent.imsdk.v2.*
 import com.tencent.live2.V2TXLiveCode
@@ -17,7 +18,9 @@ import com.tencent.live2.impl.V2TXLivePlayerImpl
 import com.yingyang.livebroadcast.R
 import com.yingyang.livebroadcast.databinding.ActivityLiveBroadcastBinding
 import com.yingyang.livebroadcast.dialog.GameTasksDialog
+import com.yingyang.livebroadcast.entity.GameTasksBean
 import com.yingyangfly.baselib.bean.MessageBean
+import com.yingyangfly.baselib.bean.Record
 import com.yingyangfly.baselib.dialog.MessageDialog
 import com.yingyangfly.baselib.dialog.TaskFragment
 import com.yingyangfly.baselib.ext.*
@@ -253,7 +256,7 @@ class LiveBroadcastActivity :
             super.onRecvNewMessage(msg)
             runOnUiThread {
                 if (msg != null) {
-                    Log.e("wpp", "6-------------------------------"+GsonUtil.GsonString(msg))
+                    Log.e("wpp", "6-------------------------------" + GsonUtil.GsonString(msg))
                     if (msg.isRead.not()) {
                         makeMessageAsRead(msg)
                         if (msg.elemType == V2TIMMessage.V2TIM_ELEM_TYPE_CUSTOM) {
@@ -287,7 +290,10 @@ class LiveBroadcastActivity :
                                                 messageDialog.onDialogClickListener = {
                                                     finish()
                                                 }
-                                                messageDialog.show(supportFragmentManager, "taskFragment")
+                                                messageDialog.show(
+                                                    supportFragmentManager,
+                                                    "taskFragment"
+                                                )
                                             }
                                         }
                                     }
@@ -321,9 +327,47 @@ class LiveBroadcastActivity :
      * 专属游戏弹框
      */
     private fun showGameTasksDialog(data: String) {
-        val gameTasksDialog = GameTasksDialog()
-        gameTasksDialog.setData(data)
-        gameTasksDialog.show(supportFragmentManager, "gameTasksDialog")
+        runOnUiThread {
+            val gameTasksBean = GsonUtil.GsonToBean(data, GameTasksBean::class.java)
+            if (gameTasksBean != null) {
+                gotoGameView(gameTasksBean)
+//                getGameDetail(gameTasksBean)
+            }
+        }
+    }
+
+    /**
+     * 获取游戏详情
+     */
+    private fun getGameDetail(gameTasksBean: GameTasksBean) {
+        viewModel.getGameDetail(gameTasksBean.id, fail = {
+            "获取游戏详情失败".toast()
+        }, success = {
+            if (it != null) {
+                gotoGameView(gameTasksBean)
+            }
+        })
+    }
+
+    /**
+     * 跳转游戏页面
+     */
+    private fun gotoGameView(gameTasksBean: GameTasksBean) {
+        runOnUiThread {
+            ARouter.getInstance().build(RouterUrlCommon.playGame)
+                .withString("gameCode", gameTasksBean.gameCode)
+                .withString("playClass", "D")
+                .withString("url", gameTasksBean.url)
+                .withString("gameType", gameTasksBean.gameType)
+                .withString("gameTotalScore", gameTasksBean.gameTotalScore)
+                .withString("gameInbetweenImage", gameTasksBean.gameInbetweenImage)
+                .withString("gameBackgroundImage", gameTasksBean.gameBackgroundImage)
+                .withString("gameShortDesn", gameTasksBean.gameShortDesn)
+                .withString("fullFlag", gameTasksBean.fullFlag)
+                .withString("frameImg", gameTasksBean.frameImg)
+                .withTransition(R.anim.leftin, R.anim.leftout)
+                .navigation(mContext)
+        }
     }
 
     override fun onResume() {

+ 14 - 0
livebroadcast/src/main/java/com/yingyang/livebroadcast/activity/detail/LiveBroadcastDetailViewModel.kt

@@ -3,6 +3,7 @@ package com.yingyang.livebroadcast.activity.detail
 import com.yingyang.livebroadcast.entity.LiveYesornoBean
 import com.yingyang.livebroadcast.entity.liveIncrBean
 import com.yingyang.livebroadcast.net.LIVEBROADCAST_API
+import com.yingyangfly.baselib.bean.Record
 import com.yingyangfly.baselib.mvvm.BaseViewModel
 import com.yingyangfly.baselib.net.XUtils
 import com.yingyangfly.baselib.utils.GsonUtil
@@ -54,4 +55,17 @@ class LiveBroadcastDetailViewModel : BaseViewModel() {
         fail
     )
 
+    /**
+     * 获取游戏详情
+     */
+    fun getGameDetail(
+        id: String,
+        fail: ((msg: String) -> Unit)? = null,
+        success: ((success: Record?) -> Unit)? = null,
+    ) = launchFlow(true) {
+        LIVEBROADCAST_API.getGameDetail(id)
+    }.runUI(
+        success,
+        fail
+    )
 }

+ 1 - 1
livebroadcast/src/main/java/com/yingyang/livebroadcast/dialog/GameTasksDialog.kt

@@ -127,7 +127,7 @@ class GameTasksDialog : DialogFragment() {
                 if (gameTasksBean != null) {
                     ARouter.getInstance().build(RouterUrlCommon.playGame)
                         .withString("gameCode", gameTasksBean.gameCode)
-                        .withString("playClass", "A")
+                        .withString("playClass", "D")
                         .withString("url", gameTasksBean.url)
                         .withString("gameType", gameTasksBean.gameType)
                         .withString("gameTotalScore", gameTotalScore)

+ 8 - 0
livebroadcast/src/main/java/com/yingyang/livebroadcast/net/LivebroadcastApiService.kt

@@ -1,10 +1,12 @@
 package com.yingyang.livebroadcast.net
 
 import com.yingyang.livebroadcast.entity.LiveBroadcastListBean
+import com.yingyangfly.baselib.bean.Record
 import com.yingyangfly.baselib.net.BaseResp
 import okhttp3.RequestBody
 import retrofit2.http.Body
 import retrofit2.http.POST
+import retrofit2.http.Query
 
 interface LivebroadcastApiService {
 
@@ -31,4 +33,10 @@ interface LivebroadcastApiService {
      */
     @POST("live/yesorno")
     suspend fun liveYesorno(@Body requestBody: RequestBody): BaseResp<Unit>
+
+    /**
+     * 获取游戏详情
+     */
+    @POST("game/params/user/detail")
+    suspend fun getGameDetail(@Query("id") id: String): BaseResp<Record>
 }