调整签到逻辑
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.util.setOnClickBatch
|
||||||
import com.ama.core.architecture.widget.BindingDialog
|
import com.ama.core.architecture.widget.BindingDialog
|
||||||
import com.gamedog.vididin.databinding.DialogDailySignBinding
|
import com.gamedog.vididin.databinding.DialogDailySignBinding
|
||||||
import com.gamedog.vididin.manager.DailySignBean
|
|
||||||
import com.gamedog.vididin.manager.TaskManager
|
import com.gamedog.vididin.manager.TaskManager
|
||||||
import com.gamedog.vididin.widget.DailySignItemView
|
import com.gamedog.vididin.widget.DailySignItemView
|
||||||
|
|
||||||
|
|
||||||
class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(context, DialogDailySignBinding::inflate) {
|
class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(context, DialogDailySignBinding::inflate) {
|
||||||
private var mCurDayIndex: Int = 0
|
private var mCurDayIndex: Int = 0
|
||||||
private var mSelectedDayIndex: Int = 0
|
private var mConfigList: List<RewardDetail>? = emptyList()
|
||||||
private var mRewardDetailList: List<RewardDetail>? = emptyList()
|
|
||||||
private var mSignItemViewList: MutableList<DailySignItemView> = mutableListOf()
|
private var mSignItemViewList: MutableList<DailySignItemView> = mutableListOf()
|
||||||
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
build()
|
build()
|
||||||
mRewardDetailList = TaskManager.instance().getDailyCheckInTask()?.reward_details
|
mConfigList = TaskManager.instance().getDailyCheckInTask()?.reward_details
|
||||||
initSignItemViews()
|
initSignItemViews()
|
||||||
initSignState()
|
initSignState()
|
||||||
}
|
}
|
||||||
|
|
@ -33,30 +31,74 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
|
||||||
|
|
||||||
|
|
||||||
mBinding.run {
|
mBinding.run {
|
||||||
setOnClickBatch(butSign, butWatchAd, ivClose) {
|
setOnClickBatch(butSign, butWatchAd, actionComplement, actionWatchAd, ivClose) {
|
||||||
when (this) {
|
when (this) {
|
||||||
ivClose -> {
|
ivClose -> {
|
||||||
dismiss()
|
dismiss()
|
||||||
}
|
}
|
||||||
butSign -> {
|
butSign -> {
|
||||||
handleNormalSignClicked()
|
clickedNormalSign()
|
||||||
}
|
}
|
||||||
butWatchAd -> {
|
butWatchAd -> {
|
||||||
gotoWatchAdPage()
|
clickedAdDoubleBut()
|
||||||
dismiss()
|
}
|
||||||
|
|
||||||
|
actionWatchAd -> {
|
||||||
|
clickedAdSingleBut()
|
||||||
|
}
|
||||||
|
|
||||||
|
actionComplement -> {
|
||||||
|
clickedComplementSign()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleNormalSignClicked() {
|
private fun clickedNormalSign() {
|
||||||
val rewardConfig = mRewardDetailList?.get(mSelectedDayIndex)
|
if (TaskManager.instance().executeDailySign(mCurDayIndex, false, false)) {
|
||||||
if (TaskManager.instance().executeDailySign(mSelectedDayIndex, rewardConfig?.value ?: 0)) {
|
DailySignSuccessDialog(context).initData(mConfigList?.get(mCurDayIndex)?.value, true).show()
|
||||||
DailySignSuccessDialog(context).setRewardNum(mRewardDetailList?.get(mCurDayIndex)?.value).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() {
|
private fun initSignItemViews() {
|
||||||
with(mBinding) {
|
with(mBinding) {
|
||||||
|
|
@ -70,9 +112,9 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
|
||||||
mSignItemViewList.add(signItem6)
|
mSignItemViewList.add(signItem6)
|
||||||
mSignItemViewList.add(signItem7)
|
mSignItemViewList.add(signItem7)
|
||||||
|
|
||||||
mRewardDetailList?.let {
|
mConfigList?.let {
|
||||||
mSignItemViewList.forEachIndexed { index, itemView->
|
mSignItemViewList.forEachIndexed { index, itemView->
|
||||||
itemView.setData(mRewardDetailList!![index],
|
itemView.setData(mConfigList!![index],
|
||||||
TaskManager.instance().getDailySignStateBean(index))
|
TaskManager.instance().getDailySignStateBean(index))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -81,7 +123,6 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
|
||||||
|
|
||||||
private fun initSignState() {
|
private fun initSignState() {
|
||||||
mCurDayIndex = TaskManager.instance().getCurDayIndexOfDailyCheckIn()
|
mCurDayIndex = TaskManager.instance().getCurDayIndexOfDailyCheckIn()
|
||||||
mSelectedDayIndex = mCurDayIndex
|
|
||||||
mSignItemViewList[mCurDayIndex].setSelectState(true)
|
mSignItemViewList[mCurDayIndex].setSelectState(true)
|
||||||
updateUI()
|
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
|
package com.gamedog.vididin.main.fragments.task
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import androidx.core.view.isVisible
|
||||||
import com.ama.core.architecture.util.setOnClickBatch
|
import com.ama.core.architecture.util.setOnClickBatch
|
||||||
import com.ama.core.architecture.widget.BindingDialog
|
import com.ama.core.architecture.widget.BindingDialog
|
||||||
import com.gamedog.vididin.databinding.DialogDailySignSuccessBinding as ViewBinding
|
import com.gamedog.vididin.databinding.DialogDailySignSuccessBinding as ViewBinding
|
||||||
|
|
@ -39,8 +40,9 @@ class DailySignSuccessDialog(context: Context) : BindingDialog<ViewBinding>(cont
|
||||||
//TODO("Not yet implemented")
|
//TODO("Not yet implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setRewardNum(goldNum: Int?) : DailySignSuccessDialog {
|
fun initData(goldNum: Int?, showAdBut: Boolean) : DailySignSuccessDialog {
|
||||||
mBinding.tvGoldNum.text = "+$goldNum"
|
mBinding.tvGoldNum.text = "+$goldNum"
|
||||||
|
mBinding.flAction.isVisible = showAdBut
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.gamedog.vididin.manager
|
package com.gamedog.vididin.manager
|
||||||
|
|
||||||
|
import android.R
|
||||||
import com.ama.core.architecture.util.DateUtil
|
import com.ama.core.architecture.util.DateUtil
|
||||||
import com.ama.core.architecture.util.FileUtil
|
import com.ama.core.architecture.util.FileUtil
|
||||||
import com.ama.core.architecture.util.SpUtil
|
import com.ama.core.architecture.util.SpUtil
|
||||||
|
|
@ -54,6 +55,7 @@ class TaskManager private constructor() {
|
||||||
init {
|
init {
|
||||||
loadTaskConfigAsync()
|
loadTaskConfigAsync()
|
||||||
|
|
||||||
|
|
||||||
// TODO - remove test code
|
// TODO - remove test code
|
||||||
if (true) {
|
if (true) {
|
||||||
generateTestDailySignTestBean()
|
generateTestDailySignTestBean()
|
||||||
|
|
@ -74,6 +76,8 @@ class TaskManager private constructor() {
|
||||||
if (!initialized) {
|
if (!initialized) {
|
||||||
loadTaskConfigFromAsset()
|
loadTaskConfigFromAsset()
|
||||||
loadTaskStatesFromSp()
|
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]
|
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]
|
val daySignState = mDailySignData.signStateList[dayIndex]
|
||||||
|
|
||||||
if (!daySignState.hasSigned) {
|
if (!daySignState.hasSigned) {
|
||||||
|
val dayReward = getDailyCheckInTask()?.reward_details?.get(dayIndex)?.value ?: 0
|
||||||
|
daySignState.hasRewardedNum += if (isDoubleReward) 2*dayReward else dayReward
|
||||||
daySignState.hasSigned = true
|
daySignState.hasSigned = true
|
||||||
daySignState.hasRewardedNum += rewardNum
|
daySignState.hasWatchedAd = isByAd
|
||||||
saveDailySignInfo()
|
saveDailySignInfo()
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
@ -200,14 +210,25 @@ class TaskManager private constructor() {
|
||||||
|
|
||||||
fun getForgotSignDays(): Int {
|
fun getForgotSignDays(): Int {
|
||||||
var forgotSignDays = 0
|
var forgotSignDays = 0
|
||||||
mDailySignData.signStateList.forEach { item->
|
val curDayIndex = getCurDayIndexOfDailyCheckIn()
|
||||||
if (!item.hasSigned) {
|
mDailySignData.signStateList.forEachIndexed { index, item->
|
||||||
|
if (!item.hasSigned && index < curDayIndex) {
|
||||||
forgotSignDays++
|
forgotSignDays++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 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