光看广告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_HOME_WATCH_Time_TICK = 700
|
||||||
const val Event_Finish_One_Video = 701
|
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() {
|
private fun updateDailyWatchUI() {
|
||||||
val statusBean = TaskManager.instance().dailyWatchStatus().getStatus()
|
val statusBean = TaskManager.instance().dailyWatchVideoStatus().getStatus()
|
||||||
mDailyWatchVideoTaskViewList.forEachIndexed { index, view ->
|
mDailyWatchVideoTaskViewList.forEachIndexed { index, view ->
|
||||||
view.updateProgress(statusBean.getTodayWatchedCount())
|
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.main.fragments.task.TaskBean
|
||||||
import com.gamedog.vididin.manager.helpers.DailyBoxHelper
|
import com.gamedog.vididin.manager.helpers.DailyBoxHelper
|
||||||
import com.gamedog.vididin.manager.helpers.DailySignTaskHelper
|
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.DailyWatchVideoTaskHelper
|
||||||
import com.gamedog.vididin.manager.helpers.NewbieEnableNotifyHelper
|
import com.gamedog.vididin.manager.helpers.NewbieEnableNotifyHelper
|
||||||
import com.gamedog.vididin.manager.helpers.NewbieFirstWithdrawHelper
|
import com.gamedog.vididin.manager.helpers.NewbieFirstWithdrawHelper
|
||||||
|
|
@ -55,6 +56,7 @@ class TaskManager private constructor() {
|
||||||
private var mTaskConfig: TaskBean? = null
|
private var mTaskConfig: TaskBean? = null
|
||||||
private val mDailySignTaskHelper by lazy { DailySignTaskHelper() }
|
private val mDailySignTaskHelper by lazy { DailySignTaskHelper() }
|
||||||
private val mDailyWatchVideoTaskHelper by lazy { DailyWatchVideoTaskHelper() }
|
private val mDailyWatchVideoTaskHelper by lazy { DailyWatchVideoTaskHelper() }
|
||||||
|
private val mDailyWatchAdTaskHelper by lazy { DailyWatchAdTaskHelper() }
|
||||||
private val mDailyBoxHelper by lazy { DailyBoxHelper() }
|
private val mDailyBoxHelper by lazy { DailyBoxHelper() }
|
||||||
private val mNewbieJoinDiscordHelper by lazy { NewbieJoinDiscordHelper() }
|
private val mNewbieJoinDiscordHelper by lazy { NewbieJoinDiscordHelper() }
|
||||||
private val mNewbieEnableNotifyHelper by lazy { NewbieEnableNotifyHelper() }
|
private val mNewbieEnableNotifyHelper by lazy { NewbieEnableNotifyHelper() }
|
||||||
|
|
@ -119,6 +121,7 @@ class TaskManager private constructor() {
|
||||||
private suspend fun initHelpers() {
|
private suspend fun initHelpers() {
|
||||||
mDailySignTaskHelper.initDatas(getDailyCheckInTask()!!)
|
mDailySignTaskHelper.initDatas(getDailyCheckInTask()!!)
|
||||||
mDailyWatchVideoTaskHelper.initDatas(getDailyVideoTask()!!)
|
mDailyWatchVideoTaskHelper.initDatas(getDailyVideoTask()!!)
|
||||||
|
mDailyWatchAdTaskHelper.initDatas(getDailyAdTask()!!)
|
||||||
mDailyBoxHelper.initDatas(getDailyVideoTask()!!) // TODO - get right box task config
|
mDailyBoxHelper.initDatas(getDailyVideoTask()!!) // TODO - get right box task config
|
||||||
mNewbieJoinDiscordHelper.initDatas(getNewbieJoinDiscordTask()!!)
|
mNewbieJoinDiscordHelper.initDatas(getNewbieJoinDiscordTask()!!)
|
||||||
mNewbieEnableNotifyHelper.initDatas(getNewbieEnableNotifyTask()!!)
|
mNewbieEnableNotifyHelper.initDatas(getNewbieEnableNotifyTask()!!)
|
||||||
|
|
@ -131,10 +134,14 @@ class TaskManager private constructor() {
|
||||||
return mDailySignTaskHelper
|
return mDailySignTaskHelper
|
||||||
}
|
}
|
||||||
|
|
||||||
fun dailyWatchStatus(): DailyWatchVideoTaskHelper {
|
fun dailyWatchVideoStatus(): DailyWatchVideoTaskHelper {
|
||||||
return mDailyWatchVideoTaskHelper
|
return mDailyWatchVideoTaskHelper
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun dailyWatchAdStatus(): DailyWatchAdTaskHelper {
|
||||||
|
return mDailyWatchAdTaskHelper
|
||||||
|
}
|
||||||
|
|
||||||
fun dailyBoxStatus(): DailyBoxHelper {
|
fun dailyBoxStatus(): DailyBoxHelper {
|
||||||
return mDailyBoxHelper
|
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>() {
|
class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
|
||||||
|
|
||||||
override val mSpKey = SpUtil.KEY_DAILY_WATCH
|
override val mSpKey = SpUtil.KEY_DAILY_WATCH_VIDEO
|
||||||
|
|
||||||
|
|
||||||
init {
|
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
|
// Various tasks
|
||||||
const val KEY_DAILY_SIGN = "KEY_DAILY_SIGN"
|
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_DAILY_BOX = "KEY_DAILY_BOX"
|
||||||
|
|
||||||
const val KEY_NEWBIE_FIRST_WITHDRAW = "KEY_NEWBIE_FIRST_WITHDRAW"
|
const val KEY_NEWBIE_FIRST_WITHDRAW = "KEY_NEWBIE_FIRST_WITHDRAW"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue