From a063466f159952a508b49d01220bb643a56294a9 Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Mon, 1 Dec 2025 18:09:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=9C=80=E6=96=B0=E6=AF=8F?= =?UTF-8?q?=E6=97=A5watch=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../helpers/DailyWatchVideoTaskHelper.kt | 33 ++++++++++++++----- .../manager/taskbeans/TaskStateWatchVideo.kt | 27 +++++++++++++-- 2 files changed, 49 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchVideoTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchVideoTaskHelper.kt index 1603c07..cbc0cee 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchVideoTaskHelper.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchVideoTaskHelper.kt @@ -4,6 +4,7 @@ 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.core.login.login.AccountManager import com.gamedog.vididin.manager.taskbeans.DailyStateWatchVideoBean @@ -15,7 +16,7 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper() { init { registerEvents( { eventData-> val dataPair: Pair = eventData?.mData as Pair - handleVideoWatched(dataPair) + handleOneVideoWatched(dataPair) }, VididinEvents.Event_Finish_One_Video) } @@ -31,25 +32,41 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper() { } private fun notifyEvents() { - // TODO check read need info - NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Total, NotifyMan.NotifyData(11111L)) + NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Total, null) } private fun generateTodayTask() { - mStateBean.clearDatas() mStateBean = DailyStateWatchVideoBean(DateUtil.getCurTimeMs()) + mStateBean.initSubTaskRewardList(mTaskConfig.reward_details) } private fun isTodayStatusBean(stateBean: DailyStateWatchVideoBean): Boolean { - return DateUtil.isToday(stateBean.todayStartMs) + return DateUtil.isToday(stateBean.todayMs) } - private fun handleVideoWatched(dataPair: Pair) { + private fun handleOneVideoWatched(dataPair: Pair) { mStateBean.run { - addWatchedVideoInfo(dataPair) - notifyEvents() + if (!isAllTaskFinish()) { + if (addWatchedVideoInfo(dataPair)) { + checkSubTaskFinishState() + saveState2Sp() + notifyEvents() + } + } + } + } + + + fun checkSubTaskFinishState() { + val todayWatchedCount = mStateBean.getTodayWatchedCount() + + mStateBean.getSubTaskRewardState().forEachIndexed { index, subTaskState -> + if (!subTaskState.isFinish && todayWatchedCount >= subTaskState.mTargetVideoCount) { + AccountManager.addGold(subTaskState.mRewardNum) + subTaskState.isFinish = true + } } } diff --git a/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateWatchVideo.kt b/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateWatchVideo.kt index 235013b..d6441a9 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateWatchVideo.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateWatchVideo.kt @@ -1,20 +1,21 @@ package com.gamedog.vididin.manager.taskbeans +import com.gamedog.vididin.main.fragments.task.RewardDetail import java.io.Serializable import java.util.concurrent.ConcurrentHashMap data class DailyStateWatchVideoBean( - var todayStartMs: Long = 0, + var todayMs: Long = 0, ): Serializable { private val mWatchedMap = ConcurrentHashMap() - + private val mSubTaskRewardState: MutableList = mutableListOf() fun clearDatas() { mWatchedMap.clear() - todayStartMs = 0 + todayMs = 0 } fun addWatchedVideoInfo(dataPair: Pair): Boolean { @@ -30,8 +31,28 @@ data class DailyStateWatchVideoBean( return mWatchedMap.size } + fun getSubTaskRewardState(): List { + return mSubTaskRewardState + } + + fun isAllTaskFinish(): Boolean { + return mSubTaskRewardState.all { it.isFinish } + } + + fun initSubTaskRewardList(subTasks: List) { + mSubTaskRewardState.clear() + + subTasks.forEach { + mSubTaskRewardState.add(SubTaskBean(it.value, it.target_count, false)) + } + } + } +data class SubTaskBean( + val mRewardNum: Int, + val mTargetVideoCount: Int, + var isFinish: Boolean = false,)