From b07c1cf4ab3e0cc85092c7dbd9aee6053146c834 Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Tue, 2 Dec 2025 11:21:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=89=E7=9C=8B=E5=B9=BF=E5=91=8Atask?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gamedog/vididin/VididinEvents.kt | 3 +- .../vididin/main/fragments/TasksFragment.kt | 2 +- .../gamedog/vididin/manager/TaskManager.kt | 9 ++- .../manager/helpers/DailyWatchAdTaskHelper.kt | 72 +++++++++++++++++++ .../helpers/DailyWatchVideoTaskHelper.kt | 2 +- .../manager/taskbeans/TaskStateWatchAd.kt | 55 ++++++++++++++ .../com/ama/core/architecture/util/SpUtil.kt | 3 +- 7 files changed, 141 insertions(+), 5 deletions(-) create mode 100644 app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchAdTaskHelper.kt create mode 100644 app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateWatchAd.kt diff --git a/app/src/main/java/com/gamedog/vididin/VididinEvents.kt b/app/src/main/java/com/gamedog/vididin/VididinEvents.kt index 71edb4a..47b63d5 100644 --- a/app/src/main/java/com/gamedog/vididin/VididinEvents.kt +++ b/app/src/main/java/com/gamedog/vididin/VididinEvents.kt @@ -9,8 +9,9 @@ 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_Toady_Watched_Total = 702 + const val Event_Toady_Watched_Total = 703 diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt index 4a55df5..ce9a4bd 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt @@ -177,7 +177,7 @@ class TasksFragment : AppViewsFragment(), OnTab } private fun updateDailyWatchUI() { - val statusBean = TaskManager.instance().dailyWatchStatus().getStatus() + val statusBean = TaskManager.instance().dailyWatchVideoStatus().getStatus() mDailyWatchVideoTaskViewList.forEachIndexed { index, view -> view.updateProgress(statusBean.getTodayWatchedCount()) } diff --git a/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt b/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt index 0589673..5ff1dda 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt @@ -9,6 +9,7 @@ import com.gamedog.vididin.main.fragments.task.Task import com.gamedog.vididin.main.fragments.task.TaskBean import com.gamedog.vididin.manager.helpers.DailyBoxHelper import com.gamedog.vididin.manager.helpers.DailySignTaskHelper +import com.gamedog.vididin.manager.helpers.DailyWatchAdTaskHelper import com.gamedog.vididin.manager.helpers.DailyWatchVideoTaskHelper import com.gamedog.vididin.manager.helpers.NewbieEnableNotifyHelper import com.gamedog.vididin.manager.helpers.NewbieFirstWithdrawHelper @@ -55,6 +56,7 @@ class TaskManager private constructor() { private var mTaskConfig: TaskBean? = null private val mDailySignTaskHelper by lazy { DailySignTaskHelper() } private val mDailyWatchVideoTaskHelper by lazy { DailyWatchVideoTaskHelper() } + private val mDailyWatchAdTaskHelper by lazy { DailyWatchAdTaskHelper() } private val mDailyBoxHelper by lazy { DailyBoxHelper() } private val mNewbieJoinDiscordHelper by lazy { NewbieJoinDiscordHelper() } private val mNewbieEnableNotifyHelper by lazy { NewbieEnableNotifyHelper() } @@ -119,6 +121,7 @@ class TaskManager private constructor() { private suspend fun initHelpers() { mDailySignTaskHelper.initDatas(getDailyCheckInTask()!!) mDailyWatchVideoTaskHelper.initDatas(getDailyVideoTask()!!) + mDailyWatchAdTaskHelper.initDatas(getDailyAdTask()!!) mDailyBoxHelper.initDatas(getDailyVideoTask()!!) // TODO - get right box task config mNewbieJoinDiscordHelper.initDatas(getNewbieJoinDiscordTask()!!) mNewbieEnableNotifyHelper.initDatas(getNewbieEnableNotifyTask()!!) @@ -131,10 +134,14 @@ class TaskManager private constructor() { return mDailySignTaskHelper } - fun dailyWatchStatus(): DailyWatchVideoTaskHelper { + fun dailyWatchVideoStatus(): DailyWatchVideoTaskHelper { return mDailyWatchVideoTaskHelper } + fun dailyWatchAdStatus(): DailyWatchAdTaskHelper { + return mDailyWatchAdTaskHelper + } + fun dailyBoxStatus(): DailyBoxHelper { return mDailyBoxHelper } 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 new file mode 100644 index 0000000..fdec068 --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/manager/helpers/DailyWatchAdTaskHelper.kt @@ -0,0 +1,72 @@ +package com.gamedog.vididin.manager.helpers + +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.TaskStateWatchAd + + +class DailyWatchAdTaskHelper : BaseTaskHelper() { + + override val mSpKey = SpUtil.KEY_DAILY_WATCH_AD_FOR_GOLD + + + init { + registerEvents( { eventData-> + val watchedAdNum: Int = eventData?.mData as Int + handleOneAdWatched(watchedAdNum) + }, VididinEvents.Event_Finish_One_Ad) + } + + override fun loadTaskFromSp() { + val spStateBean = SpUtil.instance().getObject(mSpKey) + if (spStateBean == null || !isTodayStatusBean(spStateBean)) { + generateTodayTask() + saveState2Sp() + } else { + mStateBean = spStateBean + notifyEvents() + } + } + + private fun notifyEvents() { + NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Total, null) + } + + + private fun generateTodayTask() { + mStateBean = TaskStateWatchAd(DateUtil.getCurTimeMs()) + mStateBean.initSubTaskRewardList(mTaskConfig.reward_details) + } + + private fun isTodayStatusBean(stateBean: TaskStateWatchAd): Boolean { + return DateUtil.isToday(stateBean.todayMs) + } + + + private fun handleOneAdWatched(newAdWatchedNum: Int) { + mStateBean.run { + if (!isAllTaskFinish()) { + addWatchedCount(newAdWatchedNum) + checkSubTaskFinishState() + saveState2Sp() + notifyEvents() + } + } + } + + + fun checkSubTaskFinishState() { + val todayWatchedCount = mStateBean.getTodayWatchedAdCount() + + mStateBean.getSubTaskRewardState().forEachIndexed { index, subTaskState -> + if (!subTaskState.isFinish && todayWatchedCount >= subTaskState.mTargetAdCount) { + AccountManager.addGold(subTaskState.mRewardNum) + subTaskState.isFinish = true + } + } + } + +} \ No newline at end of file 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 cbc0cee..723ff7d 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 @@ -10,7 +10,7 @@ import com.gamedog.vididin.manager.taskbeans.DailyStateWatchVideoBean class DailyWatchVideoTaskHelper : BaseTaskHelper() { - override val mSpKey = SpUtil.KEY_DAILY_WATCH + override val mSpKey = SpUtil.KEY_DAILY_WATCH_VIDEO init { diff --git a/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateWatchAd.kt b/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateWatchAd.kt new file mode 100644 index 0000000..4f818c3 --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/manager/taskbeans/TaskStateWatchAd.kt @@ -0,0 +1,55 @@ +package com.gamedog.vididin.manager.taskbeans + + +import com.gamedog.vididin.main.fragments.task.RewardDetail +import java.io.Serializable +import kotlin.collections.forEach + + +data class TaskStateWatchAd( + var todayMs: Long = 0, +): Serializable { + + private var mWatchAdCount: Int = 0 + private val mSubTaskRewardState: MutableList = mutableListOf() + + + fun addWatchedCount(newWatchedNum: Int) { + if (newWatchedNum > 0) { + mWatchAdCount += newWatchedNum + } + } + + fun isAllTaskFinish(): Boolean { + return mSubTaskRewardState.all { it.isFinish } + } + + fun initSubTaskRewardList(subTasks: List) { + mSubTaskRewardState.clear() + + subTasks.forEach { + mSubTaskRewardState.add(SubAdTaskBean(it.value, it.target_count, false)) + } + } + + fun getTodayWatchedAdCount(): Int { + return mWatchAdCount + } + + fun getSubTaskRewardState(): List { + return mSubTaskRewardState + } + +} + + + +data class SubAdTaskBean( + val mRewardNum: Int, + val mTargetAdCount: Int, + var isFinish: Boolean = false,) + + + + + diff --git a/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt b/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt index 0a4ce98..9908a9e 100644 --- a/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt +++ b/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt @@ -22,7 +22,8 @@ class SpUtil private constructor(spFileName: String) { // Various tasks const val KEY_DAILY_SIGN = "KEY_DAILY_SIGN" - const val KEY_DAILY_WATCH = "KEY_DAILY_WATCH" + const val KEY_DAILY_WATCH_VIDEO = "KEY_DAILY_WATCH_VIDEO" + const val KEY_DAILY_WATCH_AD_FOR_GOLD = "KEY_DAILY_WATCH_AD_FOR_GOLD" const val KEY_DAILY_BOX = "KEY_DAILY_BOX" const val KEY_NEWBIE_FIRST_WITHDRAW = "KEY_NEWBIE_FIRST_WITHDRAW"