sp宝箱statusbean 读取及初始化
This commit is contained in:
parent
3c081c230a
commit
77d93b0211
|
|
@ -6,6 +6,7 @@ import com.ama.core.architecture.util.eventbus.NotifyMan
|
|||
import com.gamedog.vididin.VidiConst
|
||||
import com.gamedog.vididin.VididinEvents
|
||||
import com.gamedog.vididin.core.login.login.AccountManager
|
||||
import com.gamedog.vididin.main.fragments.task.BoxTaskRoot
|
||||
import com.gamedog.vididin.main.fragments.task.Task
|
||||
import com.gamedog.vididin.main.fragments.task.TaskBean
|
||||
import com.gamedog.vididin.manager.helpers.BoxTaskHelper
|
||||
|
|
@ -149,8 +150,7 @@ class TaskManager private constructor() {
|
|||
mNewbieJoinDiscordHelper.setConfigDatas(getNewbieJoinDiscordTask()!!)
|
||||
mNewbieEnableNotifyHelper.setConfigDatas(getNewbieEnableNotifyTask()!!)
|
||||
mNewbieFirstWithdrawHelper.setConfigDatas(getNewbieFirstWithdrawTask()!!)
|
||||
|
||||
mBoxHelper.setConfigDatas(getDailyVideoTask()!!)
|
||||
mBoxHelper.setConfigDatas(getBoxTaskConfig()!!)
|
||||
}
|
||||
|
||||
fun onDateChanged() {
|
||||
|
|
@ -228,7 +228,10 @@ class TaskManager private constructor() {
|
|||
}
|
||||
|
||||
|
||||
|
||||
// 宝箱任务
|
||||
fun getBoxTaskConfig(): BoxTaskRoot? {
|
||||
return mTaskConfig?.task_module_config?.box_task
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ 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.main.fragments.task.Task
|
||||
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
|
||||
|
|
@ -11,7 +12,7 @@ import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd
|
|||
|
||||
|
||||
|
||||
abstract class BaseDailyTaskHelper<T : BaseDailyTaskState> : BaseTaskHelper<T>() {
|
||||
abstract class BaseDailyTaskHelper<T : BaseDailyTaskState> : BaseTaskHelper<T, Task>() {
|
||||
|
||||
abstract protected fun notifyEvents()
|
||||
abstract protected fun generateTodayTask()
|
||||
|
|
|
|||
|
|
@ -2,19 +2,18 @@ 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 kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
abstract class BaseTaskHelper<T: Any> {
|
||||
abstract class BaseTaskHelper<T: Any, C: Any> {
|
||||
abstract val mSpKey: String
|
||||
protected lateinit var mStateBean: T
|
||||
protected lateinit var mTaskConfig: Task
|
||||
protected lateinit var mTaskConfig: C
|
||||
private var mEventCallback: NotifyMan.ICallback? = null
|
||||
|
||||
abstract fun loadTaskFromSp()
|
||||
|
||||
suspend fun setConfigDatas(taskConfig: Task) {
|
||||
suspend fun setConfigDatas(taskConfig: C) {
|
||||
mTaskConfig = taskConfig
|
||||
|
||||
return withContext(Dispatchers.IO) {
|
||||
|
|
|
|||
|
|
@ -1,25 +1,48 @@
|
|||
package com.gamedog.vididin.manager.helpers
|
||||
|
||||
import com.ama.core.architecture.util.DateUtil
|
||||
import com.ama.core.architecture.util.SpUtil
|
||||
import com.gamedog.vididin.main.fragments.task.BoxTaskRoot
|
||||
import com.gamedog.vididin.manager.taskbeans.TaskStateBox
|
||||
import com.gamedog.vididin.manager.taskbeans.TaskStateBoxRoot
|
||||
import com.gamedog.vididin.manager.taskbeans.TaskStateBoxSub
|
||||
|
||||
class BoxTaskHelper: BaseTaskHelper<TaskStateBoxRoot>() {
|
||||
class BoxTaskHelper: BaseTaskHelper<TaskStateBoxRoot, BoxTaskRoot>() {
|
||||
|
||||
override val mSpKey = SpUtil.KEY_TASK_BOX
|
||||
|
||||
override fun loadTaskFromSp() {
|
||||
val taskStateBeanInSp = SpUtil.instance().getObject<TaskStateBoxRoot>(mSpKey)
|
||||
if (taskStateBeanInSp == null) {
|
||||
//mStateBean = generateStateBeanFromConfig()
|
||||
//saveState2Sp()
|
||||
if (taskStateBeanInSp == null || isBoxRootTaskExpired(taskStateBeanInSp)) {
|
||||
mStateBean = generateStateBeanFromConfig()
|
||||
saveState2Sp()
|
||||
} else {
|
||||
mStateBean = taskStateBeanInSp
|
||||
}
|
||||
}
|
||||
|
||||
private fun generateStateBeanFromConfig(): TaskStateBoxRoot? {
|
||||
return null
|
||||
private fun generateStateBeanFromConfig(): TaskStateBoxRoot {
|
||||
val boxStateList = mutableListOf<TaskStateBox>()
|
||||
mTaskConfig.chests.forEachIndexed { index, task ->
|
||||
val boxSubTaskStateList = mutableListOf<TaskStateBoxSub>()
|
||||
task.tasks.forEachIndexed { index, task ->
|
||||
boxSubTaskStateList.add(TaskStateBoxSub(task.task_id,
|
||||
task.task_name, task.required_count, task.task_type))
|
||||
}
|
||||
|
||||
boxStateList.add(TaskStateBox(task.chest_id, task.chest_name, task.duration_days,
|
||||
task.reward_type, task.reward_value, task.is_one_time, task.status, boxSubTaskStateList))
|
||||
}
|
||||
|
||||
return TaskStateBoxRoot(DateUtil.getTodayStartTimeMs(), boxStateList)
|
||||
}
|
||||
|
||||
private fun isBoxRootTaskExpired(taskStateBoxRoot: TaskStateBoxRoot): Boolean {
|
||||
var totalDurationDays = 0
|
||||
taskStateBoxRoot.tasks.forEach {
|
||||
totalDurationDays += it.duration_days
|
||||
}
|
||||
return DateUtil.isPeriodExpired(taskStateBoxRoot.startMs, totalDurationDays)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -5,11 +5,12 @@ 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.main.fragments.task.Task
|
||||
import com.gamedog.vididin.manager.taskbeans.TaskDailySignBean
|
||||
import com.gamedog.vididin.manager.taskbeans.DailySignDayInfoBean
|
||||
|
||||
|
||||
class DailySignTaskHelper : BaseTaskHelper<TaskDailySignBean>() {
|
||||
class DailySignTaskHelper : BaseTaskHelper<TaskDailySignBean, Task>() {
|
||||
private var mCurDayIndexDailySign: Int = 0
|
||||
override val mSpKey = SpUtil.KEY_TASK_BEAN
|
||||
|
||||
|
|
|
|||
|
|
@ -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.main.fragments.task.Task
|
||||
import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
package com.gamedog.vididin.manager.helpers
|
||||
|
||||
import com.ama.core.architecture.util.SpUtil
|
||||
import com.gamedog.vididin.main.fragments.task.Task
|
||||
import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieEnableNotify
|
||||
|
||||
class NewbieEnableNotifyHelper: BaseTaskHelper<TaskStateNewBieEnableNotify>() {
|
||||
class NewbieEnableNotifyHelper: BaseTaskHelper<TaskStateNewBieEnableNotify, Task>() {
|
||||
|
||||
override val mSpKey = SpUtil.KEY_NEWBIE_ENABLE_NOTIFY
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
package com.gamedog.vididin.manager.helpers
|
||||
|
||||
import com.ama.core.architecture.util.SpUtil
|
||||
import com.gamedog.vididin.main.fragments.task.Task
|
||||
import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieFirstWithDraw
|
||||
|
||||
class NewbieFirstWithdrawHelper: BaseTaskHelper<TaskStateNewBieFirstWithDraw>() {
|
||||
class NewbieFirstWithdrawHelper: BaseTaskHelper<TaskStateNewBieFirstWithDraw, Task>() {
|
||||
|
||||
override val mSpKey = SpUtil.KEY_NEWBIE_FIRST_WITHDRAW
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
package com.gamedog.vididin.manager.helpers
|
||||
|
||||
import com.ama.core.architecture.util.SpUtil
|
||||
import com.gamedog.vididin.main.fragments.task.Task
|
||||
import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieJoinDiscord
|
||||
|
||||
class NewbieJoinDiscordHelper: BaseTaskHelper<TaskStateNewBieJoinDiscord>() {
|
||||
class NewbieJoinDiscordHelper: BaseTaskHelper<TaskStateNewBieJoinDiscord, Task>() {
|
||||
|
||||
override val mSpKey = SpUtil.KEY_NEWBIE_JOIN_DISCORD
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,10 @@ data class TaskStateBox(
|
|||
val reward_value: Float,
|
||||
val is_one_time: Boolean,
|
||||
val status: String,
|
||||
val tasks: List<TaskStateBoxSub>
|
||||
val tasks: List<TaskStateBoxSub>,
|
||||
|
||||
// new added
|
||||
val hasClaimedReward: Boolean = false,
|
||||
): Serializable
|
||||
|
||||
data class TaskStateBoxSub(
|
||||
|
|
@ -26,6 +29,9 @@ data class TaskStateBoxSub(
|
|||
val task_name: String,
|
||||
val required_count: Int,
|
||||
val task_type: Int, // This added by self for decide which task should be execute, detail see: #TaskManager.companion
|
||||
|
||||
// new added
|
||||
val finishedNum: Int = 0,
|
||||
): Serializable
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -67,6 +67,11 @@ class DateUtil private constructor() {
|
|||
return currentTime - targetTimestamp > periodMillis
|
||||
}
|
||||
|
||||
fun isPeriodExpired(startTimeMs: Long, dayNum: Int): Boolean {
|
||||
val periodMillis = dayNum * 24 * 3600000
|
||||
return startTimeMs + periodMillis < getCurTimeMs()
|
||||
}
|
||||
|
||||
/**
|
||||
* 从起始时间到现在已经过去多少天
|
||||
*/
|
||||
|
|
@ -174,6 +179,18 @@ class DateUtil private constructor() {
|
|||
return System.currentTimeMillis()
|
||||
}
|
||||
|
||||
fun getTodayStartTimeMs(): Long {
|
||||
val calendar = Calendar.getInstance().apply {
|
||||
set(Calendar.HOUR_OF_DAY, 0)
|
||||
set(Calendar.MINUTE, 0)
|
||||
set(Calendar.SECOND, 0)
|
||||
set(Calendar.MILLISECOND, 0)
|
||||
}
|
||||
return calendar.timeInMillis
|
||||
}
|
||||
|
||||
|
||||
|
||||
fun getPassedDayNum(periodStartMs: Long, currentMs: Long): Int {
|
||||
val utcTimeZone = TimeZone.getTimeZone("UTC") // 使用UTC时区
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue