保存最新每日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.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.DailyStateWatchVideoBean
|
import com.gamedog.vididin.manager.taskbeans.DailyStateWatchVideoBean
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -15,7 +16,7 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
|
||||||
init {
|
init {
|
||||||
registerEvents( { eventData->
|
registerEvents( { eventData->
|
||||||
val dataPair: Pair<String, Long> = eventData?.mData as Pair<String, Long>
|
val dataPair: Pair<String, Long> = eventData?.mData as Pair<String, Long>
|
||||||
handleVideoWatched(dataPair)
|
handleOneVideoWatched(dataPair)
|
||||||
}, VididinEvents.Event_Finish_One_Video)
|
}, VididinEvents.Event_Finish_One_Video)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -31,27 +32,43 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun notifyEvents() {
|
private fun notifyEvents() {
|
||||||
// TODO check read need info
|
NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Total, null)
|
||||||
NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Total, NotifyMan.NotifyData(11111L))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun generateTodayTask() {
|
private fun generateTodayTask() {
|
||||||
mStateBean.clearDatas()
|
|
||||||
mStateBean = DailyStateWatchVideoBean(DateUtil.getCurTimeMs())
|
mStateBean = DailyStateWatchVideoBean(DateUtil.getCurTimeMs())
|
||||||
|
mStateBean.initSubTaskRewardList(mTaskConfig.reward_details)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isTodayStatusBean(stateBean: DailyStateWatchVideoBean): Boolean {
|
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 {
|
mStateBean.run {
|
||||||
addWatchedVideoInfo(dataPair)
|
if (!isAllTaskFinish()) {
|
||||||
|
if (addWatchedVideoInfo(dataPair)) {
|
||||||
|
checkSubTaskFinishState()
|
||||||
|
saveState2Sp()
|
||||||
notifyEvents()
|
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
|
package com.gamedog.vididin.manager.taskbeans
|
||||||
|
|
||||||
|
import com.gamedog.vididin.main.fragments.task.RewardDetail
|
||||||
import java.io.Serializable
|
import java.io.Serializable
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
|
|
||||||
|
|
||||||
data class DailyStateWatchVideoBean(
|
data class DailyStateWatchVideoBean(
|
||||||
var todayStartMs: Long = 0,
|
var todayMs: Long = 0,
|
||||||
): Serializable {
|
): Serializable {
|
||||||
|
|
||||||
private val mWatchedMap = ConcurrentHashMap<String, Long>()
|
private val mWatchedMap = ConcurrentHashMap<String, Long>()
|
||||||
|
private val mSubTaskRewardState: MutableList<SubTaskBean> = mutableListOf()
|
||||||
|
|
||||||
|
|
||||||
fun clearDatas() {
|
fun clearDatas() {
|
||||||
mWatchedMap.clear()
|
mWatchedMap.clear()
|
||||||
todayStartMs = 0
|
todayMs = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addWatchedVideoInfo(dataPair: Pair<String, Long>): Boolean {
|
fun addWatchedVideoInfo(dataPair: Pair<String, Long>): Boolean {
|
||||||
|
|
@ -30,8 +31,28 @@ data class DailyStateWatchVideoBean(
|
||||||
return mWatchedMap.size
|
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