diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4f8691d90..7f8a67ecc 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1290,7 +1290,7 @@ android:screenOrientation="portrait" /> diff --git a/app/src/main/java/com/mango/moshen/avroom/dialog/RoomPlayDialog.java b/app/src/main/java/com/mango/moshen/avroom/dialog/RoomPlayDialog.java index f08ed446d..92a5cfebb 100644 --- a/app/src/main/java/com/mango/moshen/avroom/dialog/RoomPlayDialog.java +++ b/app/src/main/java/com/mango/moshen/avroom/dialog/RoomPlayDialog.java @@ -15,7 +15,7 @@ import com.mango.moshen.R; import com.mango.moshen.databinding.DialogRoomPlayBinding; import com.mango.moshen.shipantics.PullRadishActivity; import com.mango.moshen.treasure_box.widget.GoldBoxHelper; -import com.mango.moshen.treasurefairy.HomeDialog; +import com.mango.moshen.treasurefairy.HomeFairyActivity; /** @@ -53,7 +53,7 @@ public class RoomPlayDialog extends BottomSheetDialog { private void init() { binding.llRadish.setVisibility(GoldBoxHelper.isShowRadish() ? View.VISIBLE : View.GONE); binding.llRadish.setOnClickListener(v -> PullRadishActivity.start(context)); - binding.llFairy.setOnClickListener(v -> HomeDialog.start(context)); + binding.llFairy.setOnClickListener(v -> HomeFairyActivity.start(context)); } } 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 f8070f4f2..a5b379f93 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/FairyViewModel.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/FairyViewModel.kt @@ -7,6 +7,7 @@ import com.mango.core.bean.response.ListResult import com.mango.core.home.bean.HomeRoomInfo import com.mango.core.home.model.HomeModel import com.mango.core.treasurefairy.DrawInfo +import com.mango.core.treasurefairy.ForestInfo import com.mango.core.treasurefairy.PrizeInfo import com.mango.core.treasurefairy.TreasureFairyModel import com.mango.core.utils.net.ServerException @@ -27,12 +28,24 @@ class FairyViewModel : BaseViewModel() { private val _showGetKeyLiveData = MutableLiveData>() val showGetKeyLiveData: LiveData> = _showGetKeyLiveData + private val _drawForestLiveData = MutableLiveData>>() + val drawForestLiveData: LiveData>> = _drawForestLiveData + + private val _forestInfoLiveData = MutableLiveData() + val forestInfoLiveData: LiveData = _forestInfoLiveData + + private val _forestPoolLiveData = MutableLiveData?>>() + val forestPoolLiveData: LiveData?>> = _forestPoolLiveData + + private val _forestRecordLiveData = MutableLiveData>() + val forestRecordLiveData: LiveData> = _forestRecordLiveData + init { initPrizeInfoList() } - fun initDrawInfo() { + fun initDrawInfo() { safeLaunch( onError = { _drawInfoLiveData.value = null @@ -71,4 +84,51 @@ class FairyViewModel : BaseViewModel() { } ) } + + fun drawForestFairy(drawNum: Int, poolLevel: Int) { + safeLaunch( + onError = { + it.message.toast() + _drawForestLiveData.value = null + }, + block = { + val result = TreasureFairyModel.drawForestFairy(drawNum, poolLevel) + _drawForestLiveData.value = result?.let { Event(it) } + } + ) + } + + fun getForestInfo() { + safeLaunch( + onError = { + _forestInfoLiveData.value = null + }, + block = { + _forestInfoLiveData.value = TreasureFairyModel.getForestInfo() + } + ) + } + + fun getForestPrizePool(poolLevel: Int) { + safeLaunch( + onError = { + _forestPoolLiveData.value = null + }, + block = { + _forestPoolLiveData.value = Pair(poolLevel,TreasureFairyModel.getForestPrizePool(poolLevel)) + } + ) + } + + fun getForestRecord() { + safeLaunch( + onError = { + _forestRecordLiveData.value = null + }, + block = { + _forestRecordLiveData.value = TreasureFairyModel.getForestRecord() + } + ) + } + } \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/ForestFairyDialog.kt b/app/src/main/java/com/mango/moshen/treasurefairy/ForestFairyDialog.kt new file mode 100644 index 000000000..4c23f2348 --- /dev/null +++ b/app/src/main/java/com/mango/moshen/treasurefairy/ForestFairyDialog.kt @@ -0,0 +1,93 @@ +package com.mango.moshen.treasurefairy + +import android.annotation.SuppressLint +import android.os.Bundle +import android.view.Gravity +import android.view.WindowManager +import androidx.core.view.isVisible +import androidx.fragment.app.activityViewModels +import com.mango.moshen.R +import com.mango.moshen.base.BaseDialog +import com.mango.moshen.databinding.TreasureFairyDialogForestBinding + +class ForestFairyDialog : BaseDialog() { + + override var width = WindowManager.LayoutParams.MATCH_PARENT + override var gravity = Gravity.BOTTOM + private val viewModel: FairyViewModel by activityViewModels() + private var currentType = 1 + + companion object { + fun newInstance(): ForestFairyDialog { + val args = Bundle() + val fragment = ForestFairyDialog() + fragment.arguments = args + return fragment + } + + const val BASE = 1 + const val EPIC = 2 + const val LEGEND = 3 + } + + + @SuppressLint("CheckResult") + override fun init() { + + binding.ivRecord.setOnClickListener { + ForestRecordDialog.newInstance().show(context) + } + + binding.ivPrevious.setOnClickListener { + currentType-- + switchType() + } + binding.ivNext.setOnClickListener { + currentType++ + switchType() + } + binding.viewBgGrab1.setOnClickListener { + viewModel.drawForestFairy(1, currentType) + } + + binding.viewBgGrab10.setOnClickListener { + viewModel.drawForestFairy(10, currentType) + } + + viewModel.drawForestLiveData.observe(viewLifecycleOwner) { + it?.getContentIfNotHandled()?.let { + ForestPrizeDialog.newInstance().show(context) + } + } + + } + + @SuppressLint("SetTextI18n") + private fun switchType() { + when (currentType) { + BASE -> { + binding.ivPrevious.isVisible = false + binding.tvGrabText1.text = "(初级球X1)" + binding.tvGrabText10.text = "(初级球X10)" + binding.tvTips.text = "使用初级球有一定几率抓到初级精灵" + binding.viewBgForestBase.setBackgroundResource(R.drawable.treasure_fairy_bg_forest_base) + } + EPIC -> { + binding.ivNext.isVisible = true + binding.ivNext.isVisible = true + binding.tvGrabText1.text = "(超级球X1)" + binding.tvGrabText10.text = "(超级球X10)" + binding.tvTips.text = "使用超级球有一定几率抓到史诗精灵" + binding.viewBgForestBase.setBackgroundResource(R.drawable.treasure_fairy_bg_forest_epic) + } + LEGEND -> { + binding.ivNext.isVisible = false + binding.tvGrabText1.text = "(大师球X1)" + binding.tvGrabText10.text = "(大师球X10)" + binding.tvTips.text = "使用大师球必定抓到传说精灵" + binding.viewBgForestBase.setBackgroundResource(R.drawable.treasure_fairy_bg_forest_legend) + } + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizeAdapter.kt b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizeAdapter.kt new file mode 100644 index 000000000..49b9c99db --- /dev/null +++ b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizeAdapter.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.moshen.R +import com.mango.moshen.ui.utils.load +import com.mango.core.treasurefairy.PrizeInfo + +class ForestPrizeAdapter : + BaseQuickAdapter(R.layout.treasure_fairy_item_forest_prize) { + + override fun convert(helper: BaseViewHolder, item: PrizeInfo) { + helper.getView(R.id.iv_prize_icon).load(item.rewardPicUrl) + helper.setText(R.id.tv_prize_name, "${item.rewardName}x${item.rewardNum}") + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizeDialog.kt b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizeDialog.kt new file mode 100644 index 000000000..24db60b7f --- /dev/null +++ b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizeDialog.kt @@ -0,0 +1,51 @@ +package com.mango.moshen.treasurefairy + +import android.annotation.SuppressLint +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.treasurefairy.PrizeInfo +import com.mango.moshen.base.BaseDialog +import com.mango.moshen.databinding.TreasureFairyDialogForestPrizeBinding +import com.mango.moshen.ui.utils.RVDelegate + +class ForestPrizeDialog : BaseDialog() { + + private lateinit var rvDelegate: RVDelegate + private lateinit var prizeAdapter: ForestPrizeAdapter + + 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(): ForestPrizeDialog { + val args = Bundle() + val fragment = ForestPrizeDialog() + fragment.arguments = args + return fragment + } + } + + @SuppressLint("CheckResult") + override fun init() { + binding.tvClose.setOnClickListener { + dismissAllowingStateLoss() + } + prizeAdapter = ForestPrizeAdapter() + rvDelegate = RVDelegate.Builder() + .setAdapter(prizeAdapter) + .setRecyclerView(binding.recyclerView) + .setLayoutManager(GridLayoutManager(context, 3, LinearLayoutManager.VERTICAL, false)) + .build() + + viewModel.drawForestLiveData.observe(viewLifecycleOwner) { event -> + rvDelegate.setNewData(event.peekContent()) + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizesChildAdapter.kt b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizesChildAdapter.kt new file mode 100644 index 000000000..36f31271c --- /dev/null +++ b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizesChildAdapter.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.moshen.R +import com.mango.moshen.ui.utils.load +import com.mango.core.treasurefairy.PrizeInfo + +class ForestPrizesChildAdapter : + BaseQuickAdapter(R.layout.treasure_fairy_item_forest_prizes_child) { + + override fun convert(helper: BaseViewHolder, item: PrizeInfo) { + helper.getView(R.id.iv_prize_icon).load(item.rewardPicUrl) + helper.setText(R.id.tv_prize_name, item.rewardName) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizesChildFragment.kt b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizesChildFragment.kt new file mode 100644 index 000000000..decf9a059 --- /dev/null +++ b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizesChildFragment.kt @@ -0,0 +1,54 @@ +package com.mango.moshen.treasurefairy + +import android.annotation.SuppressLint +import android.os.Bundle +import androidx.fragment.app.activityViewModels +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import com.mango.core.treasurefairy.PrizeInfo +import com.mango.moshen.base.BaseViewBindingFragment +import com.mango.moshen.databinding.TreasureFairyFragmentForestPrizesChildBinding +import com.mango.moshen.ui.utils.RVDelegate + +class ForestPrizesChildFragment : + BaseViewBindingFragment() { + + companion object { + fun newInstance(type: Int): ForestPrizesChildFragment { + val args = Bundle() + args.putInt("poolLevel", type) + val fragment = ForestPrizesChildFragment() + fragment.arguments = args + return fragment + } + } + + private lateinit var rvDelegate: RVDelegate + private lateinit var prizeAdapter: ForestPrizesChildAdapter + private val viewModel: FairyViewModel by activityViewModels() + + @SuppressLint("CheckResult") + override fun init() { + prizeAdapter = ForestPrizesChildAdapter() + rvDelegate = RVDelegate.Builder() + .setAdapter(prizeAdapter) + .setRecyclerView(binding.recyclerView) + .setLayoutManager(GridLayoutManager(context, 3, LinearLayoutManager.VERTICAL, false)) + .build() + + val poolLevel = requireArguments().getInt("poolLevel") + viewModel.getForestPrizePool(poolLevel) + + viewModel.forestPoolLiveData.observe(viewLifecycleOwner) { + it?.let { + if (it.first == poolLevel) { + rvDelegate.setNewData(it.second) + } + } ?: run { + rvDelegate.setNewData(null) + } + + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizesFragment.kt b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizesFragment.kt new file mode 100644 index 000000000..63163ea0c --- /dev/null +++ b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizesFragment.kt @@ -0,0 +1,57 @@ +package com.mango.moshen.treasurefairy + +import android.annotation.SuppressLint +import android.os.Bundle +import android.widget.LinearLayout +import android.widget.TextView +import androidx.fragment.app.Fragment +import androidx.viewpager.widget.ViewPager +import com.mango.moshen.base.BaseViewBindingFragment +import com.mango.moshen.databinding.TreasureFairyFragmentForestPrizesBinding +import com.mango.moshen.ui.user.UserInfoGiftFragment +import com.mango.moshen.ui.user.adapter.UserInfoIndicatorAdapter +import com.mango.moshen.ui.user.adapter.UserInfoPagerAdapter +import com.mango.moshen.ui.widget.magicindicator.MagicIndicator +import com.mango.moshen.ui.widget.magicindicator.ViewPagerHelper +import com.mango.moshen.ui.widget.magicindicator.buildins.commonnavigator.CommonNavigator + +class ForestPrizesFragment : BaseViewBindingFragment() { + + + companion object { + fun newInstance(): ForestPrizesFragment { + val args = Bundle() + val fragment = ForestPrizesFragment() + fragment.arguments = args + return fragment + } + } + + @SuppressLint("CheckResult") + override fun init() { + val viewPager: ViewPager = binding.viewPager + val magicIndicator: MagicIndicator = binding.magicIndicator + val fragmentList: MutableList = ArrayList() + fragmentList.add(ForestPrizesChildFragment.newInstance(1)) + fragmentList.add(ForestPrizesChildFragment.newInstance(2)) + fragmentList.add(ForestPrizesChildFragment.newInstance(3)) + val pagerAdapter = UserInfoPagerAdapter(childFragmentManager, fragmentList) + val tagList: MutableList = ArrayList() + tagList.add("初级森林") + tagList.add("史诗森林") + tagList.add("传说森林") + val commonNavigator = CommonNavigator(context) + commonNavigator.setTitleWrapContent(true) + val magicIndicatorAdapter = UserInfoIndicatorAdapter(context, tagList) + magicIndicatorAdapter.setOnItemSelectListener { position: Int, _: TextView -> + viewPager.currentItem = position + } + commonNavigator.adapter = magicIndicatorAdapter + magicIndicator.navigator = commonNavigator + commonNavigator.titleContainer.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + viewPager.offscreenPageLimit = 1 + viewPager.adapter = pagerAdapter + ViewPagerHelper.bind(magicIndicator, viewPager) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizesRecordAdapter.kt b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizesRecordAdapter.kt new file mode 100644 index 000000000..a1bfd0b6e --- /dev/null +++ b/app/src/main/java/com/mango/moshen/treasurefairy/ForestPrizesRecordAdapter.kt @@ -0,0 +1,30 @@ +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.moshen.R +import java.text.SimpleDateFormat +import java.util.* + +class ForestPrizesRecordAdapter : + BaseQuickAdapter(R.layout.treasure_fairy_item_forest_prizes_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: PrizeInfo) { + + helper.setText(R.id.tv_time_year, formatYear.format(item.drawTime)) + helper.setText(R.id.tv_time_hour, formatHour.format(item.drawTime)) + helper.setText(R.id.tv_prize_name, "${item.rewardName}x${item.rewardNum}") + helper.setText( + R.id.tv_prize_type, when (item.poolLevel) { + 1 -> "初级森林" + 2 -> "史诗森林" + else -> "传说森林" + } + ) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/ForestRecordDialog.kt b/app/src/main/java/com/mango/moshen/treasurefairy/ForestRecordDialog.kt new file mode 100644 index 000000000..edddd3c17 --- /dev/null +++ b/app/src/main/java/com/mango/moshen/treasurefairy/ForestRecordDialog.kt @@ -0,0 +1,57 @@ +package com.mango.moshen.treasurefairy + +import android.annotation.SuppressLint +import android.os.Bundle +import android.view.Gravity +import android.view.WindowManager +import androidx.viewpager.widget.ViewPager +import com.mango.moshen.R +import com.mango.moshen.avroom.adapter.RoomVPAdapter +import com.mango.moshen.base.BaseDialog +import com.mango.moshen.databinding.TreasureFairyDialogForestRecordBinding + +class ForestRecordDialog : BaseDialog() { + + + override var width = WindowManager.LayoutParams.MATCH_PARENT + override var height = WindowManager.LayoutParams.WRAP_CONTENT + override var gravity = Gravity.CENTER + + companion object { + fun newInstance(): ForestRecordDialog { + val args = Bundle() + val fragment = ForestRecordDialog() + fragment.arguments = args + return fragment + } + } + + @SuppressLint("CheckResult") + override fun init() { + binding.rootView.setOnClickListener { + dismissAllowingStateLoss() + } + binding.rg.setOnCheckedChangeListener { _, checkedId -> + when (checkedId) { + R.id.rb_prizes -> binding.viewPager.currentItem = 0 + R.id.rb_record -> binding.viewPager.currentItem = 1 + } + } + binding.viewPager.addOnPageChangeListener(object : ViewPager.SimpleOnPageChangeListener() { + override fun onPageSelected(position: Int) { + when (position) { + 0 -> binding.rg.check(R.id.rb_prizes) + 1 -> binding.rg.check(R.id.rb_record) + } + } + }) + binding.viewPager.adapter = RoomVPAdapter( + childFragmentManager, + listOf( + ForestPrizesFragment.newInstance(), + ForestRecordFragment.newInstance(), + ) + ) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/ForestRecordFragment.kt b/app/src/main/java/com/mango/moshen/treasurefairy/ForestRecordFragment.kt new file mode 100644 index 000000000..5f15f4c86 --- /dev/null +++ b/app/src/main/java/com/mango/moshen/treasurefairy/ForestRecordFragment.kt @@ -0,0 +1,44 @@ +package com.mango.moshen.treasurefairy + +import android.annotation.SuppressLint +import android.os.Bundle +import androidx.fragment.app.activityViewModels +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import com.mango.core.treasurefairy.PrizeInfo +import com.mango.moshen.base.BaseViewBindingFragment +import com.mango.moshen.databinding.TreasureFairyFragmentForestRecordBinding +import com.mango.moshen.ui.utils.RVDelegate + +class ForestRecordFragment : BaseViewBindingFragment() { + + + companion object { + fun newInstance(): ForestRecordFragment { + val args = Bundle() + val fragment = ForestRecordFragment() + fragment.arguments = args + return fragment + } + } + + private lateinit var rvDelegate: RVDelegate + private lateinit var prizeAdapter: ForestPrizesRecordAdapter + private val viewModel: FairyViewModel by activityViewModels() + + + @SuppressLint("CheckResult") + override fun init() { + + prizeAdapter = ForestPrizesRecordAdapter() + rvDelegate = RVDelegate.Builder() + .setAdapter(prizeAdapter) + .setRecyclerView(binding.recyclerView) + .setLayoutManager(LinearLayoutManager(context)) + .build() + viewModel.getForestRecord() + viewModel.forestRecordLiveData.observe(viewLifecycleOwner) { + rvDelegate.setNewData(it) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/HomeDialog.kt b/app/src/main/java/com/mango/moshen/treasurefairy/HomeFairyActivity.kt similarity index 95% rename from app/src/main/java/com/mango/moshen/treasurefairy/HomeDialog.kt rename to app/src/main/java/com/mango/moshen/treasurefairy/HomeFairyActivity.kt index 5ec7757f1..9ffc4b265 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/HomeDialog.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/HomeFairyActivity.kt @@ -5,7 +5,6 @@ import android.annotation.SuppressLint import android.content.Context import android.content.Intent import android.graphics.Path -import android.os.Bundle import android.view.* import android.widget.LinearLayout import android.widget.TextView @@ -26,7 +25,7 @@ import io.reactivex.disposables.Disposable import java.util.concurrent.TimeUnit -class HomeDialog : BaseViewBindingActivity() { +class HomeFairyActivity : BaseViewBindingActivity() { private var selectIndex = 0 private var targetIndex: Int = -1 private val removeRunnable = Runnable { binding.llPrizeHint.removeAllViews() } @@ -39,7 +38,7 @@ class HomeDialog : BaseViewBindingActivity() { companion object { @JvmStatic fun start(context: Context) { - val starter = Intent(context, HomeDialog::class.java) + val starter = Intent(context, HomeFairyActivity::class.java) context.startActivity(starter) } } @@ -52,25 +51,23 @@ class HomeDialog : BaseViewBindingActivity() { ) } - override fun onCreate(savedInstanceState: Bundle?) { - - super.onCreate(savedInstanceState) - } - @SuppressLint("SetTextI18n") override fun init() { //这里的height用MATCH_PARENT状态栏会被顶上去,不知道什么鬼 window.setLayout( WindowManager.LayoutParams.MATCH_PARENT, - ScreenUtil.screenHeight - ScreenUtil.getStatusBarHeight(context) + ScreenUtil.screenHeight - ScreenUtil.getStatusBarHeight(this) ) window.setGravity(Gravity.BOTTOM) looperHintPrize() binding.tvKeyNum.setOnClickListener { - FairyDialogWebViewActivity.start(context, UriProvider.getFairyKey()) + FairyDialogWebViewActivity.start(this, UriProvider.getFairyKey()) } binding.ivMyFairy.setOnClickListener { - MyFairyDialog.newInstance().show(context) + MyFairyDialog.newInstance().show(this) + } + binding.ivFairyTreasure.setOnClickListener { + ForestFairyDialog.newInstance().show(this) } binding.ivOpen1.setOnClickListener { rotatePrize() diff --git a/app/src/main/java/com/mango/moshen/treasurefairy/HomePrizeDialog.kt b/app/src/main/java/com/mango/moshen/treasurefairy/HomePrizeDialog.kt index 1d602aeff..c274fd9f4 100644 --- a/app/src/main/java/com/mango/moshen/treasurefairy/HomePrizeDialog.kt +++ b/app/src/main/java/com/mango/moshen/treasurefairy/HomePrizeDialog.kt @@ -15,11 +15,11 @@ import com.mango.moshen.ui.utils.RVDelegate class HomePrizeDialog : BaseDialog() { - private lateinit var rvDelegate: RVDelegate - private val prizeAdapter = HomePrizeAdapter() - override var width = WindowManager.LayoutParams.MATCH_PARENT override var gravity = Gravity.BOTTOM + + private lateinit var rvDelegate: RVDelegate + private lateinit var prizeAdapter: HomePrizeAdapter private val viewModel: FairyViewModel by activityViewModels() companion object { @@ -36,11 +36,11 @@ class HomePrizeDialog : BaseDialog() { binding.rootView.setOnClickListener { dismissAllowingStateLoss() } - + prizeAdapter = HomePrizeAdapter() rvDelegate = RVDelegate.Builder() .setAdapter(prizeAdapter) .setRecyclerView(binding.recyclerView) - .setLayoutManager(GridLayoutManager(context,4, LinearLayoutManager.VERTICAL, false)) + .setLayoutManager(GridLayoutManager(context, 4, LinearLayoutManager.VERTICAL, false)) .build() viewModel.resultLiveData.observe(viewLifecycleOwner) { event -> diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest.png new file mode 100644 index 000000000..d3ad10587 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_adventure.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_adventure.png new file mode 100644 index 000000000..66792285f Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_adventure.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_base.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_base.png new file mode 100644 index 000000000..3512667f6 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_base.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_bottom.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_bottom.png new file mode 100644 index 000000000..f0fd10614 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_bottom.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_epic.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_epic.png new file mode 100644 index 000000000..82356cd19 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_epic.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_grab_1.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_grab_1.png new file mode 100644 index 000000000..e977856d8 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_grab_1.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_grab_10.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_grab_10.png new file mode 100644 index 000000000..99c29b66b Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_grab_10.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_legend.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_legend.png new file mode 100644 index 000000000..bc0a3c452 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_legend.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_pool.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_pool.png new file mode 100644 index 000000000..7f3c94613 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_pool.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_prize.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_prize.png new file mode 100644 index 000000000..b69a6d065 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_prize.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_prize_close.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_prize_close.png new file mode 100644 index 000000000..dfdfd7f85 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_prize_close.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_record.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_record.png new file mode 100644 index 000000000..eb6ba0782 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_record.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_title_prize_checked.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_title_prize_checked.png new file mode 100644 index 000000000..e17a06204 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_title_prize_checked.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_title_prize_unchecked.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_title_prize_unchecked.png new file mode 100644 index 000000000..3ac433b1c Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_title_prize_unchecked.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_title_record_checked.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_title_record_checked.png new file mode 100644 index 000000000..5c3cf43db Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_title_record_checked.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_title_record_unchecked.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_title_record_unchecked.png new file mode 100644 index 000000000..163109c99 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_bg_forest_title_record_unchecked.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_ic_forest_next.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_ic_forest_next.png new file mode 100644 index 000000000..3800a04e4 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_ic_forest_next.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_ic_forest_record.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_ic_forest_record.png new file mode 100644 index 000000000..7505d2571 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_ic_forest_record.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_ic_forest_store.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_ic_forest_store.png new file mode 100644 index 000000000..a90e618c2 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_ic_forest_store.png differ diff --git a/app/src/main/res/drawable-xhdpi/treasure_fairy_ic_forest_title.png b/app/src/main/res/drawable-xhdpi/treasure_fairy_ic_forest_title.png new file mode 100644 index 000000000..03e51145a Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/treasure_fairy_ic_forest_title.png differ diff --git a/app/src/main/res/drawable/selector_bg_fairy_forest_prize.xml b/app/src/main/res/drawable/selector_bg_fairy_forest_prize.xml new file mode 100644 index 000000000..a7bf64a32 --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_fairy_forest_prize.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/app/src/main/res/drawable/selector_bg_fairy_forest_record.xml b/app/src/main/res/drawable/selector_bg_fairy_forest_record.xml new file mode 100644 index 000000000..a5c89e2fb --- /dev/null +++ b/app/src/main/res/drawable/selector_bg_fairy_forest_record.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/app/src/main/res/layout/activity_elf_dialog_web_view.xml b/app/src/main/res/layout/activity_elf_dialog_web_view.xml index d26a13014..2dd2746ea 100644 --- a/app/src/main/res/layout/activity_elf_dialog_web_view.xml +++ b/app/src/main/res/layout/activity_elf_dialog_web_view.xml @@ -1,93 +1,97 @@ - + android:layout_height="match_parent"> - - - - - - - - - - - - - - - - - - - - - - + android:background="@drawable/bg_elf" + android:orientation="vertical"> - + - + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/treasure_fairy_dialog_forest.xml b/app/src/main/res/layout/treasure_fairy_dialog_forest.xml new file mode 100644 index 000000000..e1ef11277 --- /dev/null +++ b/app/src/main/res/layout/treasure_fairy_dialog_forest.xml @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/treasure_fairy_dialog_forest_prize.xml b/app/src/main/res/layout/treasure_fairy_dialog_forest_prize.xml new file mode 100644 index 000000000..96bb5a66e --- /dev/null +++ b/app/src/main/res/layout/treasure_fairy_dialog_forest_prize.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/treasure_fairy_dialog_forest_record.xml b/app/src/main/res/layout/treasure_fairy_dialog_forest_record.xml new file mode 100644 index 000000000..57935e78c --- /dev/null +++ b/app/src/main/res/layout/treasure_fairy_dialog_forest_record.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/treasure_fairy_fragment_forest_prizes.xml b/app/src/main/res/layout/treasure_fairy_fragment_forest_prizes.xml new file mode 100644 index 000000000..cc8861b3c --- /dev/null +++ b/app/src/main/res/layout/treasure_fairy_fragment_forest_prizes.xml @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/treasure_fairy_fragment_forest_prizes_child.xml b/app/src/main/res/layout/treasure_fairy_fragment_forest_prizes_child.xml new file mode 100644 index 000000000..8a75697aa --- /dev/null +++ b/app/src/main/res/layout/treasure_fairy_fragment_forest_prizes_child.xml @@ -0,0 +1,7 @@ + + + + diff --git a/app/src/main/res/layout/treasure_fairy_fragment_forest_record.xml b/app/src/main/res/layout/treasure_fairy_fragment_forest_record.xml new file mode 100644 index 000000000..8cac2a9c5 --- /dev/null +++ b/app/src/main/res/layout/treasure_fairy_fragment_forest_record.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/treasure_fairy_item_forest_prize.xml b/app/src/main/res/layout/treasure_fairy_item_forest_prize.xml new file mode 100644 index 000000000..7a390bcf5 --- /dev/null +++ b/app/src/main/res/layout/treasure_fairy_item_forest_prize.xml @@ -0,0 +1,36 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/treasure_fairy_item_forest_prizes_child.xml b/app/src/main/res/layout/treasure_fairy_item_forest_prizes_child.xml new file mode 100644 index 000000000..60adcd6a6 --- /dev/null +++ b/app/src/main/res/layout/treasure_fairy_item_forest_prizes_child.xml @@ -0,0 +1,36 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/treasure_fairy_item_forest_prizes_record.xml b/app/src/main/res/layout/treasure_fairy_item_forest_prizes_record.xml new file mode 100644 index 000000000..fd88c025e --- /dev/null +++ b/app/src/main/res/layout/treasure_fairy_item_forest_prizes_record.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 0878b9bee..7fb90654c 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -606,4 +606,5 @@ #5FCCE4 #161958 #BABBCD + #1f5764 diff --git a/core/src/main/java/com/mango/core/treasurefairy/ForestInfo.kt b/core/src/main/java/com/mango/core/treasurefairy/ForestInfo.kt new file mode 100644 index 000000000..7c158fcd8 --- /dev/null +++ b/core/src/main/java/com/mango/core/treasurefairy/ForestInfo.kt @@ -0,0 +1,11 @@ +package com.mango.core.treasurefairy + +data class ForestInfo( + val avatar: String = "", + val erbanNo: Int = 0, + val highBallNum: Int = 0, + val lowBallNum: Int = 0, + val middleBallNum: Int = 0, + val nick: String = "", + val uid: Int = 0 +) \ No newline at end of file diff --git a/core/src/main/java/com/mango/core/treasurefairy/PrizeInfo.kt b/core/src/main/java/com/mango/core/treasurefairy/PrizeInfo.kt index 6b27465dd..02ac10cdc 100644 --- a/core/src/main/java/com/mango/core/treasurefairy/PrizeInfo.kt +++ b/core/src/main/java/com/mango/core/treasurefairy/PrizeInfo.kt @@ -8,9 +8,10 @@ data class PrizeInfo( val rewardLevel: Int = 0, val rewardPicUrl: String = "", val rewardType: String = "", - val rewardUnit: String = "" -) -{ + val rewardUnit: String = "", + val drawTime: Long = 0, + val poolLevel: Int = 0 +) { override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false 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 e906935c7..5b717637f 100644 --- a/core/src/main/java/com/mango/core/treasurefairy/TreasureFairyModel.kt +++ b/core/src/main/java/com/mango/core/treasurefairy/TreasureFairyModel.kt @@ -4,10 +4,7 @@ import com.mango.core.bean.response.ServiceResult import com.mango.core.manager.AvRoomDataManager import com.mango.core.utils.net.launchRequest import com.mango.xchat_android_library.net.rxnet.RxNet -import retrofit2.http.Field -import retrofit2.http.FormUrlEncoded -import retrofit2.http.GET -import retrofit2.http.POST +import retrofit2.http.* object TreasureFairyModel { @@ -25,10 +22,27 @@ object TreasureFairyModel { api.getPrizeInfoList() } + suspend fun drawForestFairy(drawNum: Int, poolLevel: Int): List? = launchRequest { + api.drawForestFairy(drawNum, poolLevel) + } + + suspend fun getForestRecord(): List? = launchRequest { + api.getForestRecord() + } + + suspend fun getForestPrizePool(poolLevel: Int): List? = launchRequest { + api.getForestPrizePool(poolLevel) + } + + suspend fun getForestInfo(): ForestInfo? = launchRequest { + api.getForestInfo() + } + + private interface Api { /** - * + * 夺宝 * * @param drawNum * @return @@ -43,8 +57,46 @@ object TreasureFairyModel { @GET("act/seize-treasure/user/draw/info") suspend fun getDrawInfo(): ServiceResult + /** + * 奖池列表 + * + */ @GET("act/seize-treasure/draw/pool/list") suspend fun getPrizeInfoList(): ServiceResult> + + /** + * 猛犸森林抽奖 + * + */ + @FormUrlEncoded + @POST("act/seize-treasure/forest/draw") + suspend fun drawForestFairy( + @Field("drawNum") drawNum: Int, + @Field("poolLevel") poolLevel: Int + ): ServiceResult> + + /** + * 猛犸森林抽奖记录 + * + */ + @GET("act/seize-treasure/forest/draw/record") + suspend fun getForestRecord(): ServiceResult> + + /** + * + * 猛犸森林奖池配置列表 + * + */ + @GET("act/seize-treasure/draw/forest/item") + suspend fun getForestPrizePool(@Query("poolLevel") poolLevel: Int): ServiceResult> + + /** + * + * 猛犸森林奖池配置列表 + * + */ + @GET("act/seize-treasure/user/forest/info") + suspend fun getForestInfo(): ServiceResult } } \ No newline at end of file