【新手任务】已完成的任务会消失,剩余未完成的任务会往上填充,实际游戏中已经完成的任务未消失

This commit is contained in:
renhaoting 2026-01-15 19:25:40 +08:00
parent 4e28a5e436
commit 44380be0f1
4 changed files with 110 additions and 59 deletions

View File

@ -341,45 +341,61 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
private fun updateNewBieFirstWithdrawUI() { private fun updateNewBieFirstWithdrawUI() {
with(binding?.beginnerTaskWithdraw!!) { with(binding?.beginnerTaskWithdraw!!) {
val stateBean = TaskManager.instance().newbieFirstWithdrawStatus().getStatusBean() val stateBean = TaskManager.instance().newbieFirstWithdrawStatus().getStatusBean()
setActionFun {
if (stateBean.hasWithdrawed && !stateBean.hasClaimReward) {
TaskManager.instance().newbieFirstWithdrawStatus().claimReward()
} else {
gotoWithDraw()
}
}
setTaskStateInfo( if (stateBean.hasClaimReward) {
stateBean.rewardGoldNum.toString(), binding?.llRootFirstWithdrarw?.isVisible = false
if (stateBean.hasClaimReward) R.string.finished else R.string.go_and_do, } else {
ResUtil.getString(R.string.beginner_withdraw_desc), setActionFun {
stateBean.hasClaimReward if (stateBean.hasWithdrawed && !stateBean.hasClaimReward) {
) TaskManager.instance().newbieFirstWithdrawStatus().claimReward()
} else {
gotoWithDraw()
}
}
setTaskStateInfo(
stateBean.rewardGoldNum.toString(),
if (stateBean.hasClaimReward) R.string.resgatar else R.string.go_and_do,
ResUtil.getString(R.string.beginner_withdraw_desc),
stateBean.hasClaimReward
)
}
} }
} }
private fun updateNewBieDiscordUI() { private fun updateNewBieDiscordUI() {
with(binding?.beginnerTaskDiscord!!) { with(binding?.beginnerTaskDiscord!!) {
val stateBean = TaskManager.instance().newbieJoinDiscordStatus().getStatusBean() val stateBean = TaskManager.instance().newbieJoinDiscordStatus().getStatusBean()
val hasClaimDiscordGold = stateBean.hasClaimReward //val hasClaimDiscordGold = stateBean.hasClaimReward
setActionFun {
if (!hasClaimDiscordGold) {
gotoDiscord()
postDelayed({
if (TaskManager.instance().newbieJoinDiscordStatus().claimReward()) {
DailySignSuccessDialog(requireActivity()).initData(stateBean.rewardGoldNum, false).show()
updateNewBieDiscordUI()
}
}, 5000)
}
}
setTaskStateInfo( if (stateBean.hasClaimReward) {
stateBean.rewardGoldNum.toString(), binding?.llRootDiscord?.isVisible = false
if (stateBean.hasClaimReward) R.string.finished else R.string.go_and_do, } else {
String.format(ResUtil.getString(R.string.beginner_discord_desc), stateBean.rewardGoldNum), setActionFun {
stateBean.hasClaimReward if (!stateBean.hasClaimReward) {
) if (stateBean.hasJoined) {
if (TaskManager.instance().newbieJoinDiscordStatus().claimReward()) {
DailySignSuccessDialog(requireActivity()).initData(stateBean.rewardGoldNum, false).show()
updateNewBieDiscordUI()
}
} else {
gotoDiscord()
postDelayed({
if (TaskManager.instance().newbieJoinDiscordStatus().setHasJoinedDiscord()) {
updateNewBieDiscordUI()
}
}, 5000)
}
}
}
setTaskStateInfo(
stateBean.rewardGoldNum.toString(),
if (stateBean.hasClaimReward) R.string.Resgatado else (if (stateBean.hasJoined) R.string.resgatar else R.string.go_and_do),
String.format(ResUtil.getString(R.string.beginner_discord_desc), stateBean.rewardGoldNum),
stateBean.hasClaimReward
)
}
} }
} }
@ -399,10 +415,14 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
} }
val stateBean = TaskManager.instance().newbieEnableNotifyStatus().getStatusBean() val stateBean = TaskManager.instance().newbieEnableNotifyStatus().getStatusBean()
val isNotifyEnable = AndroidUtil.isNotificationEnabled() if (stateBean.hasClaimReward) {
val actionButRes = if (stateBean.hasClaimReward) R.string.Resgatado else (if (isNotifyEnable) R.string.resgatar else R.string.go_and_do) binding?.llRootNotify?.isVisible = false
setTaskStateInfo(stateBean.rewardGoldNum.toString(), actionButRes, } else {
String.format(ResUtil.getString(R.string.beginner_notify_desc), stateBean.rewardGoldNum), stateBean.hasClaimReward) val isNotifyEnable = AndroidUtil.isNotificationEnabled()
val actionButRes = if (stateBean.hasClaimReward) R.string.Resgatado else (if (isNotifyEnable) R.string.resgatar else R.string.go_and_do)
setTaskStateInfo(stateBean.rewardGoldNum.toString(), actionButRes,
String.format(ResUtil.getString(R.string.beginner_notify_desc), stateBean.rewardGoldNum), stateBean.hasClaimReward)
}
} }
} }

View File

@ -40,6 +40,16 @@ class NewbieJoinDiscordHelper: BaseTaskHelper<TaskStateNewBieJoinDiscord, Task>(
return false return false
} }
fun setHasJoinedDiscord() : Boolean {
if (!mStateBean.hasClaimReward) {
mStateBean.hasJoined = true
saveState2Sp()
notifyStateChangeEvent()
return true
}
return false
}
private fun notifyStateChangeEvent() { private fun notifyStateChangeEvent() {
NotifyMan.instance().sendEvent(VididinEvents.EVENT_NEWBIE_DISCORD_TASK_CHANGED, null) NotifyMan.instance().sendEvent(VididinEvents.EVENT_NEWBIE_DISCORD_TASK_CHANGED, null)
} }

View File

@ -8,6 +8,7 @@ import java.io.Serializable
data class TaskStateNewBieJoinDiscord( data class TaskStateNewBieJoinDiscord(
var rewardGoldNum: Int, var rewardGoldNum: Int,
var hasClaimReward: Boolean = false, var hasClaimReward: Boolean = false,
var hasJoined: Boolean = false
): Serializable { ): Serializable {
} }

View File

@ -501,41 +501,61 @@
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
android:orientation="vertical" android:orientation="vertical"
android:paddingHorizontal="15dp"> android:paddingHorizontal="15dp">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/gray_f2"
/>
<com.gamedog.vididin.main.fragments.task.widget.BeginnerTaskItemView <LinearLayout
android:id="@+id/beginner_task_withdraw" android:id="@+id/ll_root_first_withdrarw"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
/> android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/gray_f2"
/>
<View <com.gamedog.vididin.main.fragments.task.widget.BeginnerTaskItemView
android:layout_width="match_parent" android:id="@+id/beginner_task_withdraw"
android:layout_height="1dp" android:layout_width="match_parent"
android:background="@color/gray_f2" android:layout_height="wrap_content"
/> />
</LinearLayout>
<com.gamedog.vididin.main.fragments.task.widget.BeginnerTaskItemView <LinearLayout
android:id="@+id/beginner_task_discord" android:id="@+id/ll_root_discord"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
/> android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/gray_f2"
/>
<View <com.gamedog.vididin.main.fragments.task.widget.BeginnerTaskItemView
android:layout_width="match_parent" android:id="@+id/beginner_task_discord"
android:layout_height="1dp" android:layout_width="match_parent"
android:background="@color/gray_f2" android:layout_height="wrap_content"
/> />
</LinearLayout>
<com.gamedog.vididin.main.fragments.task.widget.BeginnerTaskItemView
android:id="@+id/beginner_task_enable_notify" <LinearLayout
android:id="@+id/ll_root_notify"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
/> android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/gray_f2"
/>
<com.gamedog.vididin.main.fragments.task.widget.BeginnerTaskItemView
android:id="@+id/beginner_task_enable_notify"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>