From 797d1c01a9a5553ea85b5befa25c0f813ce20dc7 Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Tue, 2 Dec 2025 16:56:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=BD=E5=8F=96=20dailyTask=20=E5=9F=BA?= =?UTF-8?q?=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manager/helpers/BaseDailyTaskHelper.kt | 59 +++++++++++++++++++ .../manager/helpers/DailyWatchAdTaskHelper.kt | 58 +----------------- 2 files changed, 61 insertions(+), 56 deletions(-) create mode 100644 app/src/main/java/com/gamedog/vididin/manager/helpers/BaseDailyTaskHelper.kt diff --git a/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseDailyTaskHelper.kt b/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseDailyTaskHelper.kt new file mode 100644 index 0000000..e7daa1b --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/BaseDailyTaskHelper.kt @@ -0,0 +1,59 @@ +package com.gamedog.vididin.manager.helpers + +import com.gamedog.vididin.core.login.login.AccountManager +import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_CLAIMED +import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_FINISH +import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING +import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd + +abstract class BaseDailyTaskHelper : BaseTaskHelper() { + + abstract protected fun notifyEvents() + + fun claimSubTaskReward(subTaskIndex: Int) : Boolean { + if (subTaskIndex >= 0 && subTaskIndex < mStateBean.getSubTaskRewardState().size) { + try { + val subTask = mStateBean.getSubTaskRewardState()[subTaskIndex] + if (subTask.state == STATE_FINISH) { + AccountManager.addGold(subTask.mRewardNum) + subTask.state = STATE_CLAIMED + saveState2Sp() + notifyEvents() + return true + } + } catch (e: Exception) { + e.printStackTrace() + } + } + return false + } + + + protected fun calculateNewState() { + val todayWatchedCount = mStateBean.getTodayWatchedAdCount() + + mStateBean.getSubTaskRewardState().forEachIndexed { index, subTaskState -> + val targetCount = subTaskState.mTargetAdCount + when(subTaskState.state) { + STATE_ONGOING -> { + if (todayWatchedCount >= targetCount) { + subTaskState.state = STATE_FINISH + } + } + } + } + } + + + protected fun handleOneAdWatched(newAdWatchedNum: Int) { + mStateBean.run { + if (!isAllTaskFinish()) { + addWatchedCount(newAdWatchedNum) + calculateNewState() + saveState2Sp() + notifyEvents() + } + } + } + +} \ No newline at end of file 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 232b215..56ccef6 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,14 +4,10 @@ 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.BaseTaskState.Companion.STATE_CLAIMED -import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_FINISH -import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd -class DailyWatchAdTaskHelper : BaseTaskHelper() { +class DailyWatchAdTaskHelper : BaseDailyTaskHelper() { override val mSpKey = SpUtil.KEY_DAILY_WATCH_AD_FOR_GOLD @@ -34,7 +30,7 @@ class DailyWatchAdTaskHelper : BaseTaskHelper() { } } - private fun notifyEvents() { + override fun notifyEvents() { NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_AD_NUM_CHANGED, null) } @@ -48,55 +44,5 @@ class DailyWatchAdTaskHelper : BaseTaskHelper() { return DateUtil.isToday(stateBean.todayMs) } - fun getTodayWatchedCount(): Int { - return mStateBean.getTodayWatchedAdCount() - } - - private fun handleOneAdWatched(newAdWatchedNum: Int) { - mStateBean.run { - if (!isAllTaskFinish()) { - addWatchedCount(newAdWatchedNum) - calculateNewState() - saveState2Sp() - notifyEvents() - } - } - } - - - fun calculateNewState() { - val todayWatchedCount = mStateBean.getTodayWatchedAdCount() - - mStateBean.getSubTaskRewardState().forEachIndexed { index, subTaskState -> - val targetCount = subTaskState.mTargetAdCount - when(subTaskState.state) { - STATE_ONGOING -> { - if (todayWatchedCount >= targetCount) { - subTaskState.state = STATE_FINISH - } - } - } - } - } - - fun claimSubTaskReward(subTaskIndex: Int) : Boolean { - if (subTaskIndex >= 0 && subTaskIndex < mStateBean.getSubTaskRewardState().size) { - try { - val subTask = mStateBean.getSubTaskRewardState()[subTaskIndex] - if (subTask.state == STATE_FINISH) { - AccountManager.addGold(subTask.mRewardNum) - subTask.state = STATE_CLAIMED - saveState2Sp() - notifyEvents() - return true - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - return false - } - } \ No newline at end of file