调整签到逻辑
This commit is contained in:
parent
3bcd4383e0
commit
6edf63abf5
|
|
@ -5,21 +5,19 @@ import androidx.core.view.isVisible
|
|||
import com.ama.core.architecture.util.setOnClickBatch
|
||||
import com.ama.core.architecture.widget.BindingDialog
|
||||
import com.gamedog.vididin.databinding.DialogDailySignBinding
|
||||
import com.gamedog.vididin.manager.DailySignBean
|
||||
import com.gamedog.vididin.manager.TaskManager
|
||||
import com.gamedog.vididin.widget.DailySignItemView
|
||||
|
||||
|
||||
class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(context, DialogDailySignBinding::inflate) {
|
||||
private var mCurDayIndex: Int = 0
|
||||
private var mSelectedDayIndex: Int = 0
|
||||
private var mRewardDetailList: List<RewardDetail>? = emptyList()
|
||||
private var mConfigList: List<RewardDetail>? = emptyList()
|
||||
private var mSignItemViewList: MutableList<DailySignItemView> = mutableListOf()
|
||||
|
||||
|
||||
init {
|
||||
build()
|
||||
mRewardDetailList = TaskManager.instance().getDailyCheckInTask()?.reward_details
|
||||
mConfigList = TaskManager.instance().getDailyCheckInTask()?.reward_details
|
||||
initSignItemViews()
|
||||
initSignState()
|
||||
}
|
||||
|
|
@ -33,30 +31,74 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
|
|||
|
||||
|
||||
mBinding.run {
|
||||
setOnClickBatch(butSign, butWatchAd, ivClose) {
|
||||
setOnClickBatch(butSign, butWatchAd, actionComplement, actionWatchAd, ivClose) {
|
||||
when (this) {
|
||||
ivClose -> {
|
||||
dismiss()
|
||||
}
|
||||
butSign -> {
|
||||
handleNormalSignClicked()
|
||||
clickedNormalSign()
|
||||
}
|
||||
butWatchAd -> {
|
||||
gotoWatchAdPage()
|
||||
dismiss()
|
||||
clickedAdDoubleBut()
|
||||
}
|
||||
|
||||
actionWatchAd -> {
|
||||
clickedAdSingleBut()
|
||||
}
|
||||
|
||||
actionComplement -> {
|
||||
clickedComplementSign()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleNormalSignClicked() {
|
||||
val rewardConfig = mRewardDetailList?.get(mSelectedDayIndex)
|
||||
if (TaskManager.instance().executeDailySign(mSelectedDayIndex, rewardConfig?.value ?: 0)) {
|
||||
DailySignSuccessDialog(context).setRewardNum(mRewardDetailList?.get(mCurDayIndex)?.value).show()
|
||||
private fun clickedNormalSign() {
|
||||
if (TaskManager.instance().executeDailySign(mCurDayIndex, false, false)) {
|
||||
DailySignSuccessDialog(context).initData(mConfigList?.get(mCurDayIndex)?.value, true).show()
|
||||
}
|
||||
}
|
||||
|
||||
private fun clickedAdSingleBut() {
|
||||
startAdTask("signalAd", {
|
||||
if (TaskManager.instance().executeDailySign(mCurDayIndex, false, true)) {
|
||||
DailySignSuccessDialog(context).initData(mConfigList?.get(mCurDayIndex)?.value, false).show()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun clickedAdDoubleBut() {
|
||||
startAdTask("doubleAd", {
|
||||
if (TaskManager.instance().executeDailySign(mCurDayIndex, true, true)) {
|
||||
DailySignSuccessDialog(context).initData(mConfigList?.get(mCurDayIndex)?.value, false).show()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun clickedComplementSign() {
|
||||
val firstForgotSignDayIndex = TaskManager.instance().getForgotSignFirstDayIndex()
|
||||
if (firstForgotSignDayIndex > 0) {
|
||||
startAdTask("complementAd", {
|
||||
if (TaskManager.instance().executeDailySign(firstForgotSignDayIndex, false, false)){
|
||||
DailySignSuccessDialog(context).initData(mConfigList?.get(mCurDayIndex)?.value, false).show()
|
||||
}
|
||||
})
|
||||
|
||||
} else {
|
||||
updateUI()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private fun startAdTask(taskUUid: String, completeCallback: ()->Unit) {
|
||||
// start ad page with uuidKey, register notify of ad done event
|
||||
completeCallback.invoke()
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private fun initSignItemViews() {
|
||||
with(mBinding) {
|
||||
|
|
@ -70,9 +112,9 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
|
|||
mSignItemViewList.add(signItem6)
|
||||
mSignItemViewList.add(signItem7)
|
||||
|
||||
mRewardDetailList?.let {
|
||||
mConfigList?.let {
|
||||
mSignItemViewList.forEachIndexed { index, itemView->
|
||||
itemView.setData(mRewardDetailList!![index],
|
||||
itemView.setData(mConfigList!![index],
|
||||
TaskManager.instance().getDailySignStateBean(index))
|
||||
}
|
||||
}
|
||||
|
|
@ -81,7 +123,6 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
|
|||
|
||||
private fun initSignState() {
|
||||
mCurDayIndex = TaskManager.instance().getCurDayIndexOfDailyCheckIn()
|
||||
mSelectedDayIndex = mCurDayIndex
|
||||
mSignItemViewList[mCurDayIndex].setSelectState(true)
|
||||
updateUI()
|
||||
}
|
||||
|
|
@ -121,9 +162,6 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
|
|||
}
|
||||
|
||||
|
||||
private fun gotoWatchAdPage() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.gamedog.vididin.main.fragments.task
|
||||
|
||||
import android.content.Context
|
||||
import androidx.core.view.isVisible
|
||||
import com.ama.core.architecture.util.setOnClickBatch
|
||||
import com.ama.core.architecture.widget.BindingDialog
|
||||
import com.gamedog.vididin.databinding.DialogDailySignSuccessBinding as ViewBinding
|
||||
|
|
@ -39,8 +40,9 @@ class DailySignSuccessDialog(context: Context) : BindingDialog<ViewBinding>(cont
|
|||
//TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
fun setRewardNum(goldNum: Int?) : DailySignSuccessDialog {
|
||||
fun initData(goldNum: Int?, showAdBut: Boolean) : DailySignSuccessDialog {
|
||||
mBinding.tvGoldNum.text = "+$goldNum"
|
||||
mBinding.flAction.isVisible = showAdBut
|
||||
return this
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.gamedog.vididin.manager
|
||||
|
||||
import android.R
|
||||
import com.ama.core.architecture.util.DateUtil
|
||||
import com.ama.core.architecture.util.FileUtil
|
||||
import com.ama.core.architecture.util.SpUtil
|
||||
|
|
@ -54,6 +55,7 @@ class TaskManager private constructor() {
|
|||
init {
|
||||
loadTaskConfigAsync()
|
||||
|
||||
|
||||
// TODO - remove test code
|
||||
if (true) {
|
||||
generateTestDailySignTestBean()
|
||||
|
|
@ -74,6 +76,8 @@ class TaskManager private constructor() {
|
|||
if (!initialized) {
|
||||
loadTaskConfigFromAsset()
|
||||
loadTaskStatesFromSp()
|
||||
|
||||
initCalculate()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -99,6 +103,10 @@ class TaskManager private constructor() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun initCalculate() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -166,12 +174,14 @@ class TaskManager private constructor() {
|
|||
return mDailySignData.signStateList[dayIndex]
|
||||
}
|
||||
|
||||
fun executeDailySign(dayIndex: Int, rewardNum: Int) : Boolean {
|
||||
fun executeDailySign(dayIndex: Int, isDoubleReward: Boolean, isByAd: Boolean) : Boolean {
|
||||
val daySignState = mDailySignData.signStateList[dayIndex]
|
||||
|
||||
if (!daySignState.hasSigned) {
|
||||
val dayReward = getDailyCheckInTask()?.reward_details?.get(dayIndex)?.value ?: 0
|
||||
daySignState.hasRewardedNum += if (isDoubleReward) 2*dayReward else dayReward
|
||||
daySignState.hasSigned = true
|
||||
daySignState.hasRewardedNum += rewardNum
|
||||
daySignState.hasWatchedAd = isByAd
|
||||
saveDailySignInfo()
|
||||
return true
|
||||
}
|
||||
|
|
@ -200,14 +210,25 @@ class TaskManager private constructor() {
|
|||
|
||||
fun getForgotSignDays(): Int {
|
||||
var forgotSignDays = 0
|
||||
mDailySignData.signStateList.forEach { item->
|
||||
if (!item.hasSigned) {
|
||||
val curDayIndex = getCurDayIndexOfDailyCheckIn()
|
||||
mDailySignData.signStateList.forEachIndexed { index, item->
|
||||
if (!item.hasSigned && index < curDayIndex) {
|
||||
forgotSignDays++
|
||||
}
|
||||
}
|
||||
return forgotSignDays
|
||||
}
|
||||
|
||||
fun getForgotSignFirstDayIndex(): Int {
|
||||
val curDayIndex = getCurDayIndexOfDailyCheckIn()
|
||||
mDailySignData.signStateList.forEachIndexed { index, item->
|
||||
if (!item.hasSigned && index < curDayIndex) {
|
||||
return index
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue