优化taskmanager 结构
This commit is contained in:
parent
e00bf1da76
commit
5fdf3a4ad9
|
|
@ -117,4 +117,9 @@ class MainActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabS
|
|||
override fun onTabIsDarkFont(isDarkFont: Boolean) {
|
||||
navigatorAdapter.setIsDarkFont(isDarkFont)
|
||||
}
|
||||
|
||||
fun switchTab(itemIndex: Int) {
|
||||
binding.viewPager2.setCurrentItem(itemIndex, false)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -188,7 +188,7 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
|
|||
}
|
||||
|
||||
private fun updateDailySignButUI() {
|
||||
val hasFinishAllSignWork = TaskManager.instance().isDailySignAllOperationDone()
|
||||
val hasFinishAllSignWork = TaskManager.instance().dailySignTask().isDailySignAllOperationDone()
|
||||
|
||||
binding?.ivGotoDailySign?.apply {
|
||||
setText(
|
||||
|
|
@ -244,7 +244,7 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
|
|||
}
|
||||
|
||||
private fun gotoWithVideo() {
|
||||
//TODO("Not yet implemented")
|
||||
Router.Mine.createMineFragment()
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ class DailySignDialog(context: Activity) : BindingDialog<DialogDailySignBinding>
|
|||
}
|
||||
|
||||
private fun clickedNormalSign() {
|
||||
if (TaskManager.instance().executeDailySign(mCurDayIndex, false, false)) {
|
||||
if (TaskManager.instance().dailySignTask().executeDailySign(mCurDayIndex, false, false)) {
|
||||
DailySignSuccessDialog(mActivity).initData(mConfigList?.get(mCurDayIndex)?.value, true).show()
|
||||
updateUI(mCurDayIndex)
|
||||
}
|
||||
|
|
@ -65,7 +65,7 @@ class DailySignDialog(context: Activity) : BindingDialog<DialogDailySignBinding>
|
|||
|
||||
private fun clickedAdSingleBut() {
|
||||
startAdTask("signalAd", {
|
||||
if (TaskManager.instance().executeDailySign(mCurDayIndex, false, true)) {
|
||||
if (TaskManager.instance().dailySignTask().executeDailySign(mCurDayIndex, false, true)) {
|
||||
DailySignSuccessDialog(mActivity).initData(mConfigList?.get(mCurDayIndex)?.value, false).show()
|
||||
updateUI(mCurDayIndex)
|
||||
}
|
||||
|
|
@ -74,7 +74,7 @@ class DailySignDialog(context: Activity) : BindingDialog<DialogDailySignBinding>
|
|||
|
||||
private fun clickedAdDoubleBut() {
|
||||
startAdTask("doubleAd", {
|
||||
if (TaskManager.instance().executeDailySign(mCurDayIndex, true, true)) {
|
||||
if (TaskManager.instance().dailySignTask().executeDailySign(mCurDayIndex, true, true)) {
|
||||
DailySignSuccessDialog(mActivity).initData((mConfigList?.get(mCurDayIndex)?.value)?.times(
|
||||
2
|
||||
), false).show()
|
||||
|
|
@ -84,10 +84,10 @@ class DailySignDialog(context: Activity) : BindingDialog<DialogDailySignBinding>
|
|||
}
|
||||
|
||||
private fun clickedComplementSign() {
|
||||
val firstForgotSignDayIndex = TaskManager.instance().getForgotSignFirstDayIndex()
|
||||
val firstForgotSignDayIndex = TaskManager.instance().dailySignTask().getForgotSignFirstDayIndex()
|
||||
if (firstForgotSignDayIndex > 0) {
|
||||
startAdTask("complementAd", {
|
||||
if (TaskManager.instance().executeDailySign(firstForgotSignDayIndex, false, false)){
|
||||
if (TaskManager.instance().dailySignTask().executeDailySign(firstForgotSignDayIndex, false, false)){
|
||||
DailySignSuccessDialog(mActivity).initData(mConfigList?.get(firstForgotSignDayIndex)?.value, false).show()
|
||||
updateUI(firstForgotSignDayIndex)
|
||||
}
|
||||
|
|
@ -121,14 +121,14 @@ class DailySignDialog(context: Activity) : BindingDialog<DialogDailySignBinding>
|
|||
mConfigList?.let {
|
||||
mSignItemViewList.forEachIndexed { index, itemView->
|
||||
itemView.setData(mConfigList!![index],
|
||||
TaskManager.instance().getDailySignStateBean(index))
|
||||
TaskManager.instance().dailySignTask().getDailySignStateBean(index))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun initSignState() {
|
||||
mCurDayIndex = TaskManager.instance().getCurDayIndexOfDailyCheckIn()
|
||||
mCurDayIndex = TaskManager.instance().dailySignTask().getCurDayIndexOfDailyCheckIn()
|
||||
mSignItemViewList[mCurDayIndex].setSelectState(true)
|
||||
updateUI(mCurDayIndex)
|
||||
}
|
||||
|
|
@ -141,7 +141,7 @@ class DailySignDialog(context: Activity) : BindingDialog<DialogDailySignBinding>
|
|||
|
||||
|
||||
mBinding.tvSignedTotal.text = buildString {
|
||||
append(TaskManager.instance().getSignDaysTotal())
|
||||
append(TaskManager.instance().dailySignTask().getSignDaysTotal())
|
||||
append("/7")
|
||||
}
|
||||
mSignItemViewList[signedDayIndex].updateUI()
|
||||
|
|
@ -163,7 +163,7 @@ class DailySignDialog(context: Activity) : BindingDialog<DialogDailySignBinding>
|
|||
mConfigList?.get(mCurDayIndex)?.value
|
||||
}
|
||||
} else {
|
||||
val forgotSignDays = TaskManager.instance().getForgotSignDays()
|
||||
val forgotSignDays = TaskManager.instance().dailySignTask().getForgotSignDays()
|
||||
if (forgotSignDays > 0) {
|
||||
mBinding.actionNormalTwoButs.isVisible = false
|
||||
mBinding.actionWatchAd.isVisible = false
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ class WeekStatusView @JvmOverloads constructor(
|
|||
override fun onDraw(canvas: Canvas) {
|
||||
super.onDraw(canvas)
|
||||
|
||||
val dayStateList = TaskManager.instance().getDayStateList()
|
||||
val dayStateList = TaskManager.instance().dailySignTask().getDayStateList()
|
||||
if (dayStateList.isEmpty()) return
|
||||
|
||||
val totalWidth = measuredWidth.toFloat()
|
||||
|
|
@ -140,7 +140,7 @@ class WeekStatusView @JvmOverloads constructor(
|
|||
|
||||
// reward text
|
||||
textPaint.textSize = rewardTextSize
|
||||
val rewardNum = TaskManager.instance().getRewardNumOfDailySign(index)
|
||||
val rewardNum = TaskManager.instance().dailySignTask().getRewardNumOfDailySign(index)
|
||||
textPaint.color = if (dayStatus.hasSigned) rewardTextSignedColor else rewardTextColor
|
||||
canvas.drawText(rewardNum.toString(), centerX, vertiMagin + dayTextSize + componentGap + 2*circleRadius + componentGap, textPaint)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,13 +44,19 @@ class TaskManager private constructor() {
|
|||
}
|
||||
|
||||
|
||||
private var mCurDayIndexDailySign: Int = 0
|
||||
|
||||
|
||||
|
||||
|
||||
private val mDailySignTaskHelper: DailySignTaskHelper by lazy {
|
||||
DailySignTaskHelper()
|
||||
}
|
||||
|
||||
private val mutex = Mutex()
|
||||
|
||||
@Volatile
|
||||
private var initialized = false
|
||||
private var mTaskConfig: TaskBean? = null
|
||||
private var mDailySignData: DailySignBean = DailySignBean()
|
||||
private val mGson = GsonBuilder().create()
|
||||
|
||||
|
||||
|
|
@ -60,7 +66,7 @@ class TaskManager private constructor() {
|
|||
|
||||
// TODO - remove test code
|
||||
if (true) {
|
||||
generateTestDailySignTestBean()
|
||||
mDailySignTaskHelper.generateTestDailySignTestBean()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -77,9 +83,8 @@ class TaskManager private constructor() {
|
|||
mutex.withLock {
|
||||
if (!initialized) {
|
||||
loadTaskConfigFromAsset()
|
||||
loadTaskStatesFromSp()
|
||||
|
||||
initCalculate()
|
||||
mDailySignTaskHelper.loadTaskStatesFromSp()
|
||||
initHelpers()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -94,24 +99,25 @@ class TaskManager private constructor() {
|
|||
}
|
||||
|
||||
|
||||
private suspend fun loadTaskStatesFromSp() {
|
||||
return withContext(Dispatchers.IO) {
|
||||
val taskStateBeanInSp = SpUtil.instance().getObject<DailySignBean>(SpUtil.KEY_TASK_BEAN)
|
||||
if (taskStateBeanInSp == null) {
|
||||
SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mDailySignData)
|
||||
} else {
|
||||
mDailySignData = taskStateBeanInSp
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private fun initHelpers() {
|
||||
mDailySignTaskHelper.setTaskConfig(getDailyCheckInTask()!!)
|
||||
}
|
||||
|
||||
private fun initCalculate() {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
fun dailySignTask(): DailySignTaskHelper {
|
||||
return mDailySignTaskHelper
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//------------------------- Get tasks -------------------------------
|
||||
// 日常任务
|
||||
fun getDailyCheckInTask(): Task? {
|
||||
|
|
@ -153,6 +159,38 @@ class TaskManager private constructor() {
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private class ConfigHelper {
|
||||
|
||||
}
|
||||
|
||||
|
||||
class DailySignTaskHelper() {
|
||||
private var mCurDayIndexDailySign: Int = 0
|
||||
private var mDailySignData: DailySignBean = DailySignBean()
|
||||
private lateinit var mTaskConfig: Task
|
||||
|
||||
fun setTaskConfig(taskConfig: Task) {
|
||||
mTaskConfig = taskConfig
|
||||
}
|
||||
|
||||
suspend fun loadTaskStatesFromSp() {
|
||||
return withContext(Dispatchers.IO) {
|
||||
val taskStateBeanInSp = SpUtil.instance().getObject<DailySignBean>(SpUtil.KEY_TASK_BEAN)
|
||||
if (taskStateBeanInSp == null) {
|
||||
SpUtil.instance().putObject(SpUtil.KEY_TASK_BEAN, mDailySignData)
|
||||
} else {
|
||||
mDailySignData = taskStateBeanInSp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun getCurDayIndexOfDailyCheckIn() : Int {
|
||||
var dayIndexOfPeriod = 0
|
||||
|
||||
|
|
@ -180,7 +218,7 @@ class TaskManager private constructor() {
|
|||
val daySignState = mDailySignData.signStateList[dayIndex]
|
||||
|
||||
if (!daySignState.hasSigned || (dayIndex == mCurDayIndexDailySign && !daySignState.hasWatchedAd)) {
|
||||
val dayReward = getDailyCheckInTask()?.reward_details?.get(dayIndex)?.value ?: 0
|
||||
val dayReward = getRewardNumOfDailySign(dayIndex)
|
||||
val finalReward = if (isDoubleReward) 2*dayReward else dayReward
|
||||
daySignState.hasRewardedNum += finalReward
|
||||
daySignState.hasSigned = true
|
||||
|
|
@ -201,7 +239,7 @@ class TaskManager private constructor() {
|
|||
SpUtil.instance().putObject(SpUtil.KEY_DAILY_SIGN, mDailySignData)
|
||||
}
|
||||
|
||||
private fun generateTestDailySignTestBean() {
|
||||
fun generateTestDailySignTestBean() {
|
||||
mDailySignData = DailySignBean().apply {
|
||||
startMs = DateUtil.getCurTimeMs() - 4 * DateUtil.MS_NUM_ONE_DAY
|
||||
signStateList.clear()
|
||||
|
|
@ -255,7 +293,7 @@ class TaskManager private constructor() {
|
|||
}
|
||||
|
||||
fun getRewardNumOfDailySign(dayIndex: Int) : Int {
|
||||
return getDailyCheckInTask()?.reward_details?.get(dayIndex)?.value ?: 0
|
||||
return mTaskConfig.reward_details[dayIndex].value
|
||||
}
|
||||
|
||||
fun isDailySignAllOperationDone(): Boolean {
|
||||
|
|
@ -263,7 +301,25 @@ class TaskManager private constructor() {
|
|||
return curDayState.hasSigned && curDayState.hasWatchedAd && getForgotSignFirstDayIndex() <= 0
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private class DailyWatchVideoTaskHelper {
|
||||
|
||||
}
|
||||
|
||||
private class DailyBoxTaskHelper {
|
||||
|
||||
}
|
||||
|
||||
private class NewBieWithdrawTaskHelper {
|
||||
|
||||
}
|
||||
|
||||
private class NewBieEnableNotifyTaskHelper {
|
||||
|
||||
}
|
||||
|
||||
private class NewBieJoinDiscordTaskHelper {
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue