阶梯广告 UI 及时更新

This commit is contained in:
renhaoting 2025-12-02 16:04:08 +08:00
parent 62db69b1d4
commit 16efb504e3
6 changed files with 58 additions and 23 deletions

View File

@ -11,8 +11,8 @@ object VididinEvents {
const val Event_Finish_One_Video = 701 const val Event_Finish_One_Video = 701
const val Event_Finish_One_Ad = 702 const val Event_Finish_One_Ad = 702
const val Event_Toady_Watched_Video_Total = 703 const val EVENT_DAILY_WATCHED_VIDEO_NUM_CHANGED = 703
const val Event_Toady_Watched_Ad_Total = 704 const val EVENT_DAILY_WATCHED_AD_NUM_CHANGED = 704

View File

@ -24,10 +24,13 @@ import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.core.login.login.AccountManager import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.main.WatchAdDialog import com.gamedog.vididin.main.WatchAdDialog
import com.gamedog.vididin.main.fragments.task.DailySignDialog import com.gamedog.vididin.main.fragments.task.DailySignDialog
import com.gamedog.vididin.main.fragments.task.DailySignSuccessDialog
import com.gamedog.vididin.main.fragments.task.TaskBean import com.gamedog.vididin.main.fragments.task.TaskBean
import com.gamedog.vididin.main.fragments.task.widget.DailyTaskItemView import com.gamedog.vididin.main.fragments.task.widget.DailyTaskItemView
import com.gamedog.vididin.main.interfaces.OnTabClickAgainListener import com.gamedog.vididin.main.interfaces.OnTabClickAgainListener
import com.gamedog.vididin.manager.TaskManager import com.gamedog.vididin.manager.TaskManager
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_FINISH
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING
import com.gamedog.vididin.router.Router import com.gamedog.vididin.router.Router
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -46,8 +49,8 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
override val mViewModel: ViewModel by viewModels() override val mViewModel: ViewModel by viewModels()
override var isBackgroundBright: Boolean = true override var isBackgroundBright: Boolean = true
private val mDailyWatchVideoTaskViewList = mutableListOf<DailyTaskItemView>() private val mDailyWatchVideoViewList = mutableListOf<DailyTaskItemView>()
private val mDailyWatchVideoAdViewList = mutableListOf<DailyTaskItemView>() private val mDailyWatchAdViewList = mutableListOf<DailyTaskItemView>()
override fun inflateViewBinding( override fun inflateViewBinding(
@ -151,9 +154,9 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
dailyWatchAdTask.reward_details.forEachIndexed { index, detail -> dailyWatchAdTask.reward_details.forEachIndexed { index, detail ->
val watchTaskItemView = DailyTaskItemView(requireActivity()) val watchTaskItemView = DailyTaskItemView(requireActivity())
watchTaskItemView.setActionFun { watchTaskItemView.setActionFun {
gotoDailyWatchAd() handleDailyAdButClicked(index)
} }
mDailyWatchVideoAdViewList.add(watchTaskItemView) mDailyWatchAdViewList.add(watchTaskItemView)
binding?.dailyTasksContainer!!.run { binding?.dailyTasksContainer!!.run {
watchTaskItemView.initUI(R.mipmap.icon_ad, R.string.daily_ad_task_title, watchTaskItemView.initUI(R.mipmap.icon_ad, R.string.daily_ad_task_title,
@ -177,9 +180,9 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
dailyWatchVideoTask.reward_details.forEachIndexed {index, detail -> dailyWatchVideoTask.reward_details.forEachIndexed {index, detail ->
val watchTaskItemView = DailyTaskItemView(requireActivity()) val watchTaskItemView = DailyTaskItemView(requireActivity())
watchTaskItemView.setActionFun { watchTaskItemView.setActionFun {
gotoWatchVideo() handleDailyVideoButClicked(index)
} }
mDailyWatchVideoTaskViewList.add(watchTaskItemView) mDailyWatchVideoViewList.add(watchTaskItemView)
binding?.dailyTasksContainer!!.run { binding?.dailyTasksContainer!!.run {
watchTaskItemView.initUI(R.mipmap.icon_video_task, R.string.daily_video_task_title, watchTaskItemView.initUI(R.mipmap.icon_video_task, R.string.daily_video_task_title,
@ -207,7 +210,7 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
private fun updateDailyWatchVideoUI() { private fun updateDailyWatchVideoUI() {
val statusBean = TaskManager.instance().dailyWatchVideoStatus().getStatusBean() val statusBean = TaskManager.instance().dailyWatchVideoStatus().getStatusBean()
val subTaskStatusList = statusBean.getSubTaskRewardState() val subTaskStatusList = statusBean.getSubTaskRewardState()
mDailyWatchVideoTaskViewList.forEachIndexed { index, view -> mDailyWatchVideoViewList.forEachIndexed { index, view ->
view.updateProgress(statusBean.getTodayWatchedCount(), subTaskStatusList[index].state) view.updateProgress(statusBean.getTodayWatchedCount(), subTaskStatusList[index].state)
} }
} }
@ -215,7 +218,7 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
private fun updateDailyWatchAdUI() { private fun updateDailyWatchAdUI() {
val statusBean = TaskManager.instance().dailyWatchAdStatus().getStatusBean() val statusBean = TaskManager.instance().dailyWatchAdStatus().getStatusBean()
val subTaskStatusList = statusBean.getSubTaskRewardState() val subTaskStatusList = statusBean.getSubTaskRewardState()
mDailyWatchVideoAdViewList.forEachIndexed { index, view -> mDailyWatchAdViewList.forEachIndexed { index, view ->
view.updateProgress(statusBean.getTodayWatchedAdCount(), subTaskStatusList[index].state) view.updateProgress(statusBean.getTodayWatchedAdCount(), subTaskStatusList[index].state)
} }
} }
@ -239,17 +242,17 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
updateUICashTotal() updateUICashTotal()
} }
VididinEvents.Event_Toady_Watched_Video_Total -> { VididinEvents.EVENT_DAILY_WATCHED_VIDEO_NUM_CHANGED -> {
updateDailyWatchVideoUI() updateDailyWatchVideoUI()
} }
VididinEvents.Event_Toady_Watched_Ad_Total -> { VididinEvents.EVENT_DAILY_WATCHED_AD_NUM_CHANGED -> {
updateDailyWatchAdUI() updateDailyWatchAdUI()
} }
} }
}, VididinEvents.Event_Sign_State_Changed, VididinEvents.Event_Account_Cash_Changed, }, VididinEvents.Event_Sign_State_Changed, VididinEvents.Event_Account_Cash_Changed,
VididinEvents.Event_Account_Gold_Changed, VididinEvents.Event_Toady_Watched_Video_Total, VididinEvents.Event_Account_Gold_Changed, VididinEvents.EVENT_DAILY_WATCHED_VIDEO_NUM_CHANGED,
VididinEvents.Event_Toady_Watched_Ad_Total) VididinEvents.EVENT_DAILY_WATCHED_AD_NUM_CHANGED)
} }
private fun updateDailySignButUI() { private fun updateDailySignButUI() {
@ -308,12 +311,38 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
}) })
} }
private fun gotoWatchVideo() { private fun handleDailyVideoButClicked(itemIndex: Int) {
Router.Mine.createMineFragment() val subTaskList = TaskManager.instance().dailyWatchVideoStatus().getStatusBean().getSubTaskRewardState()
if (itemIndex >= 0 && itemIndex < subTaskList.size) {
val subTaskState = subTaskList[itemIndex]
when (subTaskState.state) {
STATE_ONGOING -> {
Router.Home.createHomeFragment() // TODO - jump not create
}
STATE_FINISH -> {
if (TaskManager.instance().dailyWatchVideoStatus().claimSubTaskReward(itemIndex)) {
DailySignSuccessDialog(requireActivity()).initData(subTaskState.mRewardNum, false).show()
}
}
}
}
} }
private fun gotoDailyWatchAd() { private fun handleDailyAdButClicked(itemIndex: Int) {
WatchAdDialog(requireActivity(), VididinEvents.Event_AD_TASK_TYPE_Watch_Ad_Daily, null).show() val subTaskList = TaskManager.instance().dailyWatchAdStatus().getStatusBean().getSubTaskRewardState()
if (itemIndex >= 0 && itemIndex < subTaskList.size) {
val subTaskState = subTaskList[itemIndex]
when (subTaskState.state) {
STATE_ONGOING -> {
WatchAdDialog(requireActivity(), VididinEvents.Event_AD_TASK_TYPE_Watch_Ad_Daily, null).show()
}
STATE_FINISH -> {
if (TaskManager.instance().dailyWatchAdStatus().claimSubTaskReward(itemIndex)) {
DailySignSuccessDialog(requireActivity()).initData(subTaskState.mRewardNum, false).show()
}
}
}
}
} }

View File

@ -70,7 +70,7 @@ class DailyTaskItemView @JvmOverloads constructor(
STATE_CLAIMED -> { STATE_CLAIMED -> {
setText(R.string.Resgatado) setText(R.string.Resgatado)
setBackgroundResource(R.drawable.bg_sub_task_normal) setBackgroundResource(R.drawable.bg_sub_task_disable)
isClickable = false isClickable = false
alpha = 0.4F alpha = 0.4F
} }

View File

@ -3,7 +3,6 @@ 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.ama.core.architecture.util.eventbus.NotifyMan
import com.gamedog.vididin.R
import com.gamedog.vididin.VididinEvents import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.core.login.login.AccountManager import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_CLAIMED import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_CLAIMED
@ -36,7 +35,7 @@ class DailyWatchAdTaskHelper : BaseTaskHelper<TaskStateWatchAd>() {
} }
private fun notifyEvents() { private fun notifyEvents() {
NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Ad_Total, null) NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_AD_NUM_CHANGED, null)
} }
@ -86,6 +85,9 @@ class DailyWatchAdTaskHelper : BaseTaskHelper<TaskStateWatchAd>() {
val subTask = mStateBean.getSubTaskRewardState()[subTaskIndex] val subTask = mStateBean.getSubTaskRewardState()[subTaskIndex]
if (subTask.state == STATE_FINISH) { if (subTask.state == STATE_FINISH) {
AccountManager.addGold(subTask.mRewardNum) AccountManager.addGold(subTask.mRewardNum)
subTask.state = STATE_CLAIMED
saveState2Sp()
notifyEvents()
return true return true
} }
} catch (e: Exception) { } catch (e: Exception) {

View File

@ -5,6 +5,7 @@ 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.VididinEvents import com.gamedog.vididin.VididinEvents
import com.gamedog.vididin.core.login.login.AccountManager import com.gamedog.vididin.core.login.login.AccountManager
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_CLAIMED
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_FINISH import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_FINISH
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING
import com.gamedog.vididin.manager.taskbeans.DailyStateWatchVideoBean import com.gamedog.vididin.manager.taskbeans.DailyStateWatchVideoBean
@ -34,7 +35,7 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
} }
private fun notifyEvents() { private fun notifyEvents() {
NotifyMan.instance().sendEvent(VididinEvents.Event_Toady_Watched_Video_Total, null) NotifyMan.instance().sendEvent(VididinEvents.EVENT_DAILY_WATCHED_VIDEO_NUM_CHANGED, null)
} }
@ -82,6 +83,9 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
val subTask = mStateBean.getSubTaskRewardState()[subTaskIndex] val subTask = mStateBean.getSubTaskRewardState()[subTaskIndex]
if (subTask.state == STATE_FINISH) { if (subTask.state == STATE_FINISH) {
AccountManager.addGold(subTask.mRewardNum) AccountManager.addGold(subTask.mRewardNum)
subTask.state = STATE_CLAIMED
saveState2Sp()
notifyEvents()
return true return true
} }
} catch (e: Exception) { } catch (e: Exception) {

View File

@ -21,7 +21,7 @@ data class TaskStateWatchAd(
} }
fun isAllTaskFinish(): Boolean { fun isAllTaskFinish(): Boolean {
return mSubTaskRewardState.all { it.state > STATE_ONGOING } return mSubTaskRewardState.all { it.state >= STATE_CLAIMED }
} }
fun initSubTaskRewardList(subTasks: List<RewardDetail>) { fun initSubTaskRewardList(subTasks: List<RewardDetail>) {