diff --git a/app/src/main/assets/vap/fairy_anim_once.mp4 b/app/src/main/assets/vap/fairy_anim_once.mp4 new file mode 100644 index 000000000..8b469c858 Binary files /dev/null and b/app/src/main/assets/vap/fairy_anim_once.mp4 differ diff --git a/app/src/main/assets/vap/fairy_anim_ten.mp4 b/app/src/main/assets/vap/fairy_anim_ten.mp4 new file mode 100644 index 000000000..578d6fa1a Binary files /dev/null and b/app/src/main/assets/vap/fairy_anim_ten.mp4 differ diff --git a/app/src/main/assets/vap/test_fairy_anim_epic.mp4 b/app/src/main/assets/vap/test_fairy_anim_epic.mp4 new file mode 100644 index 000000000..048490050 Binary files /dev/null and b/app/src/main/assets/vap/test_fairy_anim_epic.mp4 differ diff --git a/app/src/main/assets/vap/test_fairy_anim_legend.mp4 b/app/src/main/assets/vap/test_fairy_anim_legend.mp4 new file mode 100644 index 000000000..8a6d080b7 Binary files /dev/null and b/app/src/main/assets/vap/test_fairy_anim_legend.mp4 differ diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/FairyViewModel.kt b/app/src/main/java/com/mango/moshen/treasurefairy/FairyViewModel.kt index cf0112787..06086476f 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/FairyViewModel.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/FairyViewModel.kt @@ -13,6 +13,7 @@ import com.mango.core.utils.net.ServerException import com.mango.core.utils.toast import com.mango.moshen.base.BaseViewModel import com.mango.moshen.base.Event +import com.mango.moshen.treasurefairy.view.MyFairyItemView class FairyViewModel : BaseViewModel() { @@ -58,6 +59,9 @@ class FairyViewModel : BaseViewModel() { private val _testResultLiveData = MutableLiveData>() val testResultLiveData: LiveData> = _testResultLiveData + private val _testLegendResultLiveData = MutableLiveData>() + val testLegendResultLiveData: LiveData> = _testLegendResultLiveData + private val _testRecordLiveData = MutableLiveData>() val testRecordLiveData: LiveData> = _testRecordLiveData @@ -139,6 +143,10 @@ class FairyViewModel : BaseViewModel() { ) } + fun cleanDrawForestLiveData() { + _drawForestLiveData.value = null + } + fun getForestInfo() { safeLaunch( onError = { @@ -247,6 +255,8 @@ class FairyViewModel : BaseViewModel() { fun cleanTestParam() { _compoundFairyInfosLiveData.value = null + _testLegendResultLiveData.value = null + _testResultLiveData.value = null val myFairyInfo = _myFairyInfoLiveData.value myFairyInfo?.lowElves?.forEach { it.selectedNum = 0 @@ -333,23 +343,38 @@ class FairyViewModel : BaseViewModel() { } } - fun testFairy(level: Int) { + fun testFairy(level: Int): Boolean { val fairyInfos = _compoundFairyInfosLiveData.value ?: SparseArray() if (fairyInfos.size() != 3) { "精灵数量不足".toast() - return + return false } - safeLaunch { - val fairyTestParam = FairyTestParam() - fairyInfos.forEach { _, value -> - fairyTestParam.expendList.add(Compound(value.elfId, 1)) + safeLaunch( + onError = { + if (level == MyFairyItemView.EPIC) { + _testLegendResultLiveData.value = null + } else { + _testResultLiveData.value = null + } + + it.message.toast() + }, + block = { + val fairyTestParam = FairyTestParam() + fairyInfos.forEach { _, value -> + fairyTestParam.expendList.add(Compound(value.elfId, 1)) + } + fairyTestParam.level = level + val result = TreasureFairyModel.testFairy(fairyTestParam) + (if (level == MyFairyItemView.EPIC) { + _testLegendResultLiveData + } else { + _testResultLiveData + }).value = result?.let { Event(it) } + getMyFairyInfo() } - fairyTestParam.level = level - val result = TreasureFairyModel.testFairy(fairyTestParam) - _testResultLiveData.value = result?.let { Event(it) } - _compoundFairyInfosLiveData.value = null - getMyFairyInfo() - } + ) + return true } fun getTestFairyRecordList( diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/dialog/ForestFairyDialog.kt b/app/src/main/java/com/mango/moshen/treasurefairy/dialog/ForestFairyDialog.kt index 9c82831db..c41358ada 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/dialog/ForestFairyDialog.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/dialog/ForestFairyDialog.kt @@ -20,6 +20,18 @@ class ForestFairyDialog : BaseDialog() { private val viewModel: FairyViewModel by activityViewModels() private var currentType = 1 + private val showResultRunnable = Runnable { + if (canShowResult) { + canShowResult = false + enabledOpenBtn(true) + ForestPrizeDialog.newInstance().show(context) + } else { + resultNotShowed = true + } + } + private var canShowResult = false + private var resultNotShowed = false + companion object { fun newInstance(): ForestFairyDialog { val args = Bundle() @@ -62,18 +74,33 @@ class ForestFairyDialog : BaseDialog() { } binding.viewBgGrab1.setOnClickListener { enabledOpenBtn(false) + binding.animView.startPlay(requireContext().assets, "vap/fairy_anim_once.mp4") + binding.animView.postDelayed(showResultRunnable,1900) viewModel.drawForestFairy(1, currentType) } binding.viewBgGrab10.setOnClickListener { enabledOpenBtn(false) + binding.animView.startPlay(requireContext().assets, "vap/fairy_anim_ten.mp4") + binding.animView.postDelayed(showResultRunnable,1900) viewModel.drawForestFairy(10, currentType) } + binding.animView.setOnClickListener { + if (canShowResult) { + binding.animView.removeCallbacks(showResultRunnable) + showResultRunnable.run() + } + } + viewModel.drawForestLiveData.observe(viewLifecycleOwner) { - enabledOpenBtn(true) it?.getContentIfNotHandled()?.let { - ForestPrizeDialog.newInstance().show(context) + canShowResult = true + if (resultNotShowed) { + showResultRunnable.run() + } + }?:run{ + enabledOpenBtn(true) } } diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/dialog/ForestPrizeDialog.kt b/app/src/main/java/com/mango/moshen/treasurefairy/dialog/ForestPrizeDialog.kt index b158d389d..ef8ec33df 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/dialog/ForestPrizeDialog.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/dialog/ForestPrizeDialog.kt @@ -48,10 +48,14 @@ class ForestPrizeDialog : BaseDialog() { val hasSurprise = prizeInfoList.find { it.propType == 1 } != null val isFairy = requireArguments().getBoolean("isFairy", true) || !hasSurprise + if (isFairy) { + viewModel.cleanDrawForestLiveData() + } binding.tvTitle.text = if (isFairy) "获得精灵" else "意外发现" if (!isFairy && !isSingle && hasSurprise) { newInstance(true).show(context) } + val showPrizeInfoList = prizeInfoList.filter { if (isFairy) (it.propType != 1) else (it.propType == 1) } val isShowDateSingle = showPrizeInfoList.size == 1 diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/dialog/TestFairyResultDialog.kt b/app/src/main/java/com/mango/moshen/treasurefairy/dialog/TestFairyResultDialog.kt index 2c0daea4f..ed77505f1 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/dialog/TestFairyResultDialog.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/dialog/TestFairyResultDialog.kt @@ -49,7 +49,7 @@ class TestFairyResultDialog : BaseDialog private lateinit var testFairyAdapter: TestFairyAdapter + private val showResultRunnable = Runnable { + if (canShowResult) { + canShowResult = false + binding.ivBegin.isEnabled = true + TestFairyResultDialog.newInstance().show(context) + } else { + resultNotShowed = true + } + } + private var canShowResult = false + private var resultNotShowed = false + @SuppressLint("CheckResult") override fun init() { val fairyViews = listOf(binding.ivFairy0, binding.ivFairy1, binding.ivFairy2) @@ -57,7 +70,7 @@ class TestFairyFragment : BaseViewBindingFragment + + + app:layout_constraintTop_toTopOf="@id/iv_more" /> + + + app:layout_constraintEnd_toEndOf="@id/view_bg_anim" + app:layout_constraintHorizontal_bias="0.105" + app:layout_constraintStart_toStartOf="@id/view_bg_anim" + app:layout_constraintTop_toTopOf="@id/view_bg_anim" + app:layout_constraintVertical_bias="0.74" /> + app:layout_constraintStart_toStartOf="@id/view_bg_anim" + app:layout_constraintTop_toTopOf="@id/view_bg_anim" + app:layout_constraintVertical_bias="0.85" /> + app:layout_constraintEnd_toEndOf="@id/view_bg_anim" + app:layout_constraintHorizontal_bias="0.892" + app:layout_constraintStart_toStartOf="@id/view_bg_anim" + app:layout_constraintTop_toTopOf="@id/view_bg_anim" + app:layout_constraintVertical_bias="0.745" /> + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.83" + tools:text="5" /> diff --git a/core/src/main/java/com/mango/core/interceptor/PathFilter.java b/core/src/main/java/com/mango/core/interceptor/PathFilter.java index 86a85c3bd..133564705 100644 --- a/core/src/main/java/com/mango/core/interceptor/PathFilter.java +++ b/core/src/main/java/com/mango/core/interceptor/PathFilter.java @@ -15,6 +15,8 @@ public class PathFilter { List list = new ArrayList<>(); list.add("/dynamic/square/publish"); list.add("dynamic/square/publish"); + list.add("act/seize-treasure/elf/compound"); + list.add("/act/seize-treasure/elf/compound"); return list; } diff --git a/core/src/main/java/com/mango/core/treasurefairy/ExchangeGiftInfo.kt b/core/src/main/java/com/mango/core/treasurefairy/ExchangeGiftInfo.kt index d08476fa6..93d30e5e6 100644 --- a/core/src/main/java/com/mango/core/treasurefairy/ExchangeGiftInfo.kt +++ b/core/src/main/java/com/mango/core/treasurefairy/ExchangeGiftInfo.kt @@ -26,7 +26,7 @@ data class ExchangeGiftInfo( fun getPrizeUnit(): String { return if (rewardType == "gift") { - "${rewardShowValue}钻)" + "${rewardShowValue}钻" } else { "${rewardNum}${rewardUnit}" } diff --git a/core/src/main/java/com/mango/core/treasurefairy/TreasureFairyModel.kt b/core/src/main/java/com/mango/core/treasurefairy/TreasureFairyModel.kt index 0bdbac724..3593ec869 100644 --- a/core/src/main/java/com/mango/core/treasurefairy/TreasureFairyModel.kt +++ b/core/src/main/java/com/mango/core/treasurefairy/TreasureFairyModel.kt @@ -82,20 +82,19 @@ object TreasureFairyModel { } suspend fun exchangeGift(itemId: Long): ExchangeGiftInfo? = launchRequest { - api.exchangeGift(itemId) + api.exchangeGift(itemId, AvRoomDataManager.get().roomUid) } suspend fun getDebrisExchangeList(): List? = launchRequest { api.getDebrisExchangeList() } - suspend fun getExchangeRecord( convertType: Int, page: Int, pageSize: Int ): List? = launchRequest { - api.getExchangeRecord(convertType,page, pageSize) + api.getExchangeRecord(convertType, page, pageSize) } @@ -238,7 +237,10 @@ object TreasureFairyModel { */ @FormUrlEncoded @POST("act/seize-treasure/convert") - suspend fun exchangeGift(@Field("itemId") itemId: Long): ServiceResult + suspend fun exchangeGift( + @Field("itemId") itemId: Long, + @Field("roomUid") roomUid: Long + ): ServiceResult /**