抽取 dailyTask 基类

This commit is contained in:
renhaoting 2025-12-02 16:56:56 +08:00
parent 554eaf31a3
commit 797d1c01a9
2 changed files with 61 additions and 56 deletions

View File

@ -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<TaskStateWatchAd>() {
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()
}
}
}
}

View File

@ -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<TaskStateWatchAd>() {
class DailyWatchAdTaskHelper : BaseDailyTaskHelper() {
override val mSpKey = SpUtil.KEY_DAILY_WATCH_AD_FOR_GOLD
@ -34,7 +30,7 @@ class DailyWatchAdTaskHelper : BaseTaskHelper<TaskStateWatchAd>() {
}
}
private fun notifyEvents() {
override fun notifyEvents() {
NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_AD_NUM_CHANGED, null)
}
@ -48,55 +44,5 @@ class DailyWatchAdTaskHelper : BaseTaskHelper<TaskStateWatchAd>() {
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
}
}