From 5fdf3a4ad96d8c4502257ec01b659e1246c688a1 Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Mon, 1 Dec 2025 12:00:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96taskmanager=20=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gamedog/vididin/main/MainActivity.kt | 5 + .../vididin/main/fragments/TasksFragment.kt | 4 +- .../main/fragments/task/DailySignDialog.kt | 18 ++-- .../main/fragments/task/WeekStatusView.kt | 4 +- .../gamedog/vididin/manager/TaskManager.kt | 96 +++++++++++++++---- 5 files changed, 94 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/com/gamedog/vididin/main/MainActivity.kt b/app/src/main/java/com/gamedog/vididin/main/MainActivity.kt index 01b720d..901f127 100644 --- a/app/src/main/java/com/gamedog/vididin/main/MainActivity.kt +++ b/app/src/main/java/com/gamedog/vididin/main/MainActivity.kt @@ -117,4 +117,9 @@ class MainActivity : AppViewsActivity(), OnTabS override fun onTabIsDarkFont(isDarkFont: Boolean) { navigatorAdapter.setIsDarkFont(isDarkFont) } + + fun switchTab(itemIndex: Int) { + binding.viewPager2.setCurrentItem(itemIndex, false) + } + } \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt index bb62e17..770638a 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/TasksFragment.kt @@ -188,7 +188,7 @@ class TasksFragment : AppViewsFragment(), 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(), OnTab } private fun gotoWithVideo() { - //TODO("Not yet implemented") + Router.Mine.createMineFragment() } diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt index ba10e8b..5c0f696 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt @@ -57,7 +57,7 @@ class DailySignDialog(context: Activity) : BindingDialog } 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 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 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 } 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 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 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 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 diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/task/WeekStatusView.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/task/WeekStatusView.kt index 09aa8eb..26b5d98 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/task/WeekStatusView.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/task/WeekStatusView.kt @@ -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) } diff --git a/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt b/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt index 3b2bb89..5ff40cb 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt @@ -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(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(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 { + +}