保存最新每日watch状态
This commit is contained in:
parent
dc7ff87e33
commit
a063466f15
|
|
@ -4,6 +4,7 @@ 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.DailyStateWatchVideoBean
|
||||
|
||||
|
||||
|
|
@ -15,7 +16,7 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
|
|||
init {
|
||||
registerEvents( { eventData->
|
||||
val dataPair: Pair<String, Long> = eventData?.mData as Pair<String, Long>
|
||||
handleVideoWatched(dataPair)
|
||||
handleOneVideoWatched(dataPair)
|
||||
}, VididinEvents.Event_Finish_One_Video)
|
||||
}
|
||||
|
||||
|
|
@ -31,25 +32,41 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
|
|||
}
|
||||
|
||||
private fun notifyEvents() {
|
||||
// TODO check read need info
|
||||
NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Total, NotifyMan.NotifyData(11111L))
|
||||
NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Total, null)
|
||||
}
|
||||
|
||||
|
||||
private fun generateTodayTask() {
|
||||
mStateBean.clearDatas()
|
||||
mStateBean = DailyStateWatchVideoBean(DateUtil.getCurTimeMs())
|
||||
mStateBean.initSubTaskRewardList(mTaskConfig.reward_details)
|
||||
}
|
||||
|
||||
private fun isTodayStatusBean(stateBean: DailyStateWatchVideoBean): Boolean {
|
||||
return DateUtil.isToday(stateBean.todayStartMs)
|
||||
return DateUtil.isToday(stateBean.todayMs)
|
||||
}
|
||||
|
||||
|
||||
private fun handleVideoWatched(dataPair: Pair<String, Long>) {
|
||||
private fun handleOneVideoWatched(dataPair: Pair<String, Long>) {
|
||||
mStateBean.run {
|
||||
addWatchedVideoInfo(dataPair)
|
||||
notifyEvents()
|
||||
if (!isAllTaskFinish()) {
|
||||
if (addWatchedVideoInfo(dataPair)) {
|
||||
checkSubTaskFinishState()
|
||||
saveState2Sp()
|
||||
notifyEvents()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun checkSubTaskFinishState() {
|
||||
val todayWatchedCount = mStateBean.getTodayWatchedCount()
|
||||
|
||||
mStateBean.getSubTaskRewardState().forEachIndexed { index, subTaskState ->
|
||||
if (!subTaskState.isFinish && todayWatchedCount >= subTaskState.mTargetVideoCount) {
|
||||
AccountManager.addGold(subTaskState.mRewardNum)
|
||||
subTaskState.isFinish = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +1,21 @@
|
|||
package com.gamedog.vididin.manager.taskbeans
|
||||
|
||||
import com.gamedog.vididin.main.fragments.task.RewardDetail
|
||||
import java.io.Serializable
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
|
||||
data class DailyStateWatchVideoBean(
|
||||
var todayStartMs: Long = 0,
|
||||
var todayMs: Long = 0,
|
||||
): Serializable {
|
||||
|
||||
private val mWatchedMap = ConcurrentHashMap<String, Long>()
|
||||
|
||||
private val mSubTaskRewardState: MutableList<SubTaskBean> = mutableListOf()
|
||||
|
||||
|
||||
fun clearDatas() {
|
||||
mWatchedMap.clear()
|
||||
todayStartMs = 0
|
||||
todayMs = 0
|
||||
}
|
||||
|
||||
fun addWatchedVideoInfo(dataPair: Pair<String, Long>): Boolean {
|
||||
|
|
@ -30,8 +31,28 @@ data class DailyStateWatchVideoBean(
|
|||
return mWatchedMap.size
|
||||
}
|
||||
|
||||
fun getSubTaskRewardState(): List<SubTaskBean> {
|
||||
return mSubTaskRewardState
|
||||
}
|
||||
|
||||
fun isAllTaskFinish(): Boolean {
|
||||
return mSubTaskRewardState.all { it.isFinish }
|
||||
}
|
||||
|
||||
fun initSubTaskRewardList(subTasks: List<RewardDetail>) {
|
||||
mSubTaskRewardState.clear()
|
||||
|
||||
subTasks.forEach {
|
||||
mSubTaskRewardState.add(SubTaskBean(it.value, it.target_count, false))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
data class SubTaskBean(
|
||||
val mRewardNum: Int,
|
||||
val mTargetVideoCount: Int,
|
||||
var isFinish: Boolean = false,)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue