每日观看 优化
This commit is contained in:
parent
1542db851e
commit
63d636ff1a
|
|
@ -10,4 +10,8 @@ object VididinEvents {
|
|||
const val Event_HOME_WATCH_Time_TICK = 700
|
||||
const val Event_Finish_One_Video = 701
|
||||
|
||||
const val Event_Toady_Watched_Total = 702
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,11 +1,14 @@
|
|||
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 {
|
||||
abstract class BaseTaskHelper<T: Any> {
|
||||
abstract val mSpKey: String
|
||||
protected lateinit var mStateBean: T
|
||||
protected lateinit var mTaskConfig: Task
|
||||
private var mEventCallback: NotifyMan.ICallback? = null
|
||||
|
||||
|
|
@ -33,6 +36,11 @@ abstract class BaseTaskHelper {
|
|||
NotifyMan.instance().register(mEventCallback, *eventTypes)
|
||||
}
|
||||
|
||||
protected fun saveState2Sp() {
|
||||
SpUtil.instance().putObject(mSpKey, mStateBean)
|
||||
}
|
||||
|
||||
|
||||
fun release() {
|
||||
NotifyMan.instance().unregister(mEventCallback)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
package com.gamedog.vididin.manager.helpers
|
||||
|
||||
class DailyBoxHelper: BaseTaskHelper() {
|
||||
import com.ama.core.architecture.util.SpUtil
|
||||
import com.gamedog.vididin.manager.taskbeans.TaskStateBox
|
||||
|
||||
class DailyBoxHelper: BaseTaskHelper<TaskStateBox>() {
|
||||
|
||||
override val mSpKey = SpUtil.KEY_ACCOUNT
|
||||
|
||||
override fun loadTaskFromSp() {
|
||||
|
||||
|
|
|
|||
|
|
@ -9,35 +9,33 @@ import com.gamedog.vididin.manager.taskbeans.TaskDailySignBean
|
|||
import com.gamedog.vididin.manager.taskbeans.DailySignDayInfoBean
|
||||
|
||||
|
||||
class DailySignTaskHelper : BaseTaskHelper() {
|
||||
class DailySignTaskHelper : BaseTaskHelper<TaskDailySignBean>() {
|
||||
private var mCurDayIndexDailySign: Int = 0
|
||||
private var mDailySignData: TaskDailySignBean = TaskDailySignBean()
|
||||
|
||||
|
||||
override val mSpKey = SpUtil.KEY_TASK_BEAN
|
||||
|
||||
|
||||
override fun loadTaskFromSp() {
|
||||
val taskStateBeanInSp = SpUtil.instance().getObject<TaskDailySignBean>(SpUtil.KEY_TASK_BEAN)
|
||||
val taskStateBeanInSp = SpUtil.instance().getObject<TaskDailySignBean>(mSpKey)
|
||||
if (taskStateBeanInSp == null) {
|
||||
SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mDailySignData)
|
||||
saveState2Sp()
|
||||
} else {
|
||||
mDailySignData = taskStateBeanInSp
|
||||
mStateBean = taskStateBeanInSp
|
||||
}
|
||||
}
|
||||
|
||||
fun getCurDayIndexOfDailyCheckIn() : Int {
|
||||
var dayIndexOfPeriod = 0
|
||||
|
||||
val periodStartMs = mDailySignData.startDurationMs
|
||||
val periodStartMs = mStateBean.startDurationMs
|
||||
if (periodStartMs > 0) {
|
||||
dayIndexOfPeriod = DateUtil.getPassedDayNum(periodStartMs, DateUtil.getCurTimeMs())
|
||||
if (dayIndexOfPeriod > 6) {
|
||||
mDailySignData.startDurationMs = DateUtil.getCurTimeMs()
|
||||
SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mDailySignData)
|
||||
mStateBean?.startDurationMs = DateUtil.getCurTimeMs()
|
||||
saveState2Sp()
|
||||
}
|
||||
} else {
|
||||
mDailySignData.startDurationMs = DateUtil.getCurTimeMs()
|
||||
SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mDailySignData)
|
||||
mStateBean?.startDurationMs = DateUtil.getCurTimeMs()
|
||||
saveState2Sp()
|
||||
}
|
||||
|
||||
mCurDayIndexDailySign = dayIndexOfPeriod
|
||||
|
|
@ -45,11 +43,11 @@ class DailySignTaskHelper : BaseTaskHelper() {
|
|||
}
|
||||
|
||||
fun getDailySignStateBean(dayIndex: Int): DailySignDayInfoBean {
|
||||
return mDailySignData.signStateList[dayIndex]
|
||||
return mStateBean.signStateList[dayIndex]
|
||||
}
|
||||
|
||||
fun executeDailySign(dayIndex: Int, isDoubleReward: Boolean, isByAd: Boolean) : Boolean {
|
||||
val daySignState = mDailySignData.signStateList[dayIndex]
|
||||
val daySignState = mStateBean.signStateList[dayIndex]
|
||||
|
||||
if (!daySignState.hasSigned || (dayIndex == mCurDayIndexDailySign && !daySignState.hasWatchedAd)) {
|
||||
val dayReward = getRewardNumOfDailySign(dayIndex)
|
||||
|
|
@ -57,7 +55,7 @@ class DailySignTaskHelper : BaseTaskHelper() {
|
|||
daySignState.hasRewardedNum += finalReward
|
||||
daySignState.hasSigned = true
|
||||
daySignState.hasWatchedAd = isByAd
|
||||
saveDailySignInfo()
|
||||
saveState2Sp()
|
||||
AccountManager.addGold(finalReward)
|
||||
notifySignStateChanged(Pair(dayIndex, daySignState))
|
||||
return true
|
||||
|
|
@ -69,12 +67,8 @@ class DailySignTaskHelper : BaseTaskHelper() {
|
|||
NotifyMan.instance().sendEvent(VididinEvents.Event_Sign_State_Changed, NotifyMan.NotifyData(dataPair))
|
||||
}
|
||||
|
||||
private fun saveDailySignInfo() {
|
||||
SpUtil.instance().putObject(SpUtil.KEY_DAILY_SIGN, mDailySignData)
|
||||
}
|
||||
|
||||
fun generateTestDailySignTestBean() {
|
||||
mDailySignData = TaskDailySignBean().apply {
|
||||
mStateBean = TaskDailySignBean().apply {
|
||||
startDurationMs = DateUtil.getCurTimeMs() - 4 * DateUtil.MS_NUM_ONE_DAY
|
||||
signStateList.clear()
|
||||
signStateList.add(DailySignDayInfoBean(hasSigned = true, hasWatchedAd = true))
|
||||
|
|
@ -86,14 +80,14 @@ class DailySignTaskHelper : BaseTaskHelper() {
|
|||
signStateList.add(DailySignDayInfoBean(hasSigned = false, hasWatchedAd = false))
|
||||
}
|
||||
|
||||
SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mDailySignData)
|
||||
saveState2Sp()
|
||||
AccountManager.saveBankAccount(null)
|
||||
}
|
||||
|
||||
fun getForgotSignDays(): Int {
|
||||
var forgotSignDays = 0
|
||||
val curDayIndex = getCurDayIndexOfDailyCheckIn()
|
||||
mDailySignData.signStateList.forEachIndexed { index, item->
|
||||
mStateBean.signStateList.forEachIndexed { index, item->
|
||||
if (!item.hasSigned && index < curDayIndex) {
|
||||
forgotSignDays++
|
||||
}
|
||||
|
|
@ -103,7 +97,7 @@ class DailySignTaskHelper : BaseTaskHelper() {
|
|||
|
||||
fun getSignDaysTotal(): Int {
|
||||
var signDays = 0
|
||||
mDailySignData.signStateList.forEachIndexed { index, item->
|
||||
mStateBean.signStateList.forEachIndexed { index, item->
|
||||
if (item.hasSigned) {
|
||||
signDays++
|
||||
}
|
||||
|
|
@ -113,7 +107,7 @@ class DailySignTaskHelper : BaseTaskHelper() {
|
|||
|
||||
fun getForgotSignFirstDayIndex(): Int {
|
||||
val curDayIndex = getCurDayIndexOfDailyCheckIn()
|
||||
mDailySignData.signStateList.forEachIndexed { index, item->
|
||||
mStateBean.signStateList.forEachIndexed { index, item->
|
||||
if (!item.hasSigned && index < curDayIndex) {
|
||||
return index
|
||||
}
|
||||
|
|
@ -123,7 +117,7 @@ class DailySignTaskHelper : BaseTaskHelper() {
|
|||
|
||||
|
||||
fun getDayStateList(): List<DailySignDayInfoBean> {
|
||||
return mDailySignData.signStateList
|
||||
return mStateBean.signStateList
|
||||
}
|
||||
|
||||
fun getRewardNumOfDailySign(dayIndex: Int) : Int {
|
||||
|
|
|
|||
|
|
@ -2,15 +2,14 @@ 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.DailyStateWatchVideoBean
|
||||
|
||||
|
||||
class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
|
||||
|
||||
|
||||
class DailyWatchVideoTaskHelper : BaseTaskHelper() {
|
||||
|
||||
private var mStateBean: DailyStateWatchVideoBean? = null
|
||||
override val mSpKey = SpUtil.KEY_DAILY_WATCH
|
||||
|
||||
|
||||
init {
|
||||
|
|
@ -21,27 +20,34 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper() {
|
|||
}
|
||||
|
||||
override fun loadTaskFromSp() {
|
||||
mStateBean = SpUtil.instance().getObject<DailyStateWatchVideoBean>(SpUtil.KEY_DAILY_WATCH)
|
||||
|
||||
if (mStateBean == null || !isCurBeanInToday()) {
|
||||
val spStateBean = SpUtil.instance().getObject<DailyStateWatchVideoBean>(mSpKey)
|
||||
if (spStateBean == null || !isCurBeanInToday(spStateBean)) {
|
||||
generateTodayTask()
|
||||
SpUtil.instance().putObject(SpUtil.KEY_DAILY_WATCH, mStateBean)
|
||||
saveState2Sp()
|
||||
} else {
|
||||
mStateBean = spStateBean
|
||||
notifyEvents()
|
||||
}
|
||||
}
|
||||
|
||||
private fun notifyEvents() {
|
||||
// TODO check read need info
|
||||
NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Total, NotifyMan.NotifyData(11111L))
|
||||
}
|
||||
|
||||
|
||||
private fun generateTodayTask() {
|
||||
mStateBean?.clearDatas()
|
||||
mStateBean.clearDatas()
|
||||
mStateBean = DailyStateWatchVideoBean(DateUtil.getCurTimeMs())
|
||||
}
|
||||
|
||||
private fun isCurBeanInToday(): Boolean {
|
||||
return mStateBean != null && DateUtil.isToday(mStateBean?.todayStartMs!!)
|
||||
private fun isCurBeanInToday(stateBean: DailyStateWatchVideoBean): Boolean {
|
||||
return DateUtil.isToday(stateBean.todayStartMs)
|
||||
}
|
||||
|
||||
|
||||
private fun handleVideoWatched(dataPair: Pair<String, Long>) {
|
||||
mStateBean?.run {
|
||||
mStateBean.run {
|
||||
addWatchedVideoInfo(dataPair)
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
package com.gamedog.vididin.manager.helpers
|
||||
|
||||
class NewbieEnableNotifyHelper: BaseTaskHelper() {
|
||||
import com.ama.core.architecture.util.SpUtil
|
||||
import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieEnableNotify
|
||||
|
||||
class NewbieEnableNotifyHelper: BaseTaskHelper<TaskStateNewBieEnableNotify>() {
|
||||
|
||||
override val mSpKey = SpUtil.KEY_NEWBIE_ENABLE_NOTIFY
|
||||
|
||||
override fun loadTaskFromSp() {
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
package com.gamedog.vididin.manager.helpers
|
||||
|
||||
class NewbieFirstWithdrawHelper: BaseTaskHelper() {
|
||||
import com.ama.core.architecture.util.SpUtil
|
||||
import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieFirstWithDraw
|
||||
|
||||
class NewbieFirstWithdrawHelper: BaseTaskHelper<TaskStateNewBieFirstWithDraw>() {
|
||||
|
||||
override val mSpKey = SpUtil.KEY_NEWBIE_FIRST_WITHDRAW
|
||||
|
||||
override fun loadTaskFromSp() {
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
package com.gamedog.vididin.manager.helpers
|
||||
|
||||
class NewbieJoinDiscordHelper: BaseTaskHelper() {
|
||||
import com.ama.core.architecture.util.SpUtil
|
||||
import com.gamedog.vididin.manager.taskbeans.TaskStateNewBieJoinDiscord
|
||||
|
||||
class NewbieJoinDiscordHelper: BaseTaskHelper<TaskStateNewBieJoinDiscord>() {
|
||||
|
||||
override val mSpKey = SpUtil.KEY_NEWBIE_JOIN_DISCORD
|
||||
|
||||
override fun loadTaskFromSp() {
|
||||
|
||||
|
|
|
|||
|
|
@ -23,6 +23,12 @@ 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_BOX = "KEY_DAILY_BOX"
|
||||
|
||||
const val KEY_NEWBIE_FIRST_WITHDRAW = "KEY_NEWBIE_FIRST_WITHDRAW"
|
||||
const val KEY_NEWBIE_ENABLE_NOTIFY = "KEY_NEWBIE_ENABLE_NOTIFY"
|
||||
const val KEY_NEWBIE_JOIN_DISCORD = "KEY_NEWBIE_JOIN_DISCORD"
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue