From 73ec5a77b128d512440ad50de6d3cd766ad1584a Mon Sep 17 00:00:00 2001 From: huangjian Date: Mon, 27 Feb 2023 17:38:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=BA=E5=AE=9D=E7=B2=BE=E7=81=B5:=E7=B2=BE?= =?UTF-8?q?=E7=81=B5=E8=AF=95=E7=82=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../moshen/treasurefairy/FairyViewModel.kt | 129 ++++++++++++++++++ .../moshen/treasurefairy/TestFairyAdapter.kt | 27 ++++ .../moshen/treasurefairy/TestFairyDialog.kt | 13 +- .../moshen/treasurefairy/TestFairyFragment.kt | 62 ++++++++- .../treasurefairy/TestFairyRecordAdapter.kt | 34 +++++ .../treasurefairy/TestFairyRecordDialog.kt | 59 ++++++++ .../treasurefairy/TestFairyResultAdapter.kt | 18 +++ .../treasurefairy/TestFairyResultDialog.kt | 60 ++++++++ .../moshen/ui/im/chat/MsgViewHolderFairy.java | 2 +- .../res/drawable/shape_006e7c_to_00b9af.xml | 8 ++ .../treasure_fairy_dialog_test_fairy.xml | 1 + ...reasure_fairy_dialog_test_fairy_record.xml | 74 ++++++++++ ...reasure_fairy_dialog_test_fairy_result.xml | 64 +++++++++ .../treasure_fairy_fragment_test_fairy.xml | 28 ++++ .../treasure_fairy_item_forest_prize.xml | 1 + ...reasure_fairy_item_forest_prize_single.xml | 1 + .../layout/treasure_fairy_item_test_fairy.xml | 72 +++++----- .../treasure_fairy_item_test_fairy_record.xml | 69 ++++++++++ .../com/mango/core/treasurefairy/Compound.kt | 6 + .../com/mango/core/treasurefairy/FairyInfo.kt | 1 + .../core/treasurefairy/FairyTestParam.kt | 6 + .../core/treasurefairy/TestFairyRecordInfo.kt | 10 ++ .../core/treasurefairy/TestResultInfo.kt | 7 + .../core/treasurefairy/TreasureFairyModel.kt | 28 ++++ 24 files changed, 739 insertions(+), 41 deletions(-) create mode 100644 app/src/main/java/com/mango/moshen/treasurefairy/TestFairyAdapter.kt create mode 100644 app/src/main/java/com/mango/moshen/treasurefairy/TestFairyRecordAdapter.kt create mode 100644 app/src/main/java/com/mango/moshen/treasurefairy/TestFairyRecordDialog.kt create mode 100644 app/src/main/java/com/mango/moshen/treasurefairy/TestFairyResultAdapter.kt create mode 100644 app/src/main/java/com/mango/moshen/treasurefairy/TestFairyResultDialog.kt create mode 100644 app/src/main/res/drawable/shape_006e7c_to_00b9af.xml create mode 100644 app/src/main/res/layout/treasure_fairy_dialog_test_fairy_record.xml create mode 100644 app/src/main/res/layout/treasure_fairy_dialog_test_fairy_result.xml create mode 100644 app/src/main/res/layout/treasure_fairy_item_test_fairy_record.xml create mode 100644 core/src/main/java/com/mango/core/treasurefairy/Compound.kt create mode 100644 core/src/main/java/com/mango/core/treasurefairy/FairyTestParam.kt create mode 100644 core/src/main/java/com/mango/core/treasurefairy/TestFairyRecordInfo.kt create mode 100644 core/src/main/java/com/mango/core/treasurefairy/TestResultInfo.kt 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 e2270f146..3cbe38f63 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/FairyViewModel.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/FairyViewModel.kt @@ -1,9 +1,13 @@ package com.mango.moshen.treasurefairy +import android.util.SparseArray +import android.util.SparseIntArray +import androidx.core.util.forEach import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.mango.core.bean.response.ListResult import com.mango.core.gift.bean.SimpleUserInfo +import com.mango.core.manager.AvRoomDataManager import com.mango.core.treasurefairy.* import com.mango.core.utils.net.ServerException import com.mango.core.utils.toast @@ -48,6 +52,14 @@ class FairyViewModel : BaseViewModel() { private val _sendFairyRecordLiveData = MutableLiveData>() val sendFairyRecordLiveData: LiveData> = _sendFairyRecordLiveData + private val _compoundFairyInfosLiveData = MutableLiveData>() + val compoundFairyInfosLiveData: LiveData> = _compoundFairyInfosLiveData + + private val _testResultLiveData = MutableLiveData>() + val testResultLiveData: LiveData> = _testResultLiveData + + private val _testRecordLiveData = MutableLiveData>() + val testRecordLiveData: LiveData> = _testRecordLiveData init { initPrizeInfoList() @@ -213,4 +225,121 @@ class FairyViewModel : BaseViewModel() { ) } + fun cleanTestParam() { + _compoundFairyInfosLiveData.value = null + _myFairyInfoLiveData.value?.lowElves?.forEach { + it.selectedNum = 0 + } + _myFairyInfoLiveData.value?.middleElves?.forEach { + it.selectedNum = 0 + } + _myFairyInfoLiveData.value = _myFairyInfoLiveData.value + } + + fun addTestFairy(fairyInfo: FairyInfo) { + val array = _compoundFairyInfosLiveData.value ?: SparseArray() + + if (array.size() >= 3) { + "数量足够了,快去试炼吧!".toast() + } else { + if (fairyInfo.elfNum == 0) { + "精灵数量不足".toast() + return + } + array.put(nextIndex(array), fairyInfo) + var selectedNum = 0 + array.forEach { _, value -> + if (value.elfId == fairyInfo.elfId) { + selectedNum++ + } + } + + if (selectedNum > fairyInfo.elfNum) { + "精灵数量不足".toast() + return + } + fairyInfo.selectedNum = selectedNum + + _compoundFairyInfosLiveData.value = array + } + } + + fun minusTestFairy(index: Int) { + val array = _compoundFairyInfosLiveData.value ?: SparseArray() + val fairyInfo = array.get(index) + if (fairyInfo != null) { + array.remove(index) + var selectedNum = 0 + array.forEach { _, value -> + if (value.elfId == fairyInfo.elfId) { + selectedNum++ + } + } + fairyInfo.selectedNum = selectedNum + _compoundFairyInfosLiveData.value = array + } + } + + fun oneKeyAdd(fairyInfos: List) { + val compoundFairyInfos = _compoundFairyInfosLiveData.value ?: SparseArray() + var needNum = 3 - compoundFairyInfos.size() + fairyInfos.forEach { + while (it.elfNum - it.selectedNum > 0 && needNum > 0) { + it.selectedNum++ + needNum-- + compoundFairyInfos.put(nextIndex(compoundFairyInfos), it) + } + } + _compoundFairyInfosLiveData.value = compoundFairyInfos + } + + private fun nextIndex(fairyInfos: SparseArray): Int { + return when { + fairyInfos.get(0) == null -> { + 0 + } + fairyInfos.get(1) == null -> { + 1 + } + else -> { + 2 + } + } + } + + fun testFairy(level: Int) { + val fairyInfos = _compoundFairyInfosLiveData.value ?: SparseArray() + if (fairyInfos.size() != 3) { + "精灵数量不足".toast() + return + } + safeLaunch { + val fairyTestParam = FairyTestParam() + fairyInfos.forEach { _, value -> + fairyTestParam.expendList.add(Compound(value.elfId, 1)) + } + fairyTestParam.level = level + val result = TreasureFairyModel.testFairy(fairyTestParam) + _testResultLiveData.value = result?.let { Event(it) } + _compoundFairyInfosLiveData.value = null + getMyFairyInfo() + } + } + + fun getTestFairyRecordList( + page: Int, + pageSize: Int + ) { + safeLaunch( + onError = { + _testRecordLiveData.value = ListResult.failed(page) + }, + block = { + val result = TreasureFairyModel.getTestFairyRecordList(page, pageSize) + _testRecordLiveData.value = ListResult.success(result, page) + } + ) + } + + } \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyAdapter.kt b/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyAdapter.kt new file mode 100644 index 000000000..6c1696c9f --- /dev/null +++ b/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyAdapter.kt @@ -0,0 +1,27 @@ +package com.mango.moshen.treasurefairy + +import android.widget.ImageView +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import com.mango.core.treasurefairy.FairyInfo +import com.mango.core.treasurefairy.SendFairyInfo +import com.mango.moshen.R +import com.mango.moshen.ui.utils.load +import java.text.SimpleDateFormat +import java.util.* + +class TestFairyAdapter : + BaseQuickAdapter(R.layout.treasure_fairy_item_test_fairy) { + + + override fun convert(helper: BaseViewHolder, item: FairyInfo) { + helper.getView(R.id.iv_fairy_icon).load(item.elfPicUrl) + helper.setText(R.id.tv_fairy_num, "${item.selectedNum}/${item.elfNum}") + helper.setText(R.id.tv_fairy_name, item.elfName) + helper.setBackgroundRes( + R.id.ll_root, + if (item.selectedNum > 0) R.drawable.treasure_fairy_bg_test_fairy_item_select else 0 + ) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyDialog.kt b/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyDialog.kt index c5bf2c247..9a92e0979 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyDialog.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyDialog.kt @@ -6,14 +6,10 @@ import android.view.Gravity import android.view.WindowManager import androidx.fragment.app.activityViewModels import androidx.viewpager.widget.ViewPager -import com.mango.core.room.game.GameInfo import com.mango.moshen.R import com.mango.moshen.avroom.adapter.RoomVPAdapter import com.mango.moshen.base.BaseDialog -import com.mango.moshen.databinding.TreasureFairyDialogMyFairyBinding import com.mango.moshen.databinding.TreasureFairyDialogTestFairyBinding -import com.mango.moshen.home.adapter.FragmentViewPagerAdapter -import com.mango.moshen.ui.utils.RVDelegate class TestFairyDialog : BaseDialog() { @@ -36,6 +32,9 @@ class TestFairyDialog : BaseDialog() { binding.ivBack.setOnClickListener { dismissAllowingStateLoss() } + binding.tvRecord.setOnClickListener { + TestFairyRecordDialog.newInstance().show(context) + } binding.rg.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { R.id.rb_epic -> binding.viewPager.currentItem = 0 @@ -48,17 +47,19 @@ class TestFairyDialog : BaseDialog() { 0 -> binding.rg.check(R.id.rb_epic) 1 -> binding.rg.check(R.id.rb_legend) } + viewModel.cleanTestParam() } }) binding.viewPager.adapter = RoomVPAdapter( childFragmentManager, listOf( - TestFairyFragment.newInstance(MyFairyItemView.EPIC), - TestFairyFragment.newInstance(MyFairyItemView.LEGEND) + TestFairyFragment.newInstance(MyFairyItemView.BASE), + TestFairyFragment.newInstance(MyFairyItemView.EPIC) ) ) viewModel.getMyFairyInfo() + viewModel.cleanTestParam() } } \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyFragment.kt b/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyFragment.kt index 480be5b78..36ebcbf56 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyFragment.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyFragment.kt @@ -5,8 +5,13 @@ import android.os.Bundle import android.view.Gravity import android.view.WindowManager import androidx.fragment.app.activityViewModels +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import com.mango.core.gift.bean.SimpleUserInfo import com.mango.core.room.game.GameInfo import com.mango.core.treasurefairy.FairyInfo +import com.mango.core.treasurefairy.SendFairyInfo +import com.mango.core.utils.toast import com.mango.moshen.R import com.mango.moshen.base.BaseDialog import com.mango.moshen.base.BaseFragment @@ -15,6 +20,7 @@ import com.mango.moshen.databinding.TreasureFairyDialogMyFairyBinding import com.mango.moshen.databinding.TreasureFairyFragmentMyFairyBinding import com.mango.moshen.databinding.TreasureFairyFragmentTestFairyBinding import com.mango.moshen.ui.utils.RVDelegate +import com.mango.moshen.ui.utils.load class TestFairyFragment : BaseViewBindingFragment() { @@ -31,23 +37,73 @@ class TestFairyFragment : BaseViewBindingFragment + private lateinit var testFairyAdapter: TestFairyAdapter @SuppressLint("CheckResult") override fun init() { + val fairyViews = listOf(binding.ivFairy0, binding.ivFairy1, binding.ivFairy2) + testFairyAdapter = TestFairyAdapter() + rvDelegate = RVDelegate.Builder() + .setAdapter(testFairyAdapter) + .setRecyclerView(binding.recyclerView) + .setLayoutManager(GridLayoutManager(context, 5, LinearLayoutManager.VERTICAL, false)) + .build() viewModel.myFairyInfoLiveData.observe(viewLifecycleOwner) { - it?.let { - val fairyInfos = when (fairyType) { + val fairyInfos = it?.let { + when (fairyType) { MyFairyItemView.EPIC -> { it.middleElves } else -> { - it.highElves + it.lowElves } } } + rvDelegate.setNewData(fairyInfos) } + if (fairyType == MyFairyItemView.EPIC){ + binding.tvTips.text = "点击投入试炼传说精灵" + } + + testFairyAdapter.setOnItemClickListener { _, _, position -> + testFairyAdapter.getItem(position)?.let { + viewModel.addTestFairy(it) + } + } + + fairyViews.forEachIndexed { index, imageView -> + imageView.setOnClickListener { + viewModel.minusTestFairy(index) + } + } + binding.tvReset.setOnClickListener { + viewModel.cleanTestParam() + } + binding.tvOneKeyAdd.setOnClickListener { + viewModel.oneKeyAdd(testFairyAdapter.data) + } + + binding.ivBegin.setOnClickListener { + viewModel.testFairy(fairyType) + } + viewModel.testResultLiveData.observe(viewLifecycleOwner) { + it?.getContentIfNotHandled()?.let { + TestFairyResultDialog.newInstance().show(context) + } + } + viewModel.compoundFairyInfosLiveData.observe(viewLifecycleOwner) { + fairyViews.forEachIndexed { index, imageView -> + it?.get(index)?.elfPicUrl?.let { elfPicUrl -> + imageView.load(elfPicUrl) + } ?: run { + imageView.setImageDrawable(null) + } + } + testFairyAdapter.notifyDataSetChanged() + } } } \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyRecordAdapter.kt b/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyRecordAdapter.kt new file mode 100644 index 000000000..ac8a007f9 --- /dev/null +++ b/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyRecordAdapter.kt @@ -0,0 +1,34 @@ +package com.mango.moshen.treasurefairy + +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import com.mango.core.treasurefairy.PrizeInfo +import com.mango.core.treasurefairy.TestFairyRecordInfo +import com.mango.moshen.R +import java.text.SimpleDateFormat +import java.util.* + +class TestFairyRecordAdapter : + BaseQuickAdapter(R.layout.treasure_fairy_item_test_fairy_record) { + + private val formatYear = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA) + private val formatHour = SimpleDateFormat("HH:mm:ss", Locale.CHINA) + + override fun convert(helper: BaseViewHolder, item: TestFairyRecordInfo) { + + helper.setText(R.id.tv_time_year, formatYear.format(item.createTime)) + helper.setText(R.id.tv_time_hour, formatHour.format(item.createTime)) + helper.setText(R.id.tv_prize_name, item.elfName) + helper.setText( + R.id.tv_prize_type, when (item.elfLevel) { + 1 -> "史诗试炼" + else -> "传说森林" + } + ) + + helper.setText( + R.id.tv_fairy_infos, + item.expendList.joinToString(separator = "\n") { "${it.elfName}x${it.elfNum}" }) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyRecordDialog.kt b/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyRecordDialog.kt new file mode 100644 index 000000000..efcb0e563 --- /dev/null +++ b/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyRecordDialog.kt @@ -0,0 +1,59 @@ +package com.mango.moshen.treasurefairy + +import android.annotation.SuppressLint +import android.os.Bundle +import androidx.fragment.app.activityViewModels +import androidx.recyclerview.widget.LinearLayoutManager +import com.mango.core.treasurefairy.PrizeInfo +import com.mango.core.treasurefairy.TestFairyRecordInfo +import com.mango.moshen.base.BaseDialog +import com.mango.moshen.databinding.TreasureFairyDialogTestFairyRecordBinding +import com.mango.moshen.databinding.TreasureFairyFragmentForestRecordBinding +import com.mango.moshen.ui.utils.RVDelegate +import com.netease.nim.uikit.common.util.sys.ScreenUtil + +class TestFairyRecordDialog : BaseDialog() { + + + companion object { + fun newInstance(): TestFairyRecordDialog { + val args = Bundle() + val fragment = TestFairyRecordDialog() + fragment.arguments = args + return fragment + } + } + + private var page = 1 + private val pageSize = 20 + private lateinit var rvDelegate: RVDelegate + private lateinit var prizeAdapter: TestFairyRecordAdapter + private val viewModel: FairyViewModel by activityViewModels() + override var width: Int = ScreenUtil.dip2px(318f) + override var height: Int = ScreenUtil.dip2px(388f) + + + @SuppressLint("CheckResult") + override fun init() { + prizeAdapter = TestFairyRecordAdapter() + rvDelegate = RVDelegate.Builder() + .setAdapter(prizeAdapter) + .setPageSize(pageSize) + .setRecyclerView(binding.recyclerView) + .setLayoutManager(LinearLayoutManager(context)) + .build() + + viewModel.testRecordLiveData.observe(viewLifecycleOwner) { + rvDelegate.loadData(it) + } + + prizeAdapter.setOnLoadMoreListener({ loadData(false) }, binding.recyclerView) + + loadData(true) + } + + private fun loadData(isRefresh: Boolean) { + page = if (isRefresh) 1 else (page + 1) + viewModel.getTestFairyRecordList(page, pageSize) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyResultAdapter.kt b/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyResultAdapter.kt new file mode 100644 index 000000000..4241429b0 --- /dev/null +++ b/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyResultAdapter.kt @@ -0,0 +1,18 @@ +package com.mango.moshen.treasurefairy + +import android.widget.ImageView +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import com.mango.core.treasurefairy.FairyInfo +import com.mango.moshen.R +import com.mango.moshen.ui.utils.load + +class TestFairyResultAdapter : + BaseQuickAdapter(R.layout.treasure_fairy_item_forest_prize_single) { + + override fun convert(helper: BaseViewHolder, item: FairyInfo) { + helper.getView(R.id.iv_prize_icon).load(item.elfPicUrl) + helper.setText(R.id.tv_prize_name, item.elfName) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyResultDialog.kt b/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyResultDialog.kt new file mode 100644 index 000000000..8f8894158 --- /dev/null +++ b/app/src/main/java/com/mango/moshen/treasurefairy/TestFairyResultDialog.kt @@ -0,0 +1,60 @@ +package com.mango.moshen.treasurefairy + +import android.annotation.SuppressLint +import android.os.Bundle +import android.view.Gravity +import android.view.WindowManager +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.core.view.updateLayoutParams +import androidx.fragment.app.activityViewModels +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import com.mango.core.treasurefairy.FairyInfo +import com.mango.core.treasurefairy.PrizeInfo +import com.mango.moshen.R +import com.mango.moshen.base.BaseDialog +import com.mango.moshen.databinding.TreasureFairyDialogForestPrizeBinding +import com.mango.moshen.databinding.TreasureFairyDialogTestFairyResultBinding +import com.mango.moshen.ui.utils.RVDelegate +import com.netease.nim.uikit.common.util.sys.ScreenUtil + +class TestFairyResultDialog : BaseDialog() { + + private lateinit var rvDelegate: RVDelegate + private lateinit var prizeAdapter: TestFairyResultAdapter + + override var width = WindowManager.LayoutParams.MATCH_PARENT + override var height = WindowManager.LayoutParams.WRAP_CONTENT + override var gravity = Gravity.CENTER + private val viewModel: FairyViewModel by activityViewModels() + + companion object { + fun newInstance(): TestFairyResultDialog { + val args = Bundle() + val fragment = TestFairyResultDialog() + fragment.arguments = args + return fragment + } + } + + @SuppressLint("CheckResult") + override fun init() { + binding.tvClose.setOnClickListener { + dismissAllowingStateLoss() + } + val prizeInfoList = viewModel.testResultLiveData.value + + prizeAdapter = TestFairyResultAdapter() + rvDelegate = RVDelegate.Builder() + .setAdapter(prizeAdapter) + .setRecyclerView(binding.recyclerView) + .setLayoutManager( + LinearLayoutManager(context) + ) + .build() + + rvDelegate.setNewData(arrayListOf(prizeInfoList?.peekContent())) + + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/ui/im/chat/MsgViewHolderFairy.java b/app/src/main/java/com/mango/moshen/ui/im/chat/MsgViewHolderFairy.java index db322384b..40addbd14 100644 --- a/app/src/main/java/com/mango/moshen/ui/im/chat/MsgViewHolderFairy.java +++ b/app/src/main/java/com/mango/moshen/ui/im/chat/MsgViewHolderFairy.java @@ -80,7 +80,7 @@ public class MsgViewHolderFairy extends MsgViewHolderBase implements View.OnClic public void onClick(View v) { FairySendAttachment attachment = (FairySendAttachment) message.getAttachment(); SimpleUserInfo userInfo = new SimpleUserInfo(attachment.getNick(), attachment.getUid(), 0, "", ""); - FairyInfo fairyInfo = new FairyInfo(attachment.getElfId(), 1, 1, attachment.getElfName(), attachment.getElfPicUrl()); + FairyInfo fairyInfo = new FairyInfo(attachment.getElfId(), 1, 1, attachment.getElfName(), attachment.getElfPicUrl(),0); Bundle bundle = new Bundle(); bundle.putSerializable("userInfo", userInfo); bundle.putSerializable("fairyInfo", fairyInfo); diff --git a/app/src/main/res/drawable/shape_006e7c_to_00b9af.xml b/app/src/main/res/drawable/shape_006e7c_to_00b9af.xml new file mode 100644 index 000000000..8be12338a --- /dev/null +++ b/app/src/main/res/drawable/shape_006e7c_to_00b9af.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/treasure_fairy_dialog_test_fairy.xml b/app/src/main/res/layout/treasure_fairy_dialog_test_fairy.xml index 0afecbd5b..4f45a778f 100644 --- a/app/src/main/res/layout/treasure_fairy_dialog_test_fairy.xml +++ b/app/src/main/res/layout/treasure_fairy_dialog_test_fairy.xml @@ -93,6 +93,7 @@ app:layout_constraintTop_toTopOf="@id/rg" /> + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/treasure_fairy_dialog_test_fairy_result.xml b/app/src/main/res/layout/treasure_fairy_dialog_test_fairy_result.xml new file mode 100644 index 000000000..a770e254e --- /dev/null +++ b/app/src/main/res/layout/treasure_fairy_dialog_test_fairy_result.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/treasure_fairy_fragment_test_fairy.xml b/app/src/main/res/layout/treasure_fairy_fragment_test_fairy.xml index 553a7cc33..00f5b8554 100644 --- a/app/src/main/res/layout/treasure_fairy_fragment_test_fairy.xml +++ b/app/src/main/res/layout/treasure_fairy_fragment_test_fairy.xml @@ -27,6 +27,33 @@ app:layout_constraintTop_toTopOf="@id/view_bg_top" app:layout_constraintWidth_percent="0.91" /> + + + + + + diff --git a/app/src/main/res/layout/treasure_fairy_item_forest_prize_single.xml b/app/src/main/res/layout/treasure_fairy_item_forest_prize_single.xml index d4f0b1d99..a70169308 100644 --- a/app/src/main/res/layout/treasure_fairy_item_forest_prize_single.xml +++ b/app/src/main/res/layout/treasure_fairy_item_forest_prize_single.xml @@ -15,6 +15,7 @@ android:scaleType="centerCrop" android:src="@drawable/default_cover" app:cborder_color="#F4FFC3" + android:background="@drawable/shape_006e7c_to_00b9af" app:cborder_width="1px" /> - + android:background="@drawable/treasure_fairy_bg_test_fairy_item_unselect"> - - - + android:orientation="vertical"> - + + + + + + + + - \ No newline at end of file diff --git a/app/src/main/res/layout/treasure_fairy_item_test_fairy_record.xml b/app/src/main/res/layout/treasure_fairy_item_test_fairy_record.xml new file mode 100644 index 000000000..97d1b83a4 --- /dev/null +++ b/app/src/main/res/layout/treasure_fairy_item_test_fairy_record.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/src/main/java/com/mango/core/treasurefairy/Compound.kt b/core/src/main/java/com/mango/core/treasurefairy/Compound.kt new file mode 100644 index 000000000..2a11eb18a --- /dev/null +++ b/core/src/main/java/com/mango/core/treasurefairy/Compound.kt @@ -0,0 +1,6 @@ +package com.mango.core.treasurefairy + +data class Compound( + val elfId: Long, + val elfNum: Int +) \ No newline at end of file diff --git a/core/src/main/java/com/mango/core/treasurefairy/FairyInfo.kt b/core/src/main/java/com/mango/core/treasurefairy/FairyInfo.kt index 790b16197..1ce30ee13 100644 --- a/core/src/main/java/com/mango/core/treasurefairy/FairyInfo.kt +++ b/core/src/main/java/com/mango/core/treasurefairy/FairyInfo.kt @@ -8,4 +8,5 @@ data class FairyInfo( val elfLevel: Int = 0, val elfName: String = "", val elfPicUrl: String = "", + var selectedNum:Int ) : Serializable \ No newline at end of file diff --git a/core/src/main/java/com/mango/core/treasurefairy/FairyTestParam.kt b/core/src/main/java/com/mango/core/treasurefairy/FairyTestParam.kt new file mode 100644 index 000000000..27cadc204 --- /dev/null +++ b/core/src/main/java/com/mango/core/treasurefairy/FairyTestParam.kt @@ -0,0 +1,6 @@ +package com.mango.core.treasurefairy + +data class FairyTestParam( + val expendList: MutableList = arrayListOf(), + var level: Int = 0, +) \ No newline at end of file diff --git a/core/src/main/java/com/mango/core/treasurefairy/TestFairyRecordInfo.kt b/core/src/main/java/com/mango/core/treasurefairy/TestFairyRecordInfo.kt new file mode 100644 index 000000000..00d7b0a78 --- /dev/null +++ b/core/src/main/java/com/mango/core/treasurefairy/TestFairyRecordInfo.kt @@ -0,0 +1,10 @@ +package com.mango.core.treasurefairy + +data class TestFairyRecordInfo( + val compoundLevel: Int = 0, + val createTime: Long = 0, + val elfLevel: Int = 0, + val elfName: String = "", + val expendList: List = listOf(), + val recordId: Long = 0 +) diff --git a/core/src/main/java/com/mango/core/treasurefairy/TestResultInfo.kt b/core/src/main/java/com/mango/core/treasurefairy/TestResultInfo.kt new file mode 100644 index 000000000..77bcdd999 --- /dev/null +++ b/core/src/main/java/com/mango/core/treasurefairy/TestResultInfo.kt @@ -0,0 +1,7 @@ +package com.mango.core.treasurefairy + +data class TestResultInfo( + val level: Int, + val fairyInfo: FairyInfo? +) + 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 d52cb1181..092d8e7a9 100644 --- a/core/src/main/java/com/mango/core/treasurefairy/TreasureFairyModel.kt +++ b/core/src/main/java/com/mango/core/treasurefairy/TreasureFairyModel.kt @@ -3,6 +3,7 @@ package com.mango.core.treasurefairy import com.mango.core.bean.response.ServiceResult import com.mango.core.gift.bean.SimpleUserInfo import com.mango.core.manager.AvRoomDataManager +import com.mango.core.mentoring_relationship.bean.SimpleGiftVo import com.mango.core.utils.net.launchRequest import com.mango.xchat_android_library.net.rxnet.RxNet import retrofit2.http.* @@ -65,6 +66,17 @@ object TreasureFairyModel { api.getSendFairyList(page, pageSize) } + suspend fun testFairy(fairyTestParam: FairyTestParam): FairyInfo? = launchRequest { + api.testFairy(fairyTestParam) + } + + suspend fun getTestFairyRecordList( + page: Int, + pageSize: Int + ): List? = launchRequest { + api.getTestFairyRecordList(page, pageSize) + } + private interface Api { @@ -176,6 +188,22 @@ object TreasureFairyModel { @Query("pageSize") pageSize: Int ): ServiceResult> + /** + * 合成礼物 + */ + @POST("act/seize-treasure/elf/compound") + suspend fun testFairy(@Body fairyTestParam: FairyTestParam): ServiceResult + + /** + * 合成礼物记录 + * + */ + @GET("act/seize-treasure/elf/compound/record") + suspend fun getTestFairyRecordList( + @Query("page") page: Int, + @Query("pageSize") pageSize: Int + ): ServiceResult> + } } \ No newline at end of file