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.VidiConst
|
||||||
import com.gamedog.vididin.VididinEvents
|
import com.gamedog.vididin.VididinEvents
|
||||||
import com.gamedog.vididin.core.login.login.AccountManager
|
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.Task
|
||||||
import com.gamedog.vididin.main.fragments.task.TaskBean
|
import com.gamedog.vididin.main.fragments.task.TaskBean
|
||||||
import com.gamedog.vididin.manager.helpers.BoxTaskHelper
|
import com.gamedog.vididin.manager.helpers.BoxTaskHelper
|
||||||
|
|
@ -149,8 +150,7 @@ class TaskManager private constructor() {
|
||||||
mNewbieJoinDiscordHelper.setConfigDatas(getNewbieJoinDiscordTask()!!)
|
mNewbieJoinDiscordHelper.setConfigDatas(getNewbieJoinDiscordTask()!!)
|
||||||
mNewbieEnableNotifyHelper.setConfigDatas(getNewbieEnableNotifyTask()!!)
|
mNewbieEnableNotifyHelper.setConfigDatas(getNewbieEnableNotifyTask()!!)
|
||||||
mNewbieFirstWithdrawHelper.setConfigDatas(getNewbieFirstWithdrawTask()!!)
|
mNewbieFirstWithdrawHelper.setConfigDatas(getNewbieFirstWithdrawTask()!!)
|
||||||
|
mBoxHelper.setConfigDatas(getBoxTaskConfig()!!)
|
||||||
mBoxHelper.setConfigDatas(getDailyVideoTask()!!)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onDateChanged() {
|
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.ama.core.architecture.util.DateUtil
|
||||||
import com.gamedog.vididin.core.login.login.AccountManager
|
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.BaseDailyTaskState
|
||||||
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_CLAIMED
|
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_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 notifyEvents()
|
||||||
abstract protected fun generateTodayTask()
|
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.SpUtil
|
||||||
import com.ama.core.architecture.util.eventbus.NotifyMan
|
import com.ama.core.architecture.util.eventbus.NotifyMan
|
||||||
import com.gamedog.vididin.main.fragments.task.Task
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
|
|
||||||
abstract class BaseTaskHelper<T: Any> {
|
abstract class BaseTaskHelper<T: Any, C: Any> {
|
||||||
abstract val mSpKey: String
|
abstract val mSpKey: String
|
||||||
protected lateinit var mStateBean: T
|
protected lateinit var mStateBean: T
|
||||||
protected lateinit var mTaskConfig: Task
|
protected lateinit var mTaskConfig: C
|
||||||
private var mEventCallback: NotifyMan.ICallback? = null
|
private var mEventCallback: NotifyMan.ICallback? = null
|
||||||
|
|
||||||
abstract fun loadTaskFromSp()
|
abstract fun loadTaskFromSp()
|
||||||
|
|
||||||
suspend fun setConfigDatas(taskConfig: Task) {
|
suspend fun setConfigDatas(taskConfig: C) {
|
||||||
mTaskConfig = taskConfig
|
mTaskConfig = taskConfig
|
||||||
|
|
||||||
return withContext(Dispatchers.IO) {
|
return withContext(Dispatchers.IO) {
|
||||||
|
|
|
||||||
|
|
@ -1,25 +1,48 @@
|
||||||
package com.gamedog.vididin.manager.helpers
|
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.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.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 val mSpKey = SpUtil.KEY_TASK_BOX
|
||||||
|
|
||||||
override fun loadTaskFromSp() {
|
override fun loadTaskFromSp() {
|
||||||
val taskStateBeanInSp = SpUtil.instance().getObject<TaskStateBoxRoot>(mSpKey)
|
val taskStateBeanInSp = SpUtil.instance().getObject<TaskStateBoxRoot>(mSpKey)
|
||||||
if (taskStateBeanInSp == null) {
|
if (taskStateBeanInSp == null || isBoxRootTaskExpired(taskStateBeanInSp)) {
|
||||||
//mStateBean = generateStateBeanFromConfig()
|
mStateBean = generateStateBeanFromConfig()
|
||||||
//saveState2Sp()
|
saveState2Sp()
|
||||||
} else {
|
} else {
|
||||||
mStateBean = taskStateBeanInSp
|
mStateBean = taskStateBeanInSp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun generateStateBeanFromConfig(): TaskStateBoxRoot? {
|
private fun generateStateBeanFromConfig(): TaskStateBoxRoot {
|
||||||
return null
|
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.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.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.TaskDailySignBean
|
||||||
import com.gamedog.vididin.manager.taskbeans.DailySignDayInfoBean
|
import com.gamedog.vididin.manager.taskbeans.DailySignDayInfoBean
|
||||||
|
|
||||||
|
|
||||||
class DailySignTaskHelper : BaseTaskHelper<TaskDailySignBean>() {
|
class DailySignTaskHelper : BaseTaskHelper<TaskDailySignBean, Task>() {
|
||||||
private var mCurDayIndexDailySign: Int = 0
|
private var mCurDayIndexDailySign: Int = 0
|
||||||
override val mSpKey = SpUtil.KEY_TASK_BEAN
|
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.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.main.fragments.task.Task
|
||||||
import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd
|
import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
package com.gamedog.vididin.manager.helpers
|
package com.gamedog.vididin.manager.helpers
|
||||||
|
|
||||||
import com.ama.core.architecture.util.SpUtil
|
import com.ama.core.architecture.util.SpUtil
|
||||||
|
import com.gamedog.vididin.main.fragments.task.Task
|
||||||
import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieEnableNotify
|
import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieEnableNotify
|
||||||
|
|
||||||
class NewbieEnableNotifyHelper: BaseTaskHelper<TaskStateNewBieEnableNotify>() {
|
class NewbieEnableNotifyHelper: BaseTaskHelper<TaskStateNewBieEnableNotify, Task>() {
|
||||||
|
|
||||||
override val mSpKey = SpUtil.KEY_NEWBIE_ENABLE_NOTIFY
|
override val mSpKey = SpUtil.KEY_NEWBIE_ENABLE_NOTIFY
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
package com.gamedog.vididin.manager.helpers
|
package com.gamedog.vididin.manager.helpers
|
||||||
|
|
||||||
import com.ama.core.architecture.util.SpUtil
|
import com.ama.core.architecture.util.SpUtil
|
||||||
|
import com.gamedog.vididin.main.fragments.task.Task
|
||||||
import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieFirstWithDraw
|
import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieFirstWithDraw
|
||||||
|
|
||||||
class NewbieFirstWithdrawHelper: BaseTaskHelper<TaskStateNewBieFirstWithDraw>() {
|
class NewbieFirstWithdrawHelper: BaseTaskHelper<TaskStateNewBieFirstWithDraw, Task>() {
|
||||||
|
|
||||||
override val mSpKey = SpUtil.KEY_NEWBIE_FIRST_WITHDRAW
|
override val mSpKey = SpUtil.KEY_NEWBIE_FIRST_WITHDRAW
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
package com.gamedog.vididin.manager.helpers
|
package com.gamedog.vididin.manager.helpers
|
||||||
|
|
||||||
import com.ama.core.architecture.util.SpUtil
|
import com.ama.core.architecture.util.SpUtil
|
||||||
|
import com.gamedog.vididin.main.fragments.task.Task
|
||||||
import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieJoinDiscord
|
import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieJoinDiscord
|
||||||
|
|
||||||
class NewbieJoinDiscordHelper: BaseTaskHelper<TaskStateNewBieJoinDiscord>() {
|
class NewbieJoinDiscordHelper: BaseTaskHelper<TaskStateNewBieJoinDiscord, Task>() {
|
||||||
|
|
||||||
override val mSpKey = SpUtil.KEY_NEWBIE_JOIN_DISCORD
|
override val mSpKey = SpUtil.KEY_NEWBIE_JOIN_DISCORD
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,10 @@ data class TaskStateBox(
|
||||||
val reward_value: Float,
|
val reward_value: Float,
|
||||||
val is_one_time: Boolean,
|
val is_one_time: Boolean,
|
||||||
val status: String,
|
val status: String,
|
||||||
val tasks: List<TaskStateBoxSub>
|
val tasks: List<TaskStateBoxSub>,
|
||||||
|
|
||||||
|
// new added
|
||||||
|
val hasClaimedReward: Boolean = false,
|
||||||
): Serializable
|
): Serializable
|
||||||
|
|
||||||
data class TaskStateBoxSub(
|
data class TaskStateBoxSub(
|
||||||
|
|
@ -26,6 +29,9 @@ data class TaskStateBoxSub(
|
||||||
val task_name: String,
|
val task_name: String,
|
||||||
val required_count: Int,
|
val required_count: Int,
|
||||||
val task_type: Int, // This added by self for decide which task should be execute, detail see: #TaskManager.companion
|
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
|
): Serializable
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,11 @@ class DateUtil private constructor() {
|
||||||
return currentTime - targetTimestamp > periodMillis
|
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()
|
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 {
|
fun getPassedDayNum(periodStartMs: Long, currentMs: Long): Int {
|
||||||
val utcTimeZone = TimeZone.getTimeZone("UTC") // 使用UTC时区
|
val utcTimeZone = TimeZone.getTimeZone("UTC") // 使用UTC时区
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue