修改获取金币逻辑为 手动获取
This commit is contained in:
parent
32d201030d
commit
93543545c5
|
|
@ -156,8 +156,8 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
|
|||
mDailyWatchVideoAdViewList.add(watchTaskItemView)
|
||||
|
||||
binding?.dailyTasksContainer!!.run {
|
||||
watchTaskItemView.initUI(R.mipmap.icon_video_task, R.string.daily_video_task_title,
|
||||
detail.target_count, detail.value, if (index == 0) R.string.resgatar else R.string.go_and_do)
|
||||
watchTaskItemView.initUI(R.mipmap.icon_ad, R.string.daily_ad_task_title,
|
||||
detail.target_count, detail.value)
|
||||
|
||||
addView(watchTaskItemView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
|
||||
if (true) {
|
||||
|
|
@ -183,7 +183,7 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
|
|||
|
||||
binding?.dailyTasksContainer!!.run {
|
||||
watchTaskItemView.initUI(R.mipmap.icon_video_task, R.string.daily_video_task_title,
|
||||
detail.target_count, detail.value, if (index == 0) R.string.resgatar else R.string.go_and_do)
|
||||
detail.target_count, detail.value)
|
||||
|
||||
addView(watchTaskItemView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
|
||||
if (index != dailyWatchVideoTask.reward_details.size - 1) {
|
||||
|
|
@ -205,16 +205,18 @@ class TasksFragment : AppViewsFragment<ViewBinding, UiState, ViewModel>(), OnTab
|
|||
}
|
||||
|
||||
private fun updateDailyWatchVideoUI() {
|
||||
val statusBean = TaskManager.instance().dailyWatchVideoStatus().getStatus()
|
||||
val statusBean = TaskManager.instance().dailyWatchVideoStatus().getStatusBean()
|
||||
val subTaskStatusList = statusBean.getSubTaskRewardState()
|
||||
mDailyWatchVideoTaskViewList.forEachIndexed { index, view ->
|
||||
view.updateProgress(statusBean.getTodayWatchedCount())
|
||||
view.updateProgress(statusBean.getTodayWatchedCount(), subTaskStatusList[index].state)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateDailyWatchAdUI() {
|
||||
val statusBean = TaskManager.instance().dailyWatchAdStatus().getStatus()
|
||||
val statusBean = TaskManager.instance().dailyWatchAdStatus().getStatusBean()
|
||||
val subTaskStatusList = statusBean.getSubTaskRewardState()
|
||||
mDailyWatchVideoAdViewList.forEachIndexed { index, view ->
|
||||
view.updateProgress(statusBean.getTodayWatchedAdCount())
|
||||
view.updateProgress(statusBean.getTodayWatchedAdCount(), subTaskStatusList[index].state)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,11 @@ import android.view.LayoutInflater
|
|||
import android.widget.LinearLayout
|
||||
import com.ama.core.architecture.util.ResUtil
|
||||
import com.ama.core.architecture.util.setOnClickBatch
|
||||
import com.gamedog.vididin.R
|
||||
import com.gamedog.vididin.databinding.DailyTaskItemViewBinding
|
||||
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_ONGOING
|
||||
|
||||
|
||||
class DailyTaskItemView @JvmOverloads constructor(
|
||||
|
|
@ -35,23 +39,50 @@ class DailyTaskItemView @JvmOverloads constructor(
|
|||
|
||||
|
||||
|
||||
fun initUI(titleIconRes: Int, titleRes: Int, videosNum: Int, goldReward: Int, actionRes: Int) {
|
||||
fun initUI(titleIconRes: Int, titleRes: Int, videosNum: Int, goldReward: Int) {
|
||||
mRewardNum = goldReward
|
||||
mNeedWatchTotal = videosNum
|
||||
|
||||
mBinding.ivItemIcon.setImageResource(titleIconRes)
|
||||
mBinding.tvItemTitle.text = String.format(ResUtil.getString(titleRes), videosNum)
|
||||
mBinding.tvAction.setText(actionRes)
|
||||
mBinding.tvRewardNum.text = "+$goldReward"
|
||||
mBinding.tvItemProgress.text = "(0/$videosNum)"
|
||||
}
|
||||
|
||||
fun updateProgress(finishVideoNum: Int) {
|
||||
val showWatchedNum = if (finishVideoNum > mNeedWatchTotal) mNeedWatchTotal else finishVideoNum
|
||||
mBinding.tvItemProgress.text = "($showWatchedNum/$mNeedWatchTotal)"
|
||||
mBinding.itemProgress.setProgress(100*showWatchedNum/mNeedWatchTotal)
|
||||
fun updateProgress(watchedCount: Int, subTaskState: Int) {
|
||||
doUpdateProgress(watchedCount)
|
||||
|
||||
with(mBinding.tvAction) {
|
||||
when(subTaskState) {
|
||||
STATE_ONGOING -> {
|
||||
setText(R.string.go_and_do)
|
||||
setBackgroundResource(R.drawable.bg_sub_task_normal)
|
||||
isClickable = true
|
||||
alpha = 1F
|
||||
}
|
||||
|
||||
STATE_FINISH -> {
|
||||
setText(R.string.resgatar)
|
||||
setBackgroundResource(R.drawable.bg_sub_task_normal)
|
||||
isClickable = true
|
||||
alpha = 1F
|
||||
}
|
||||
|
||||
STATE_CLAIMED -> {
|
||||
setText(R.string.Resgatado)
|
||||
setBackgroundResource(R.drawable.bg_sub_task_normal)
|
||||
isClickable = false
|
||||
alpha = 0.4F
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun doUpdateProgress(finishNum: Int) {
|
||||
val properShowNumForCurSubTask = if (finishNum > mNeedWatchTotal) mNeedWatchTotal else finishNum
|
||||
mBinding.tvItemProgress.text = "($properShowNumForCurSubTask/$mNeedWatchTotal)"
|
||||
mBinding.itemProgress.setProgress(100*properShowNumForCurSubTask/mNeedWatchTotal)
|
||||
}
|
||||
|
||||
fun setActionFun(action: ()->Unit) {
|
||||
mAction = action
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ abstract class BaseTaskHelper<T: Any> {
|
|||
SpUtil.instance().putObject(mSpKey, mStateBean)
|
||||
}
|
||||
|
||||
fun getStatus() : T {
|
||||
fun getStatusBean() : T {
|
||||
return mStateBean
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
package com.gamedog.vididin.manager.helpers
|
||||
|
||||
import com.ama.core.architecture.util.DateUtil
|
||||
import com.ama.core.architecture.util.ResUtil
|
||||
import com.ama.core.architecture.util.SpUtil
|
||||
import com.ama.core.architecture.util.eventbus.NotifyMan
|
||||
import com.gamedog.vididin.R
|
||||
import com.gamedog.vididin.VididinEvents
|
||||
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_ONGOING
|
||||
import com.gamedog.vididin.manager.taskbeans.TaskStateWatchAd
|
||||
|
||||
|
||||
|
|
@ -55,7 +57,7 @@ class DailyWatchAdTaskHelper : BaseTaskHelper<TaskStateWatchAd>() {
|
|||
mStateBean.run {
|
||||
if (!isAllTaskFinish()) {
|
||||
addWatchedCount(newAdWatchedNum)
|
||||
checkSubTaskFinishState()
|
||||
calculateNewState()
|
||||
saveState2Sp()
|
||||
notifyEvents()
|
||||
}
|
||||
|
|
@ -63,29 +65,36 @@ class DailyWatchAdTaskHelper : BaseTaskHelper<TaskStateWatchAd>() {
|
|||
}
|
||||
|
||||
|
||||
fun checkSubTaskFinishState() {
|
||||
fun calculateNewState() {
|
||||
val todayWatchedCount = mStateBean.getTodayWatchedAdCount()
|
||||
|
||||
mStateBean.getSubTaskRewardState().forEachIndexed { index, subTaskState ->
|
||||
if (!subTaskState.isFinish && todayWatchedCount >= subTaskState.mTargetAdCount) {
|
||||
AccountManager.addGold(subTaskState.mRewardNum)
|
||||
subTaskState.isFinish = true
|
||||
val targetCount = subTaskState.mTargetAdCount
|
||||
when(subTaskState.state) {
|
||||
STATE_ONGOING -> {
|
||||
if (todayWatchedCount >= targetCount) {
|
||||
subTaskState.state = STATE_FINISH
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun getAdTaskShowingText() : String {
|
||||
if (mStateBean.isAllTaskFinish()) {
|
||||
return ResUtil.getString(R.string.done)
|
||||
} else {
|
||||
val subTaskStatusList = mStateBean.getSubTaskRewardState()
|
||||
subTaskStatusList.forEach {
|
||||
if (!it.isFinish) {
|
||||
return it.mRewardNum.toString()
|
||||
fun claimSubTaskReward(subTaskIndex: Int) : Boolean {
|
||||
if (subTaskIndex >= 0 && subTaskIndex < mStateBean.getSubTaskRewardState().size) {
|
||||
try {
|
||||
val subTask = mStateBean.getSubTaskRewardState()[subTaskIndex]
|
||||
if (subTask.state == STATE_FINISH) {
|
||||
AccountManager.addGold(subTask.mRewardNum)
|
||||
return true
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -5,6 +5,8 @@ import com.ama.core.architecture.util.SpUtil
|
|||
import com.ama.core.architecture.util.eventbus.NotifyMan
|
||||
import com.gamedog.vididin.VididinEvents
|
||||
import com.gamedog.vididin.core.login.login.AccountManager
|
||||
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.DailyStateWatchVideoBean
|
||||
|
||||
|
||||
|
|
@ -50,7 +52,7 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
|
|||
mStateBean.run {
|
||||
if (!isAllTaskFinish()) {
|
||||
if (addWatchedVideoInfo(dataPair)) {
|
||||
checkSubTaskFinishState()
|
||||
calculateNewState()
|
||||
saveState2Sp()
|
||||
notifyEvents()
|
||||
}
|
||||
|
|
@ -59,16 +61,35 @@ class DailyWatchVideoTaskHelper : BaseTaskHelper<DailyStateWatchVideoBean>() {
|
|||
}
|
||||
|
||||
|
||||
fun checkSubTaskFinishState() {
|
||||
fun calculateNewState() {
|
||||
val todayWatchedCount = mStateBean.getTodayWatchedCount()
|
||||
|
||||
mStateBean.getSubTaskRewardState().forEachIndexed { index, subTaskState ->
|
||||
if (!subTaskState.isFinish && todayWatchedCount >= subTaskState.mTargetVideoCount) {
|
||||
AccountManager.addGold(subTaskState.mRewardNum)
|
||||
subTaskState.isFinish = true
|
||||
val targetCount = subTaskState.mTargetVideoCount
|
||||
when(subTaskState.state) {
|
||||
STATE_ONGOING -> {
|
||||
if (todayWatchedCount >= targetCount) {
|
||||
subTaskState.state = STATE_FINISH
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun claimSubTaskReward(subTaskIndex: Int) : Boolean {
|
||||
if (subTaskIndex >= 0 && subTaskIndex < mStateBean.getSubTaskRewardState().size) {
|
||||
try {
|
||||
val subTask = mStateBean.getSubTaskRewardState()[subTaskIndex]
|
||||
if (subTask.state == STATE_FINISH) {
|
||||
AccountManager.addGold(subTask.mRewardNum)
|
||||
return true
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
package com.gamedog.vididin.manager.taskbeans
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
|
||||
@Serializable
|
||||
abstract class BaseTaskState {
|
||||
companion object {
|
||||
const val STATE_ONGOING = 1
|
||||
const val STATE_FINISH = 2
|
||||
const val STATE_CLAIMED = 3
|
||||
}
|
||||
}
|
||||
|
|
@ -6,7 +6,7 @@ import java.io.Serializable
|
|||
data class TaskDailySignBean(
|
||||
var startDurationMs: Long = 0,
|
||||
val signStateList: MutableList<DailySignDayInfoBean> = mutableListOf()
|
||||
): Serializable {
|
||||
): BaseTaskState() {
|
||||
init {
|
||||
signStateList.add(DailySignDayInfoBean())
|
||||
signStateList.add(DailySignDayInfoBean())
|
||||
|
|
|
|||
|
|
@ -2,13 +2,13 @@ package com.gamedog.vididin.manager.taskbeans
|
|||
|
||||
|
||||
import com.gamedog.vididin.main.fragments.task.RewardDetail
|
||||
import java.io.Serializable
|
||||
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING
|
||||
import kotlin.collections.forEach
|
||||
|
||||
|
||||
data class TaskStateWatchAd(
|
||||
var todayMs: Long = 0,
|
||||
): Serializable {
|
||||
): BaseTaskState() {
|
||||
|
||||
private var mWatchAdCount: Int = 0
|
||||
private val mSubTaskRewardState: MutableList<SubAdTaskBean> = mutableListOf()
|
||||
|
|
@ -21,14 +21,14 @@ data class TaskStateWatchAd(
|
|||
}
|
||||
|
||||
fun isAllTaskFinish(): Boolean {
|
||||
return mSubTaskRewardState.all { it.isFinish }
|
||||
return mSubTaskRewardState.all { it.state > STATE_ONGOING }
|
||||
}
|
||||
|
||||
fun initSubTaskRewardList(subTasks: List<RewardDetail>) {
|
||||
mSubTaskRewardState.clear()
|
||||
|
||||
subTasks.forEach {
|
||||
mSubTaskRewardState.add(SubAdTaskBean(it.value, it.target_count, false))
|
||||
mSubTaskRewardState.add(SubAdTaskBean(it.value, it.target_count, STATE_ONGOING))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -47,7 +47,7 @@ data class TaskStateWatchAd(
|
|||
data class SubAdTaskBean(
|
||||
val mRewardNum: Int,
|
||||
val mTargetAdCount: Int,
|
||||
var isFinish: Boolean = false,)
|
||||
var state: Int = STATE_ONGOING,)
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
package com.gamedog.vididin.manager.taskbeans
|
||||
|
||||
import com.gamedog.vididin.main.fragments.task.RewardDetail
|
||||
import java.io.Serializable
|
||||
import com.gamedog.vididin.manager.taskbeans.BaseTaskState.Companion.STATE_ONGOING
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
|
||||
data class DailyStateWatchVideoBean(
|
||||
var todayMs: Long = 0,
|
||||
): Serializable {
|
||||
): BaseTaskState() {
|
||||
|
||||
private val mWatchedMap = ConcurrentHashMap<String, Long>()
|
||||
private val mSubTaskRewardState: MutableList<SubTaskBean> = mutableListOf()
|
||||
|
|
@ -36,14 +36,14 @@ data class DailyStateWatchVideoBean(
|
|||
}
|
||||
|
||||
fun isAllTaskFinish(): Boolean {
|
||||
return mSubTaskRewardState.all { it.isFinish }
|
||||
return mSubTaskRewardState.all { it.state >= STATE_CLAIMED }
|
||||
}
|
||||
|
||||
fun initSubTaskRewardList(subTasks: List<RewardDetail>) {
|
||||
mSubTaskRewardState.clear()
|
||||
|
||||
subTasks.forEach {
|
||||
mSubTaskRewardState.add(SubTaskBean(it.value, it.target_count, false))
|
||||
mSubTaskRewardState.add(SubTaskBean(it.value, it.target_count, STATE_ONGOING))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -54,5 +54,5 @@ data class DailyStateWatchVideoBean(
|
|||
data class SubTaskBean(
|
||||
val mRewardNum: Int,
|
||||
val mTargetVideoCount: Int,
|
||||
var isFinish: Boolean = false,)
|
||||
var state: Int = STATE_ONGOING,)
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape android:shape="rectangle"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="#ff938a84" />
|
||||
<corners android:topLeftRadius="42dp" android:topRightRadius="42dp" android:bottomLeftRadius="42dp" android:bottomRightRadius="42dp" />
|
||||
</shape>
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape android:shape="rectangle"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<gradient android:type="linear" android:useLevel="true" android:startColor="#ffff2a2a"
|
||||
android:endColor="#ffff862f" android:angle="90" />
|
||||
<corners android:topLeftRadius="45dp" android:topRightRadius="45dp"
|
||||
android:bottomLeftRadius="45dp" android:bottomRightRadius="45dp" />
|
||||
</shape>
|
||||
|
||||
|
|
@ -112,11 +112,11 @@
|
|||
android:layout_alignParentRight="true"
|
||||
android:layout_marginLeft="9dp"
|
||||
android:gravity="center"
|
||||
android:background="@drawable/vididinapp_feature_message_bg_task_fazer"
|
||||
android:background="@drawable/bg_sub_task_normal"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
android:textColor="@color/white"
|
||||
android:text="@string/resgatar"
|
||||
android:text="@string/go_and_do"
|
||||
/>
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 4.3 KiB |
|
|
@ -27,6 +27,7 @@
|
|||
<string name="cash00">R$ 0.0</string>
|
||||
<string name="beginner_withdraw_title">Saque para Novatos</string>
|
||||
<string name="daily_video_task_title">Assistir a %d vídeo</string>
|
||||
<string name="daily_ad_task_title">Assistir a %d Anúncio</string>
|
||||
<string name="beginner_notify_title">Notificações push</string>
|
||||
<string name="beginner_notify_desc">Ative as notificações e ganhe 200 moedas!</string>
|
||||
<string name="beginner_discord_title">Comunidade Discord</string>
|
||||
|
|
|
|||
Loading…
Reference in New Issue