光看广告task
This commit is contained in:
parent
0b0805d6bc
commit
b07c1cf4ab
|
|
@ -9,8 +9,9 @@ object VididinEvents {
|
|||
|
||||
const val Event_HOME_WATCH_Time_TICK = 700
|
||||
const val Event_Finish_One_Video = 701
|
||||
const val Event_Finish_One_Ad = 702
|
||||
|
||||
const val Event_Toady_Watched_Total = 702
|
||||
const val Event_Toady_Watched_Total = 703
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -177,7 +177,7 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
|
|||
}
|
||||
|
||||
private fun updateDailyWatchUI() {
|
||||
val statusBean = TaskManager.instance().dailyWatchStatus().getStatus()
|
||||
val statusBean = TaskManager.instance().dailyWatchVideoStatus().getStatus()
|
||||
mDailyWatchVideoTaskViewList.forEachIndexed { index, view ->
|
||||
view.updateProgress(statusBean.getTodayWatchedCount())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.gamedog.vididin.main.fragments.task.Task
|
|||
import com.gamedog.vididin.main.fragments.task.TaskBean
|
||||
import com.gamedog.vididin.manager.helpers.DailyBoxHelper
|
||||
import com.gamedog.vididin.manager.helpers.DailySignTaskHelper
|
||||
import com.gamedog.vididin.manager.helpers.DailyWatchAdTaskHelper
|
||||
import com.gamedog.vididin.manager.helpers.DailyWatchVideoTaskHelper
|
||||
import com.gamedog.vididin.manager.helpers.NewbieEnableNotifyHelper
|
||||
import com.gamedog.vididin.manager.helpers.NewbieFirstWithdrawHelper
|
||||
|
|
@ -55,6 +56,7 @@ class TaskManager private constructor() {
|
|||
private var mTaskConfig: TaskBean? = null
|
||||
private val mDailySignTaskHelper by lazy { DailySignTaskHelper() }
|
||||
private val mDailyWatchVideoTaskHelper by lazy { DailyWatchVideoTaskHelper() }
|
||||
private val mDailyWatchAdTaskHelper by lazy { DailyWatchAdTaskHelper() }
|
||||
private val mDailyBoxHelper by lazy { DailyBoxHelper() }
|
||||
private val mNewbieJoinDiscordHelper by lazy { NewbieJoinDiscordHelper() }
|
||||
private val mNewbieEnableNotifyHelper by lazy { NewbieEnableNotifyHelper() }
|
||||
|
|
@ -119,6 +121,7 @@ class TaskManager private constructor() {
|
|||
private suspend fun initHelpers() {
|
||||
mDailySignTaskHelper.initDatas(getDailyCheckInTask()!!)
|
||||
mDailyWatchVideoTaskHelper.initDatas(getDailyVideoTask()!!)
|
||||
mDailyWatchAdTaskHelper.initDatas(getDailyAdTask()!!)
|
||||
mDailyBoxHelper.initDatas(getDailyVideoTask()!!) // TODO - get right box task config
|
||||
mNewbieJoinDiscordHelper.initDatas(getNewbieJoinDiscordTask()!!)
|
||||
mNewbieEnableNotifyHelper.initDatas(getNewbieEnableNotifyTask()!!)
|
||||
|
|
@ -131,10 +134,14 @@ class TaskManager private constructor() {
|
|||
return mDailySignTaskHelper
|
||||
}
|
||||
|
||||
fun dailyWatchStatus(): DailyWatchVideoTaskHelper {
|
||||
fun dailyWatchVideoStatus(): DailyWatchVideoTaskHelper {
|
||||
return mDailyWatchVideoTaskHelper
|
||||
}
|
||||
|
||||
fun dailyWatchAdStatus(): DailyWatchAdTaskHelper {
|
||||
return mDailyWatchAdTaskHelper
|
||||
}
|
||||
|
||||
fun dailyBoxStatus(): DailyBoxHelper {
|
||||
return mDailyBoxHelper
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,72 @@
|
|||
package com.gamedog.vididin.manager.helpers
|
||||
|
||||
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.TaskStateWatchAd
|
||||
|
||||
|
||||
class DailyWatchAdTaskHelper : BaseTaskHelper<TaskStateWatchAd>() {
|
||||
|
||||
override val mSpKey = SpUtil.KEY_DAILY_WATCH_AD_FOR_GOLD
|
||||
|
||||
|
||||
init {
|
||||
registerEvents( { eventData->
|
||||
val watchedAdNum: Int = eventData?.mData as Int
|
||||
handleOneAdWatched(watchedAdNum)
|
||||
}, VididinEvents.Event_Finish_One_Ad)
|
||||
}
|
||||
|
||||
override fun loadTaskFromSp() {
|
||||
val spStateBean = SpUtil.instance().getObject<TaskStateWatchAd>(mSpKey)
|
||||
if (spStateBean == null || !isTodayStatusBean(spStateBean)) {
|
||||
generateTodayTask()
|
||||
saveState2Sp()
|
||||
} else {
|
||||
mStateBean = spStateBean
|
||||
notifyEvents()
|
||||
}
|
||||
}
|
||||
|
||||
private fun notifyEvents() {
|
||||
NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Total, null)
|
||||
}
|
||||
|
||||
|
||||
private fun generateTodayTask() {
|
||||
mStateBean = TaskStateWatchAd(DateUtil.getCurTimeMs())
|
||||
mStateBean.initSubTaskRewardList(mTaskConfig.reward_details)
|
||||
}
|
||||
|
||||
private fun isTodayStatusBean(stateBean: TaskStateWatchAd): Boolean {
|
||||
return DateUtil.isToday(stateBean.todayMs)
|
||||
}
|
||||
|
||||
|
||||
private fun handleOneAdWatched(newAdWatchedNum: Int) {
|
||||
mStateBean.run {
|
||||
if (!isAllTaskFinish()) {
|
||||
addWatchedCount(newAdWatchedNum)
|
||||
checkSubTaskFinishState()
|
||||
saveState2Sp()
|
||||
notifyEvents()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun checkSubTaskFinishState() {
|
||||
val todayWatchedCount = mStateBean.getTodayWatchedAdCount()
|
||||
|
||||
mStateBean.getSubTaskRewardState().forEachIndexed { index, subTaskState ->
|
||||
if (!subTaskState.isFinish && todayWatchedCount >= subTaskState.mTargetAdCount) {
|
||||
AccountManager.addGold(subTaskState.mRewardNum)
|
||||
subTaskState.isFinish = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -10,7 +10,7 @@ import com.gamedog.vididin.manager.taskbeans.DailyStateWatchVideoBean
|
|||
|
||||
class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
|
||||
|
||||
override val mSpKey = SpUtil.KEY_DAILY_WATCH
|
||||
override val mSpKey = SpUtil.KEY_DAILY_WATCH_VIDEO
|
||||
|
||||
|
||||
init {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,55 @@
|
|||
package com.gamedog.vididin.manager.taskbeans
|
||||
|
||||
|
||||
import com.gamedog.vididin.main.fragments.task.RewardDetail
|
||||
import java.io.Serializable
|
||||
import kotlin.collections.forEach
|
||||
|
||||
|
||||
data class TaskStateWatchAd(
|
||||
var todayMs: Long = 0,
|
||||
): Serializable {
|
||||
|
||||
private var mWatchAdCount: Int = 0
|
||||
private val mSubTaskRewardState: MutableList<SubAdTaskBean> = mutableListOf()
|
||||
|
||||
|
||||
fun addWatchedCount(newWatchedNum: Int) {
|
||||
if (newWatchedNum > 0) {
|
||||
mWatchAdCount += newWatchedNum
|
||||
}
|
||||
}
|
||||
|
||||
fun isAllTaskFinish(): Boolean {
|
||||
return mSubTaskRewardState.all { it.isFinish }
|
||||
}
|
||||
|
||||
fun initSubTaskRewardList(subTasks: List<RewardDetail>) {
|
||||
mSubTaskRewardState.clear()
|
||||
|
||||
subTasks.forEach {
|
||||
mSubTaskRewardState.add(SubAdTaskBean(it.value, it.target_count, false))
|
||||
}
|
||||
}
|
||||
|
||||
fun getTodayWatchedAdCount(): Int {
|
||||
return mWatchAdCount
|
||||
}
|
||||
|
||||
fun getSubTaskRewardState(): List<SubAdTaskBean> {
|
||||
return mSubTaskRewardState
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
data class SubAdTaskBean(
|
||||
val mRewardNum: Int,
|
||||
val mTargetAdCount: Int,
|
||||
var isFinish: Boolean = false,)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -22,7 +22,8 @@ class SpUtil private constructor(spFileName: String) {
|
|||
|
||||
// Various tasks
|
||||
const val KEY_DAILY_SIGN = "KEY_DAILY_SIGN"
|
||||
const val KEY_DAILY_WATCH = "KEY_DAILY_WATCH"
|
||||
const val KEY_DAILY_WATCH_VIDEO = "KEY_DAILY_WATCH_VIDEO"
|
||||
const val KEY_DAILY_WATCH_AD_FOR_GOLD = "KEY_DAILY_WATCH_AD_FOR_GOLD"
|
||||
const val KEY_DAILY_BOX = "KEY_DAILY_BOX"
|
||||
|
||||
const val KEY_NEWBIE_FIRST_WITHDRAW = "KEY_NEWBIE_FIRST_WITHDRAW"
|
||||
|
|
|
|||
Loading…
Reference in New Issue