diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt index 1455dff..624de79 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignDialog.kt @@ -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(context, DialogDailySignBinding::inflate) { private var mCurDayIndex: Int = 0 - private var mSelectedDayIndex: Int = 0 - private var mRewardDetailList: List? = emptyList() + private var mConfigList: List? = emptyList() private var mSignItemViewList: MutableList = 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( 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( 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( private fun initSignState() { mCurDayIndex = TaskManager.instance().getCurDayIndexOfDailyCheckIn() - mSelectedDayIndex = mCurDayIndex mSignItemViewList[mCurDayIndex].setSelectState(true) updateUI() } @@ -121,9 +162,6 @@ class DailySignDialog(context: Context) : BindingDialog( } - private fun gotoWatchAdPage() { - - } } diff --git a/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignSuccessDialog.kt b/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignSuccessDialog.kt index cca0162..b842ede 100644 --- a/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignSuccessDialog.kt +++ b/app/src/main/java/com/gamedog/vididin/main/fragments/task/DailySignSuccessDialog.kt @@ -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(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 } diff --git a/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt b/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt index b71c547..c58b24f 100644 --- a/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt +++ b/app/src/main/java/com/gamedog/vididin/manager/TaskManager.kt @@ -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; + } + }