抽取 dailyTask 基类
This commit is contained in:
parent
554eaf31a3
commit
797d1c01a9
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue