抽取 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.SpUtil
|
||||||
import com.ama.core.architecture.util.eventbus.NotifyMan
|
import com.ama.core.architecture.util.eventbus.NotifyMan
|
||||||
import com.gamedog.vididin.VididinEvents
|
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
|
import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd
|
||||||
|
|
||||||
|
|
||||||
class DailyWatchAdTaskHelper : BaseTaskHelper<TaskStateWatchAd>() {
|
class DailyWatchAdTaskHelper : BaseDailyTaskHelper() {
|
||||||
|
|
||||||
override val mSpKey = SpUtil.KEY_DAILY_WATCH_AD_FOR_GOLD
|
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)
|
NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_AD_NUM_CHANGED, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -48,55 +44,5 @@ class DailyWatchAdTaskHelper : BaseTaskHelper<TaskStateWatchAd>() {
|
||||||
return DateUtil.isToday(stateBean.todayMs)
|
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