调整视频任务完成后 金币获取为主动获取
This commit is contained in:
parent
797d1c01a9
commit
ef8d084744
|
|
@ -220,7 +220,7 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
|
|||
val statusBean = TaskManager.instance().dailyWatchAdStatus().getStatusBean()
|
||||
val subTaskStatusList = statusBean.getSubTaskRewardState()
|
||||
mDailyWatchAdViewList.forEachIndexed { index, view ->
|
||||
view.updateProgress(statusBean.getTodayWatchedAdCount(), subTaskStatusList[index].state)
|
||||
view.updateProgress(statusBean.getTodayWatchedCount(), subTaskStatusList[index].state)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,17 @@
|
|||
package com.gamedog.vididin.manager.helpers
|
||||
|
||||
import com.ama.core.architecture.util.DateUtil
|
||||
import com.gamedog.vididin.core.login.login.AccountManager
|
||||
import com.gamedog.vididin.manager.taskbeans.BaseDailyTaskState
|
||||
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.TaskStateWatchVideo
|
||||
import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd
|
||||
|
||||
abstract class BaseDailyTaskHelper : BaseTaskHelper<TaskStateWatchAd>() {
|
||||
|
||||
|
||||
abstract class BaseDailyTaskHelper<T : BaseDailyTaskState> : BaseTaskHelper<T>() {
|
||||
|
||||
abstract protected fun notifyEvents()
|
||||
|
||||
|
|
@ -30,7 +35,7 @@ abstract class BaseDailyTaskHelper : BaseTaskHelper<TaskStateWatchAd>() {
|
|||
|
||||
|
||||
protected fun calculateNewState() {
|
||||
val todayWatchedCount = mStateBean.getTodayWatchedAdCount()
|
||||
val todayWatchedCount = mStateBean.getTodayWatchedCount()
|
||||
|
||||
mStateBean.getSubTaskRewardState().forEachIndexed { index, subTaskState ->
|
||||
val targetCount = subTaskState.mTargetAdCount
|
||||
|
|
@ -44,16 +49,17 @@ abstract class BaseDailyTaskHelper : BaseTaskHelper<TaskStateWatchAd>() {
|
|||
}
|
||||
}
|
||||
|
||||
protected fun generateTodayTask() {
|
||||
mStateBean = TaskStateWatchAd(DateUtil.getCurTimeMs()) as T
|
||||
mStateBean.initSubTaskRewardList(mTaskConfig.reward_details)
|
||||
}
|
||||
|
||||
protected fun handleOneAdWatched(newAdWatchedNum: Int) {
|
||||
mStateBean.run {
|
||||
if (!isAllTaskFinish()) {
|
||||
addWatchedCount(newAdWatchedNum)
|
||||
calculateNewState()
|
||||
saveState2Sp()
|
||||
notifyEvents()
|
||||
}
|
||||
}
|
||||
protected fun isTodayStatusBean(stateBean: TaskStateWatchAd): Boolean {
|
||||
return DateUtil.isToday(stateBean.todayMs)
|
||||
}
|
||||
|
||||
protected fun isTodayStatusBean(stateBean: TaskStateWatchVideo): Boolean {
|
||||
return DateUtil.isToday(stateBean.todayMs)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -3,6 +3,7 @@ package com.gamedog.vididin.manager.helpers
|
|||
import com.ama.core.architecture.util.SpUtil
|
||||
import com.ama.core.architecture.util.eventbus.NotifyMan
|
||||
import com.gamedog.vididin.main.fragments.task.Task
|
||||
import com.gamedog.vididin.manager.taskbeans.BaseTaskState
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,12 @@
|
|||
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.manager.taskbeans.TaskStateWatchAd
|
||||
|
||||
|
||||
class DailyWatchAdTaskHelper : BaseDailyTaskHelper() {
|
||||
class DailyWatchAdTaskHelper : BaseDailyTaskHelper<TaskStateWatchAd>() {
|
||||
|
||||
override val mSpKey = SpUtil.KEY_DAILY_WATCH_AD_FOR_GOLD
|
||||
|
||||
|
|
@ -34,15 +33,15 @@ class DailyWatchAdTaskHelper : BaseDailyTaskHelper() {
|
|||
NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_AD_NUM_CHANGED, null)
|
||||
}
|
||||
|
||||
|
||||
private fun generateTodayTask() {
|
||||
mStateBean = TaskStateWatchAd(DateUtil.getCurTimeMs())
|
||||
mStateBean.initSubTaskRewardList(mTaskConfig.reward_details)
|
||||
private fun handleOneAdWatched(newAdWatchedNum: Int) {
|
||||
mStateBean.run {
|
||||
if (!isAllTaskFinish()) {
|
||||
addWatchedCount(newAdWatchedNum)
|
||||
calculateNewState()
|
||||
saveState2Sp()
|
||||
notifyEvents()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun isTodayStatusBean(stateBean: TaskStateWatchAd): Boolean {
|
||||
return DateUtil.isToday(stateBean.todayMs)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,17 +1,13 @@
|
|||
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.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.DailyStateWatchVideoBean
|
||||
import com.gamedog.vididin.manager.taskbeans.TaskStateWatchVideo
|
||||
|
||||
|
||||
class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
|
||||
class DailyWatchVideoTaskHelper : BaseDailyTaskHelper<TaskStateWatchVideo>() {
|
||||
|
||||
override val mSpKey = SpUtil.KEY_DAILY_WATCH_VIDEO
|
||||
|
||||
|
|
@ -24,7 +20,7 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
|
|||
}
|
||||
|
||||
override fun loadTaskFromSp() {
|
||||
val spStateBean = SpUtil.instance().getObject<DailyStateWatchVideoBean>(mSpKey)
|
||||
val spStateBean = SpUtil.instance().getObject<TaskStateWatchVideo>(mSpKey)
|
||||
if (spStateBean == null || !isTodayStatusBean(spStateBean)) {
|
||||
generateTodayTask()
|
||||
saveState2Sp()
|
||||
|
|
@ -32,23 +28,22 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
|
|||
mStateBean = spStateBean
|
||||
notifyEvents()
|
||||
}
|
||||
|
||||
/*val spStateBean = SpUtil.instance().getObject<TaskStateWatchAd>(mSpKey)
|
||||
if (spStateBean == null || !isTodayStatusBean(spStateBean)) {
|
||||
generateTodayTask()
|
||||
saveState2Sp()
|
||||
} else {
|
||||
mStateBean = spStateBean
|
||||
notifyEvents()
|
||||
}*/
|
||||
}
|
||||
|
||||
private fun notifyEvents() {
|
||||
override fun notifyEvents() {
|
||||
NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_VIDEO_NUM_CHANGED, null)
|
||||
}
|
||||
|
||||
|
||||
private fun generateTodayTask() {
|
||||
mStateBean = DailyStateWatchVideoBean(DateUtil.getCurTimeMs())
|
||||
mStateBean.initSubTaskRewardList(mTaskConfig.reward_details)
|
||||
}
|
||||
|
||||
private fun isTodayStatusBean(stateBean: DailyStateWatchVideoBean): Boolean {
|
||||
return DateUtil.isToday(stateBean.todayMs)
|
||||
}
|
||||
|
||||
|
||||
private fun handleOneVideoWatched(dataPair: Pair<String, Long>) {
|
||||
mStateBean.run {
|
||||
if (!isAllTaskFinish()) {
|
||||
|
|
@ -62,38 +57,4 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
|
|||
}
|
||||
|
||||
|
||||
fun calculateNewState() {
|
||||
val todayWatchedCount = mStateBean.getTodayWatchedCount()
|
||||
|
||||
mStateBean.getSubTaskRewardState().forEachIndexed { index, subTaskState ->
|
||||
val targetCount = subTaskState.mTargetVideoCount
|
||||
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
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
package com.gamedog.vididin.manager.taskbeans
|
||||
|
||||
import com.gamedog.vididin.main.fragments.task.RewardDetail
|
||||
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlin.collections.forEach
|
||||
|
||||
|
||||
@Serializable
|
||||
abstract class BaseDailyTaskState : BaseTaskState() {
|
||||
protected val mSubTaskRewardState: MutableList<SubDailyTaskBean> = mutableListOf()
|
||||
|
||||
abstract fun getTodayWatchedCount(): Int
|
||||
abstract fun addWatchedCount(newWatchedNum: Int)
|
||||
abstract fun addWatchedVideoInfo(dataPair: Pair<String, Long>): Boolean
|
||||
|
||||
|
||||
fun getSubTaskRewardState(): List<SubDailyTaskBean> {
|
||||
return mSubTaskRewardState
|
||||
}
|
||||
|
||||
fun isAllTaskFinish(): Boolean {
|
||||
return mSubTaskRewardState.all { it.state >= STATE_CLAIMED }
|
||||
}
|
||||
|
||||
fun initSubTaskRewardList(subTasks: List<RewardDetail>) {
|
||||
mSubTaskRewardState.clear()
|
||||
|
||||
subTasks.forEach {
|
||||
mSubTaskRewardState.add(SubDailyTaskBean(it.value, it.target_count, STATE_ONGOING))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data class SubDailyTaskBean(
|
||||
val mRewardNum: Int,
|
||||
val mTargetAdCount: Int,
|
||||
var state: Int = STATE_ONGOING,)
|
||||
|
|
@ -1,53 +1,37 @@
|
|||
package com.gamedog.vididin.manager.taskbeans
|
||||
|
||||
|
||||
import com.gamedog.vididin.main.fragments.task.RewardDetail
|
||||
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING
|
||||
import kotlin.collections.forEach
|
||||
|
||||
|
||||
data class TaskStateWatchAd(
|
||||
var todayMs: Long = 0,
|
||||
): BaseTaskState() {
|
||||
|
||||
): BaseDailyTaskState() {
|
||||
private var mWatchAdCount: Int = 0
|
||||
private val mSubTaskRewardState: MutableList<SubAdTaskBean> = mutableListOf()
|
||||
|
||||
|
||||
fun addWatchedCount(newWatchedNum: Int) {
|
||||
|
||||
override fun addWatchedCount(newWatchedNum: Int) {
|
||||
if (newWatchedNum > 0) {
|
||||
mWatchAdCount += newWatchedNum
|
||||
}
|
||||
}
|
||||
|
||||
fun isAllTaskFinish(): Boolean {
|
||||
return mSubTaskRewardState.all { it.state >= STATE_CLAIMED }
|
||||
override fun addWatchedVideoInfo(dataPair: Pair<String, Long>): Boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
fun initSubTaskRewardList(subTasks: List<RewardDetail>) {
|
||||
mSubTaskRewardState.clear()
|
||||
|
||||
subTasks.forEach {
|
||||
mSubTaskRewardState.add(SubAdTaskBean(it.value, it.target_count, STATE_ONGOING))
|
||||
}
|
||||
}
|
||||
|
||||
fun getTodayWatchedAdCount(): Int {
|
||||
override fun getTodayWatchedCount(): Int {
|
||||
return mWatchAdCount
|
||||
}
|
||||
|
||||
fun getSubTaskRewardState(): List<SubAdTaskBean> {
|
||||
return mSubTaskRewardState
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
data class SubAdTaskBean(
|
||||
val mRewardNum: Int,
|
||||
val mTargetAdCount: Int,
|
||||
var state: Int = STATE_ONGOING,)
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,24 +1,16 @@
|
|||
package com.gamedog.vididin.manager.taskbeans
|
||||
|
||||
import com.gamedog.vididin.main.fragments.task.RewardDetail
|
||||
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING
|
||||
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
|
||||
data class DailyStateWatchVideoBean(
|
||||
data class TaskStateWatchVideo(
|
||||
var todayMs: Long = 0,
|
||||
): BaseTaskState() {
|
||||
): BaseDailyTaskState() {
|
||||
|
||||
private val mWatchedMap = ConcurrentHashMap<String, Long>()
|
||||
private val mSubTaskRewardState: MutableList<SubTaskBean> = mutableListOf()
|
||||
|
||||
|
||||
fun clearDatas() {
|
||||
mWatchedMap.clear()
|
||||
todayMs = 0
|
||||
}
|
||||
|
||||
fun addWatchedVideoInfo(dataPair: Pair<String, Long>): Boolean {
|
||||
override fun addWatchedVideoInfo(dataPair: Pair<String, Long>): Boolean {
|
||||
if (!mWatchedMap.contains(dataPair.first)) {
|
||||
mWatchedMap.put(dataPair.first, dataPair.second)
|
||||
return true
|
||||
|
|
@ -26,33 +18,14 @@ data class DailyStateWatchVideoBean(
|
|||
return false
|
||||
}
|
||||
|
||||
override fun addWatchedCount(newWatchedNum: Int) {
|
||||
|
||||
fun getTodayWatchedCount(): Int {
|
||||
}
|
||||
|
||||
override fun getTodayWatchedCount(): Int {
|
||||
return mWatchedMap.size
|
||||
}
|
||||
|
||||
fun getSubTaskRewardState(): List<SubTaskBean> {
|
||||
return mSubTaskRewardState
|
||||
}
|
||||
|
||||
fun isAllTaskFinish(): Boolean {
|
||||
return mSubTaskRewardState.all { it.state >= STATE_CLAIMED }
|
||||
}
|
||||
|
||||
fun initSubTaskRewardList(subTasks: List<RewardDetail>) {
|
||||
mSubTaskRewardState.clear()
|
||||
|
||||
subTasks.forEach {
|
||||
mSubTaskRewardState.add(SubTaskBean(it.value, it.target_count, STATE_ONGOING))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
data class SubTaskBean(
|
||||
val mRewardNum: Int,
|
||||
val mTargetVideoCount: Int,
|
||||
var state: Int = STATE_ONGOING,)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue