From d7be7c30cb6604048114fa8fc05c67e75b8301ef Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Wed, 3 Dec 2025 18:55:26 +0800 Subject: [PATCH] =?UTF-8?q?4=E4=B8=AA=E7=B1=BB=E5=9E=8B=E7=9A=84=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E5=AE=8C=E6=88=90event=20=E6=B3=A8=E5=86=8C=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gamedog/vididin/VididinEvents.kt | 6 +- .../vididin/manager/helpers/BoxTaskHelper.kt | 66 +++++++++++++++++++ .../manager/helpers/DailyWatchAdTaskHelper.kt | 1 - .../manager/taskbeans/TaskStateBoxRoot.kt | 2 +- 4 files changed, 71 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/gamedog/vididin/VididinEvents.kt b/app/src/main/java/com/gamedog/vididin/VididinEvents.kt index 7b74c07..d156574 100644 --- a/app/src/main/java/com/gamedog/vididin/VididinEvents.kt +++ b/app/src/main/java/com/gamedog/vididin/VididinEvents.kt @@ -10,9 +10,11 @@ object VididinEvents { const val Event_HOME_WATCH_Time_TICK = 700 const val Event_Finish_One_Video = 701 const val Event_Finish_One_Ad = 702 + const val Event_Finish_One_Sign = 703 + const val Event_Finish_One_Zerobuy = 704 - const val EVENT_DAILY_WATCHED_VIDEO_NUM_CHANGED = 703 - const val EVENT_DAILY_WATCHED_AD_NUM_CHANGED = 704 + const val EVENT_DAILY_WATCHED_VIDEO_NUM_CHANGED = 705 + const val EVENT_DAILY_WATCHED_AD_NUM_CHANGED = 706 diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/BoxTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/BoxTaskHelper.kt index 780a919..183c2ad 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/BoxTaskHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/BoxTaskHelper.kt @@ -3,7 +3,12 @@ package com.gamedog.vididin.manager.helpers import com.ama.core.architecture.util.DateUtil import com.ama.core.architecture.util.SpUtil import com.gamedog.vididin.R +import com.gamedog.vididin.VididinEvents import com.gamedog.vididin.main.fragments.task.BoxTaskRoot +import com.gamedog.vididin.manager.TaskManager.Companion.BOX_SUB_TASK_TYPE_ZERO_BUY +import com.gamedog.vididin.manager.TaskManager.Companion.BOX_SUB_TASK_TYPE_SIGN +import com.gamedog.vididin.manager.TaskManager.Companion.BOX_SUB_TASK_TYPE_AD +import com.gamedog.vididin.manager.TaskManager.Companion.BOX_SUB_TASK_TYPE_VIDEO import com.gamedog.vididin.manager.taskbeans.TaskStateBox import com.gamedog.vididin.manager.taskbeans.TaskStateBoxRoot import com.gamedog.vididin.manager.taskbeans.TaskStateBoxSub @@ -11,11 +16,36 @@ import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_FINIS import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_CLAIMED import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_EXPIRED +import kotlin.Pair class BoxTaskHelper: BaseTaskHelper() { override val mSpKey = SpUtil.KEY_TASK_BOX + init { + registerEvents( { eventData-> + when (eventData?.mEventType) { + VididinEvents.Event_Finish_One_Ad -> { + handleEvents(BOX_SUB_TASK_TYPE_AD) + } + + VididinEvents.Event_Finish_One_Video -> { + handleEvents(BOX_SUB_TASK_TYPE_VIDEO) + } + + VididinEvents.Event_Finish_One_Sign -> { + handleEvents(BOX_SUB_TASK_TYPE_SIGN) + } + + VididinEvents.Event_Finish_One_Zerobuy -> { + handleEvents(BOX_SUB_TASK_TYPE_ZERO_BUY) + } + } + + }, VididinEvents.Event_Finish_One_Ad, VididinEvents.Event_Finish_One_Video, + VididinEvents.Event_Finish_One_Sign, VididinEvents.Event_Finish_One_Zerobuy) + } + override fun loadTaskFromSp() { val taskStateBeanInSp = SpUtil.instance().getObject(mSpKey) if (taskStateBeanInSp == null || isBoxRootTaskExpired(taskStateBeanInSp)) { @@ -42,6 +72,23 @@ class BoxTaskHelper: BaseTaskHelper() { return TaskStateBoxRoot(DateUtil.getTodayStartTimeMs(), boxStateList) } + + @Synchronized + private fun handleEvents(taskType: Int) { + val currentBoxIndex = getCurrentBoxIndex() + if (!isBoxAllFinished(currentBoxIndex)) { + getCurrentBoxState()?.tasks?.forEachIndexed { index, subTask-> + if (taskType == subTask.task_type + && !isBoxSubTaskFinished(currentBoxIndex, index)) { + subTask.finishedNum++ + saveState2Sp() + // TODO - if need notify + } + } + } + } + + private fun isBoxRootTaskExpired(taskStateBoxRoot: TaskStateBoxRoot): Boolean { var totalDurationDays = 0 taskStateBoxRoot.tasks.forEach { @@ -85,6 +132,25 @@ class BoxTaskHelper: BaseTaskHelper() { return -1 } + fun getCurrentBoxState(): TaskStateBox? { + val currentBoxIndex = getCurrentBoxIndex() + + if (currentBoxIndex >= 0 && currentBoxIndex < mStateBean.tasks.size) { + return mStateBean.tasks[currentBoxIndex] + } + return null + } + + fun isBoxAllFinished(boxIndex: Int) : Boolean { + val stateEnum = getBoxStateEnum(boxIndex) + return stateEnum == STATE_FINISH || stateEnum == STATE_CLAIMED + } + + fun isBoxSubTaskFinished(boxIndex: Int, subTaskIndex: Int) : Boolean { + val subTaskState = mStateBean.tasks[boxIndex].tasks[subTaskIndex] + return subTaskState.finishedNum >= subTaskState.required_count + } + fun getBoxStateEnum(boxIndex: Int): Int { if (boxIndex >= 0 && boxIndex < mStateBean.tasks.size) { val curBoxState = mStateBean.tasks[boxIndex] diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchAdTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchAdTaskHelper.kt index 8cb1263..5ef9a91 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchAdTaskHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchAdTaskHelper.kt @@ -4,7 +4,6 @@ import com.ama.core.architecture.util.DateUtil import com.ama.core.architecture.util.SpUtil import com.ama.core.architecture.util.eventbus.NotifyMan import com.gamedog.vididin.VididinEvents -import com.gamedog.vididin.main.fragments.task.Task import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd diff --git a/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateBoxRoot.kt b/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateBoxRoot.kt index 0c8fc1e..58e80ff 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateBoxRoot.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateBoxRoot.kt @@ -31,7 +31,7 @@ data class TaskStateBoxSub( val task_type: Int, // This added by self for decide which task should be execute, detail see: #TaskManager.companion // new added - val finishedNum: Int = 0, + var finishedNum: Int = 0, ): Serializable