每日观看 优化
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_HOME_WATCH_Time_TICK = 700
|
||||||
const val Event_Finish_One_Video = 701
|
const val Event_Finish_One_Video = 701
|
||||||
|
|
||||||
|
const val Event_Toady_Watched_Total = 702
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,11 +1,14 @@
|
||||||
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.eventbus.NotifyMan
|
import com.ama.core.architecture.util.eventbus.NotifyMan
|
||||||
import com.gamedog.vididin.main.fragments.task.Task
|
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 {
|
abstract class BaseTaskHelper<T: Any> {
|
||||||
|
abstract val mSpKey: String
|
||||||
|
protected lateinit var mStateBean: T
|
||||||
protected lateinit var mTaskConfig: Task
|
protected lateinit var mTaskConfig: Task
|
||||||
private var mEventCallback: NotifyMan.ICallback? = null
|
private var mEventCallback: NotifyMan.ICallback? = null
|
||||||
|
|
||||||
|
|
@ -33,6 +36,11 @@ abstract class BaseTaskHelper {
|
||||||
NotifyMan.instance().register(mEventCallback, *eventTypes)
|
NotifyMan.instance().register(mEventCallback, *eventTypes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected fun saveState2Sp() {
|
||||||
|
SpUtil.instance().putObject(mSpKey, mStateBean)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
fun release() {
|
fun release() {
|
||||||
NotifyMan.instance().unregister(mEventCallback)
|
NotifyMan.instance().unregister(mEventCallback)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
package com.gamedog.vididin.manager.helpers
|
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() {
|
override fun loadTaskFromSp() {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,35 +9,33 @@ import com.gamedog.vididin.manager.taskbeans.TaskDailySignBean
|
||||||
import com.gamedog.vididin.manager.taskbeans.DailySignDayInfoBean
|
import com.gamedog.vididin.manager.taskbeans.DailySignDayInfoBean
|
||||||
|
|
||||||
|
|
||||||
class DailySignTaskHelper : BaseTaskHelper() {
|
class DailySignTaskHelper : BaseTaskHelper<TaskDailySignBean>() {
|
||||||
private var mCurDayIndexDailySign: Int = 0
|
private var mCurDayIndexDailySign: Int = 0
|
||||||
private var mDailySignData: TaskDailySignBean = TaskDailySignBean()
|
override val mSpKey = SpUtil.KEY_TASK_BEAN
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
override fun loadTaskFromSp() {
|
override fun loadTaskFromSp() {
|
||||||
val taskStateBeanInSp = SpUtil.instance().getObject<TaskDailySignBean>(SpUtil.KEY_TASK_BEAN)
|
val taskStateBeanInSp = SpUtil.instance().getObject<TaskDailySignBean>(mSpKey)
|
||||||
if (taskStateBeanInSp == null) {
|
if (taskStateBeanInSp == null) {
|
||||||
SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mDailySignData)
|
saveState2Sp()
|
||||||
} else {
|
} else {
|
||||||
mDailySignData = taskStateBeanInSp
|
mStateBean = taskStateBeanInSp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getCurDayIndexOfDailyCheckIn() : Int {
|
fun getCurDayIndexOfDailyCheckIn() : Int {
|
||||||
var dayIndexOfPeriod = 0
|
var dayIndexOfPeriod = 0
|
||||||
|
|
||||||
val periodStartMs = mDailySignData.startDurationMs
|
val periodStartMs = mStateBean.startDurationMs
|
||||||
if (periodStartMs > 0) {
|
if (periodStartMs > 0) {
|
||||||
dayIndexOfPeriod = DateUtil.getPassedDayNum(periodStartMs, DateUtil.getCurTimeMs())
|
dayIndexOfPeriod = DateUtil.getPassedDayNum(periodStartMs, DateUtil.getCurTimeMs())
|
||||||
if (dayIndexOfPeriod > 6) {
|
if (dayIndexOfPeriod > 6) {
|
||||||
mDailySignData.startDurationMs = DateUtil.getCurTimeMs()
|
mStateBean?.startDurationMs = DateUtil.getCurTimeMs()
|
||||||
SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mDailySignData)
|
saveState2Sp()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
mDailySignData.startDurationMs = DateUtil.getCurTimeMs()
|
mStateBean?.startDurationMs = DateUtil.getCurTimeMs()
|
||||||
SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mDailySignData)
|
saveState2Sp()
|
||||||
}
|
}
|
||||||
|
|
||||||
mCurDayIndexDailySign = dayIndexOfPeriod
|
mCurDayIndexDailySign = dayIndexOfPeriod
|
||||||
|
|
@ -45,11 +43,11 @@ class DailySignTaskHelper : BaseTaskHelper() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getDailySignStateBean(dayIndex: Int): DailySignDayInfoBean {
|
fun getDailySignStateBean(dayIndex: Int): DailySignDayInfoBean {
|
||||||
return mDailySignData.signStateList[dayIndex]
|
return mStateBean.signStateList[dayIndex]
|
||||||
}
|
}
|
||||||
|
|
||||||
fun executeDailySign(dayIndex: Int, isDoubleReward: Boolean, isByAd: Boolean) : Boolean {
|
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)) {
|
if (!daySignState.hasSigned || (dayIndex == mCurDayIndexDailySign && !daySignState.hasWatchedAd)) {
|
||||||
val dayReward = getRewardNumOfDailySign(dayIndex)
|
val dayReward = getRewardNumOfDailySign(dayIndex)
|
||||||
|
|
@ -57,7 +55,7 @@ class DailySignTaskHelper : BaseTaskHelper() {
|
||||||
daySignState.hasRewardedNum += finalReward
|
daySignState.hasRewardedNum += finalReward
|
||||||
daySignState.hasSigned = true
|
daySignState.hasSigned = true
|
||||||
daySignState.hasWatchedAd = isByAd
|
daySignState.hasWatchedAd = isByAd
|
||||||
saveDailySignInfo()
|
saveState2Sp()
|
||||||
AccountManager.addGold(finalReward)
|
AccountManager.addGold(finalReward)
|
||||||
notifySignStateChanged(Pair(dayIndex, daySignState))
|
notifySignStateChanged(Pair(dayIndex, daySignState))
|
||||||
return true
|
return true
|
||||||
|
|
@ -69,12 +67,8 @@ class DailySignTaskHelper : BaseTaskHelper() {
|
||||||
NotifyMan.instance().sendEvent(VididinEvents.Event_Sign_State_Changed, NotifyMan.NotifyData(dataPair))
|
NotifyMan.instance().sendEvent(VididinEvents.Event_Sign_State_Changed, NotifyMan.NotifyData(dataPair))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun saveDailySignInfo() {
|
|
||||||
SpUtil.instance().putObject(SpUtil.KEY_DAILY_SIGN, mDailySignData)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun generateTestDailySignTestBean() {
|
fun generateTestDailySignTestBean() {
|
||||||
mDailySignData = TaskDailySignBean().apply {
|
mStateBean = TaskDailySignBean().apply {
|
||||||
startDurationMs = DateUtil.getCurTimeMs() - 4 * DateUtil.MS_NUM_ONE_DAY
|
startDurationMs = DateUtil.getCurTimeMs() - 4 * DateUtil.MS_NUM_ONE_DAY
|
||||||
signStateList.clear()
|
signStateList.clear()
|
||||||
signStateList.add(DailySignDayInfoBean(hasSigned = true, hasWatchedAd = true))
|
signStateList.add(DailySignDayInfoBean(hasSigned = true, hasWatchedAd = true))
|
||||||
|
|
@ -86,14 +80,14 @@ class DailySignTaskHelper : BaseTaskHelper() {
|
||||||
signStateList.add(DailySignDayInfoBean(hasSigned = false, hasWatchedAd = false))
|
signStateList.add(DailySignDayInfoBean(hasSigned = false, hasWatchedAd = false))
|
||||||
}
|
}
|
||||||
|
|
||||||
SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mDailySignData)
|
saveState2Sp()
|
||||||
AccountManager.saveBankAccount(null)
|
AccountManager.saveBankAccount(null)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getForgotSignDays(): Int {
|
fun getForgotSignDays(): Int {
|
||||||
var forgotSignDays = 0
|
var forgotSignDays = 0
|
||||||
val curDayIndex = getCurDayIndexOfDailyCheckIn()
|
val curDayIndex = getCurDayIndexOfDailyCheckIn()
|
||||||
mDailySignData.signStateList.forEachIndexed { index, item->
|
mStateBean.signStateList.forEachIndexed { index, item->
|
||||||
if (!item.hasSigned && index < curDayIndex) {
|
if (!item.hasSigned && index < curDayIndex) {
|
||||||
forgotSignDays++
|
forgotSignDays++
|
||||||
}
|
}
|
||||||
|
|
@ -103,7 +97,7 @@ class DailySignTaskHelper : BaseTaskHelper() {
|
||||||
|
|
||||||
fun getSignDaysTotal(): Int {
|
fun getSignDaysTotal(): Int {
|
||||||
var signDays = 0
|
var signDays = 0
|
||||||
mDailySignData.signStateList.forEachIndexed { index, item->
|
mStateBean.signStateList.forEachIndexed { index, item->
|
||||||
if (item.hasSigned) {
|
if (item.hasSigned) {
|
||||||
signDays++
|
signDays++
|
||||||
}
|
}
|
||||||
|
|
@ -113,7 +107,7 @@ class DailySignTaskHelper : BaseTaskHelper() {
|
||||||
|
|
||||||
fun getForgotSignFirstDayIndex(): Int {
|
fun getForgotSignFirstDayIndex(): Int {
|
||||||
val curDayIndex = getCurDayIndexOfDailyCheckIn()
|
val curDayIndex = getCurDayIndexOfDailyCheckIn()
|
||||||
mDailySignData.signStateList.forEachIndexed { index, item->
|
mStateBean.signStateList.forEachIndexed { index, item->
|
||||||
if (!item.hasSigned && index < curDayIndex) {
|
if (!item.hasSigned && index < curDayIndex) {
|
||||||
return index
|
return index
|
||||||
}
|
}
|
||||||
|
|
@ -123,7 +117,7 @@ class DailySignTaskHelper : BaseTaskHelper() {
|
||||||
|
|
||||||
|
|
||||||
fun getDayStateList(): List<DailySignDayInfoBean> {
|
fun getDayStateList(): List<DailySignDayInfoBean> {
|
||||||
return mDailySignData.signStateList
|
return mStateBean.signStateList
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getRewardNumOfDailySign(dayIndex: Int) : Int {
|
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.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.gamedog.vididin.VididinEvents
|
import com.gamedog.vididin.VididinEvents
|
||||||
import com.gamedog.vididin.manager.taskbeans.DailyStateWatchVideoBean
|
import com.gamedog.vididin.manager.taskbeans.DailyStateWatchVideoBean
|
||||||
|
|
||||||
|
|
||||||
|
class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
|
||||||
|
|
||||||
|
override val mSpKey = SpUtil.KEY_DAILY_WATCH
|
||||||
class DailyWatchVideoTaskHelper : BaseTaskHelper() {
|
|
||||||
|
|
||||||
private var mStateBean: DailyStateWatchVideoBean? = null
|
|
||||||
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
|
@ -21,27 +20,34 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper() {
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun loadTaskFromSp() {
|
override fun loadTaskFromSp() {
|
||||||
mStateBean = SpUtil.instance().getObject<DailyStateWatchVideoBean>(SpUtil.KEY_DAILY_WATCH)
|
val spStateBean = SpUtil.instance().getObject<DailyStateWatchVideoBean>(mSpKey)
|
||||||
|
if (spStateBean == null || !isCurBeanInToday(spStateBean)) {
|
||||||
if (mStateBean == null || !isCurBeanInToday()) {
|
|
||||||
generateTodayTask()
|
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() {
|
private fun generateTodayTask() {
|
||||||
mStateBean?.clearDatas()
|
mStateBean.clearDatas()
|
||||||
mStateBean = DailyStateWatchVideoBean(DateUtil.getCurTimeMs())
|
mStateBean = DailyStateWatchVideoBean(DateUtil.getCurTimeMs())
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isCurBeanInToday(): Boolean {
|
private fun isCurBeanInToday(stateBean: DailyStateWatchVideoBean): Boolean {
|
||||||
return mStateBean != null && DateUtil.isToday(mStateBean?.todayStartMs!!)
|
return DateUtil.isToday(stateBean.todayStartMs)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun handleVideoWatched(dataPair: Pair<String, Long>) {
|
private fun handleVideoWatched(dataPair: Pair<String, Long>) {
|
||||||
mStateBean?.run {
|
mStateBean.run {
|
||||||
addWatchedVideoInfo(dataPair)
|
addWatchedVideoInfo(dataPair)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
package com.gamedog.vididin.manager.helpers
|
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() {
|
override fun loadTaskFromSp() {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
package com.gamedog.vididin.manager.helpers
|
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() {
|
override fun loadTaskFromSp() {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
package com.gamedog.vididin.manager.helpers
|
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() {
|
override fun loadTaskFromSp() {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,12 @@ 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 = "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