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