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