Browse Source

移除房间PK

DoggyZhang 1 năm trước cách đây
mục cha
commit
d347746305
100 tập tin đã thay đổi với 0 bổ sung5634 xóa
  1. 0 1
      app/build.gradle
  2. 0 71
      app/src/main/java/com/adealink/weparty/module/bettingpk/BettingPKModule.kt
  3. 0 22
      app/src/main/java/com/adealink/weparty/module/bettingpk/IBettingPKService.kt
  4. 0 15
      app/src/main/java/com/adealink/weparty/module/bettingpk/IBettingPkRoomEntranceView.kt
  5. 0 60
      app/src/main/java/com/adealink/weparty/module/bettingpk/Router.kt
  6. 0 186
      app/src/main/java/com/adealink/weparty/module/bettingpk/data/BettingPKData.kt
  7. 0 23
      app/src/main/java/com/adealink/weparty/module/bettingpk/viewmodel/IBettingPKViewModel.kt
  8. 0 9
      app/src/main/java/com/adealink/weparty/module/room/data/RoomNotifyData.kt
  9. 0 1
      module/bettingpk/.gitignore
  10. 0 50
      module/bettingpk/build.gradle
  11. 0 15
      module/bettingpk/src/main/AndroidManifest.xml
  12. BIN
      module/bettingpk/src/main/assets/betting_pk_bg.svga
  13. BIN
      module/bettingpk/src/main/assets/betting_pk_progress_indicator.svga
  14. BIN
      module/bettingpk/src/main/assets/betting_pk_vs.mp4
  15. 0 309
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/BettingPKDialog.kt
  16. 0 56
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/BettingPKServiceImpl.kt
  17. 0 397
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/MyBettingPKDialog.kt
  18. 0 37
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/adapter/AddBetInfoItemViewBinder.kt
  19. 0 57
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/adapter/BetInfoItemViewBinder.kt
  20. 0 5
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/adapter/IAddBetInfoListener.kt
  21. 0 168
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/adapter/InPKItemViewBinder.kt
  22. 0 167
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/adapter/PKResultItemViewBinder.kt
  23. 0 26
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/adapter/TimeItemViewBinder.kt
  24. 0 91
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/adapter/WaitForPKItemViewBinder.kt
  25. 0 182
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/comp/MyPkInfoComp.kt
  26. 0 18
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/data/Constants.kt
  27. 0 75
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/data/Data.kt
  28. 0 2
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/data/Error.kt
  29. 0 3
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/data/TAG.kt
  30. 0 17
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/datasource/local/BettingPKLocalService.kt
  31. 0 69
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/datasource/remote/BettingPKHttpService.kt
  32. 0 160
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/dialog/BettingPKAcceptChallengeDialog.kt
  33. 0 113
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/dialog/BettingPKAlertDialog.kt
  34. 0 95
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/dialog/BettingPKClickAvatarDialog.kt
  35. 0 240
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/dialog/BettingPKInviteDialog.kt
  36. 0 143
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/dialog/BettingPKRecordDialog.kt
  37. 0 332
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/dialog/BettingPKResultDialog.kt
  38. 0 61
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/dialog/BettingPKRuleDialog.kt
  39. 0 133
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/fragment/InPkFragment.kt
  40. 0 144
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/fragment/PkResultFragment.kt
  41. 0 240
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/fragment/WaitForPkFragment.kt
  42. 0 26
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/itemdata/BetInfoItemData.kt
  43. 0 14
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/itemdata/BetListItemDiffUtil.kt
  44. 0 52
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/itemdata/PKItemData.kt
  45. 0 14
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/itemdata/PKListItemDiffUtil.kt
  46. 0 283
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/manager/BettingPKManager.kt
  47. 0 37
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/manager/IBettingPKManager.kt
  48. 0 11
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/viewmodel/BettingPKEffectViewModel.kt
  49. 0 129
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/viewmodel/BettingPKListViewModel.kt
  50. 0 24
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/viewmodel/BettingPKPageViewModel.kt
  51. 0 102
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/viewmodel/BettingPKRecordViewModel.kt
  52. 0 306
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/viewmodel/BettingPKViewModel.kt
  53. 0 26
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/viewmodel/BettingPKViewModelFactory.kt
  54. 0 168
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/widget/BettingPkAvatarViewSwitcher.kt
  55. 0 54
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/widget/BettingPkEntranceView.kt
  56. 0 82
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/widget/BettingPkProgressView.kt
  57. 0 61
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/widget/BettingPkWaitingView.kt
  58. 0 250
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/widget/PkProgress.kt
  59. 0 188
      module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/widget/RoomBettingPkEntranceView.kt
  60. 0 7
      module/bettingpk/src/main/res/anim/betting_pk_avatar_in_anim.xml
  61. 0 7
      module/bettingpk/src/main/res/anim/betting_pk_avatar_out_anim.xml
  62. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_add_bet_ic.png
  63. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_add_bet_info_ic.png
  64. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_alert_dialog_bg.png
  65. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_alert_dialog_top_ic.png
  66. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_bet_info_item_bg.png
  67. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_bet_info_item_bottom_ic.png
  68. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_bet_info_item_days_bg.9.png
  69. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_bet_info_item_shadow.png
  70. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_blue_button_bg.9.png
  71. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_cancel_btn.png
  72. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_cancel_btn_bg.9.png
  73. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_challenge_btn.png
  74. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_confirm_btn.png
  75. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_content_top_left_ic.png
  76. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_content_top_right_ic.png
  77. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_count_down_ic.png
  78. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_count_down_title_bg.png
  79. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_dialog_title_ic.png
  80. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_draw_title_ic.png
  81. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_duration_select_bg.9.png
  82. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_duration_unselect_bg.9.png
  83. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_entrance_bg.png
  84. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_entrance_go_ic.png
  85. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_go_profile_ic.png
  86. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_go_room_ic.png
  87. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_gray_button_bg.9.png
  88. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_left_draw_ic.png
  89. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_left_lose_ic.png
  90. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_left_win_ic.png
  91. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_left_win_result_bg.png
  92. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_left_win_result_expand_bg.png
  93. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_list_bg.png
  94. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_lose_title_ic.png
  95. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_my_pk_bg.png
  96. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_my_pk_title_bg.png
  97. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_pking_bg.png
  98. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_pking_expand_bg.png
  99. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_progress_highlight_ic.png
  100. BIN
      module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_record_ic.png

+ 0 - 1
app/build.gradle

@@ -220,7 +220,6 @@ android {
                        ':module:attribution',
                        ':module:userprotect',
                        ':module:medal',
-                       ':module:bettingpk',
                        ':module:micgrab',
                        ':module:moment',
                        ':module:youtube',

+ 0 - 71
app/src/main/java/com/adealink/weparty/module/bettingpk/BettingPKModule.kt

@@ -1,71 +0,0 @@
-package com.adealink.weparty.module.bettingpk
-
-import android.content.Context
-import androidx.fragment.app.FragmentManager
-import androidx.lifecycle.ViewModelStoreOwner
-import com.adealink.frame.aab.BaseDynamicModule
-import com.adealink.weparty.R
-import com.adealink.weparty.module.bettingpk.viewmodel.IBettingPKViewModel
-
-object BettingPKModule : BaseDynamicModule<IBettingPKService>(IBettingPKService::class), IBettingPKService {
-    override val moduleNameResId: Int
-        get() = R.string.module_betting_pk
-
-
-    override val featureName: String
-        get() = "bettingpk"
-
-    override fun emptyService(): IBettingPKService {
-        return object : IBettingPKService {
-            override fun initialize() {
-            }
-
-            override fun getBettingPkViewModel(owner: ViewModelStoreOwner): IBettingPKViewModel? {
-                return null
-            }
-
-            override suspend fun loadShowEntrance() {
-            }
-
-            override fun isShowEntrance(): Boolean {
-                return false
-            }
-
-            override fun getBettingPkRoomEntranceView(context: Context): IBettingPkRoomEntranceView? {
-                return null
-            }
-
-            override fun showGoProfileOrRoomDialog(fm: FragmentManager, uid: Long?, roomId: Long?) {
-            }
-
-            override fun getService(): IBettingPKService? {
-                return null
-            }
-
-        }
-    }
-
-    override fun initialize() {
-        return getService().initialize()
-    }
-
-    override fun getBettingPkViewModel(owner: ViewModelStoreOwner): IBettingPKViewModel? {
-        return getService().getBettingPkViewModel(owner)
-    }
-
-    override suspend fun loadShowEntrance() {
-        return getService().loadShowEntrance()
-    }
-
-    override fun isShowEntrance(): Boolean {
-        return getService().isShowEntrance()
-    }
-
-    override fun getBettingPkRoomEntranceView(context: Context): IBettingPkRoomEntranceView? {
-        return getService().getBettingPkRoomEntranceView(context)
-    }
-
-    override fun showGoProfileOrRoomDialog(fm: FragmentManager, uid: Long?, roomId: Long?) {
-        return getService().showGoProfileOrRoomDialog(fm, uid, roomId)
-    }
-}

+ 0 - 22
app/src/main/java/com/adealink/weparty/module/bettingpk/IBettingPKService.kt

@@ -1,22 +0,0 @@
-package com.adealink.weparty.module.bettingpk
-
-import android.content.Context
-import androidx.fragment.app.FragmentManager
-import androidx.lifecycle.ViewModelStoreOwner
-import com.adealink.frame.aab.IService
-import com.adealink.weparty.module.bettingpk.viewmodel.IBettingPKViewModel
-
-interface IBettingPKService : IService<IBettingPKService> {
-
-    fun initialize()
-
-    fun getBettingPkViewModel(owner: ViewModelStoreOwner): IBettingPKViewModel?
-
-    suspend fun loadShowEntrance()
-
-    fun isShowEntrance(): Boolean
-
-    fun getBettingPkRoomEntranceView(context: Context): IBettingPkRoomEntranceView?
-
-    fun showGoProfileOrRoomDialog(fm: FragmentManager, uid: Long?, roomId: Long?)
-}

+ 0 - 15
app/src/main/java/com/adealink/weparty/module/bettingpk/IBettingPkRoomEntranceView.kt

@@ -1,15 +0,0 @@
-package com.adealink.weparty.module.bettingpk
-
-import android.view.MotionEvent
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-
-interface IBettingPkRoomEntranceView {
-
-    fun updateBy(pkInfo: PKInfoData)
-    fun setOwnerAvatarClick(onClick: () -> Unit)
-    fun setOtherAvatarClick(onClick: () -> Unit)
-    fun setEntranceClick(onClick: () -> Unit)
-    fun isCollapse(): Boolean
-    fun onCollapseChanged(onChanged: (Boolean) -> Unit)
-    fun setCollapseLongPress(onLongPress: (e: MotionEvent) -> Unit)
-}

+ 0 - 60
app/src/main/java/com/adealink/weparty/module/bettingpk/Router.kt

@@ -1,60 +0,0 @@
-package com.adealink.weparty.module.bettingpk
-
-class BettingPK {
-    interface Common {
-        companion object {
-            const val EXTRA_PK_INFO = "extra_pk_info"
-            const val EXTRA_UID = "extra_uid"
-            const val EXTRA_ROOM_ID = "extra_room_id"
-        }
-    }
-
-    interface BettingPK {
-        companion object {
-            const val PATH = "/bettingPK"
-
-            const val EXTRA_TAB = "extra_tab"
-
-            const val TAB_WAIT_FOR_PK = 0 //等待PK(待挑战)
-            const val TAB_IN_PK = 1 //PK中
-            const val TAB_PK_RESULT = 2 //PK结果
-        }
-    }
-
-    interface MyBettingPk {
-        companion object {
-            const val PATH = "/myBettingPK"
-        }
-    }
-
-    interface Rule {
-        companion object {
-            const val PATH = "/bettingPkRule"
-        }
-    }
-
-    interface Result {
-        companion object {
-            const val PATH = "/bettingPkResult"
-        }
-    }
-
-    interface Record {
-        companion object {
-            const val PATH = "/bettingPkRecord"
-        }
-    }
-
-    interface InvitePk {
-        companion object {
-            const val PATH = "/bettingPkInvite"
-        }
-    }
-
-    interface AcceptChallenge {
-        companion object {
-            const val PATH = "/bettingPkAcceptChallenge"
-        }
-    }
-
-}

+ 0 - 186
app/src/main/java/com/adealink/weparty/module/bettingpk/data/BettingPKData.kt

@@ -1,186 +0,0 @@
-package com.adealink.weparty.module.bettingpk.data
-
-import android.os.Parcelable
-import android.os.SystemClock
-import com.adealink.frame.data.json.froJsonErrorNull
-import com.google.gson.annotations.GsonNullable
-import com.google.gson.annotations.JsonAdapter
-import com.google.gson.annotations.SerializedName
-import com.google.gson.internal.bind.ExtReflectiveTypeAdapterFactory
-import kotlinx.parcelize.Parcelize
-
-
-enum class PKMode {
-    TEAM,
-}
-
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-data class RoomPkConfig(
-    @SerializedName("show")
-    val show: Boolean, //是否显示入口
-    @SerializedName("timeConfig")
-    val timeConfig: List<Int>, //pk时间配置,单位秒
-)
-
-/**
- * 参照:UserPackageInfo
- */
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-data class PkPackageInfos(
-    @SerializedName("id") val id: Long,
-    @GsonNullable
-    @SerializedName("goodsType") val goodsType: Int?,
-    @SerializedName("img") val img: String,
-    @SerializedName("intimacyType") val intimacyType: Int,
-    @SerializedName("linkId") val linkId: Int,
-    @SerializedName("type") val type: Int,
-    @SerializedName("value") val value: Long,
-    @SerializedName("num") val num: Int,
-)
-
-infix fun PkPackageInfos.contentsTheSame(other: PkPackageInfos?): Boolean {
-    other ?: return false
-    return id == other.id && img == other.img && type == other.type && value == other.value && num == other.num
-}
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-@Parcelize
-open class PKInfoData(
-    @SerializedName("gameId") val gameId: String = "",
-    @SerializedName("closeTime") val closeTime: Long = 0, //游戏结束倒计时,单位秒
-    @SerializedName("createTime") val createTime: Long = 0, //创建时间
-
-    @SerializedName("otherId") val otherId: String = "", //接受者对象id
-    @SerializedName("otherImg") val otherImg: String = "", //接受者图片
-    @SerializedName("otherName") val otherName: String = "", //接受者对象名称
-    @SerializedName("otherPackage") val otherPackageStr: String = "", //挑战者包裹信息
-    @SerializedName("otherScore") val otherScore: Long = 0, //接受者金币数
-    @SerializedName("otherUid") val otherUid: Long = 0, //接受者uid
-
-    @SerializedName("ownerId") val ownerId: String = "", //发起者对象id
-    @SerializedName("ownerImg") val ownerImg: String = "", //发起者图片
-    @SerializedName("ownerName") val ownerName: String = "", //发起者对象名称
-    @SerializedName("ownerPackage") val ownerPackageStr: String = "", //发起者包裹信息
-    @SerializedName("ownerScore") val ownerScore: Long = 0, //发起者金币数
-    @SerializedName("ownerUid") val ownerUid: Long = 0, //发起者uid
-
-    @SerializedName("pkBet") val pkBet: Int = 0, //是否有下注,1是有下注
-    @SerializedName("pkResult") val pkResult: Int = 0, //pk结果,0:平手,1:发起者,2:接受者
-    @SerializedName("pkType") val pkType: Int = 0, //pk类型,见SuperPkType,1房间pk
-    @SerializedName("region") val region: String = "", //大区
-    @SerializedName("startTime") val startTime: Long = 0, //开始时间
-    @SerializedName("status") val status: Int = 0, //状态,见SuperPkStatus, 0等待pk,2pk中,3已结束未发奖,4已结束已发奖
-    @SerializedName("time") val time: Long = 0, //设置的游戏时长,单位秒
-
-    @SerializedName("isOpen") val isOpen: Boolean = false // 是否公开到广场
-) : Parcelable {
-
-    var gameCloseTs: Long = 0
-    var ownerPackages: List<PkPackageInfos>? = null
-    var otherPackages: List<PkPackageInfos>? = null
-
-    fun initData() {
-        gameCloseTs = SystemClock.elapsedRealtime() + closeTime * 1000L
-        ownerPackages = if (ownerPackageStr.isEmpty()) {
-            emptyList()
-        } else {
-            froJsonErrorNull<List<PkPackageInfos>>(ownerPackageStr) ?: emptyList()
-        }
-        otherPackages = if (otherPackageStr.isEmpty()) {
-            emptyList()
-        } else {
-            froJsonErrorNull<List<PkPackageInfos>>(otherPackageStr) ?: emptyList()
-        }
-    }
-
-    fun hasBet(): Boolean {
-        return pkBet == 1
-    }
-
-    fun getPkResult(): BettingPkResult {
-        return BettingPkResult.getResultBy(pkResult) ?: BettingPkResult.OWNER
-    }
-
-    fun getStartTimeDay(): Long {
-        return startTime / 86400000 // 24 / 60 / 60 / 1000
-    }
-
-    fun getCloseLeftTime(): Long {
-        return maxOf(gameCloseTs - SystemClock.elapsedRealtime(), 0)
-    }
-
-    fun isWaiting(): Boolean {
-        return status == BettingPkStatus.WAIT.status || status == BettingPkStatus.WAIT_LOCK.status
-    }
-
-    fun isOver(): Boolean {
-        return gameId.isEmpty() ||
-                (status != BettingPkStatus.WAIT.status && status != BettingPkStatus.IN_PK.status)
-    }
-}
-
-infix fun PKInfoData.contentsTheSame(other: PKInfoData?): Boolean {
-    other ?: return false
-    return gameId == other.gameId
-            && ownerId == other.ownerId
-            && ownerUid == other.ownerUid
-            && ownerImg == other.ownerImg
-            && ownerName == other.ownerName
-            && otherId == other.otherId
-            && ownerUid == other.otherUid
-            && ownerImg == other.otherImg
-            && otherName == other.otherName
-            && pkBet == other.pkBet
-            && pkResult == other.pkResult
-            && status == other.status
-            && time == other.time
-}
-
-enum class BettingPkStatus(val status: Int) {
-    WAIT(0),
-    WAIT_LOCK(1), //锁定状态,也按照wait判断
-    IN_PK(2),
-    OVER(3),
-    OVER_REWARD(4);
-
-    companion object {
-        @JvmStatic
-        fun getStatusBy(status: Int?): BettingPkStatus? {
-            return BettingPkStatus.values().find { it.status == status }
-        }
-    }
-}
-
-enum class BettingPkTime(val time: Int, val duration: Long) {
-    MINUTES_10(10, 600),
-    MINUTES_60(60, 3600);
-
-    companion object {
-        @JvmStatic
-        fun getTimeBy(time: Int?): BettingPkTime? {
-            time ?: return null
-            return BettingPkTime.values().find { it.time == time }
-        }
-
-        @JvmStatic
-        fun getTimeBy(duration: Long?): BettingPkTime? {
-            duration ?: return null
-            return BettingPkTime.values().find { it.duration == duration }
-        }
-    }
-}
-
-enum class BettingPkResult(val result: Int) {
-    DRAW(0),
-    OWNER(1),
-    OTHER(2);
-
-    companion object {
-        @JvmStatic
-        fun getResultBy(result: Int?): BettingPkResult? {
-            result ?: return null
-            return BettingPkResult.values().find { it.result == result }
-        }
-    }
-}

+ 0 - 23
app/src/main/java/com/adealink/weparty/module/bettingpk/viewmodel/IBettingPKViewModel.kt

@@ -1,23 +0,0 @@
-package com.adealink.weparty.module.bettingpk.viewmodel
-
-import androidx.lifecycle.LiveData
-import com.adealink.frame.mvvm.livedata.ExtLiveData
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-
-interface IBettingPKViewModel {
-
-    val myPkInfoLD: LiveData<PKInfoData?>
-
-    val onInvitePkLD: ExtLiveData<PKInfoData>
-    val onAcceptPkLD: ExtLiveData<PKInfoData>
-    val onRejectPkLD: ExtLiveData<PKInfoData>
-    val onPkStartLD: ExtLiveData<PKInfoData>
-    val onPkUserStartLD: ExtLiveData<PKInfoData>
-    val onPkResultLD: ExtLiveData<PKInfoData>
-    val onPkScoreChangedLD: ExtLiveData<PKInfoData>
-
-    fun loadMyPkInfo()
-
-    fun loadPkInfo(roomId: Long): LiveData<PKInfoData?>
-
-}

+ 0 - 9
app/src/main/java/com/adealink/weparty/module/room/data/RoomNotifyData.kt

@@ -2,7 +2,6 @@ package com.adealink.weparty.module.room.data
 
 import android.os.Parcelable
 import com.adealink.weparty.module.anchor.data.AnchorMessageButton
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
 import com.adealink.weparty.module.profile.data.UserInfo
 import com.google.gson.annotations.GsonNullable
 import com.google.gson.annotations.JsonAdapter
@@ -101,8 +100,6 @@ data class GlobalRoomBroadcastNotify(
 //    val guardTreasureSuccessNotify: GuardTreasureSuccessBroadcastNotify? = null,
     @SerializedName("levelUpOtherNotify")
     val levelUpOtherNotify: LevelUpOtherNotify? = null,
-    @SerializedName("superPkInfo")
-    val bettingPkNotify: BettingPkNotify? = null,
     @SerializedName("teenPattiRewardNotify")
     val teenPattiRewardNotify: TeenPattiRewardNotify? = null,
     @SerializedName("goodsSendNotify")
@@ -412,12 +409,6 @@ data class LevelUpOtherNotify(
 )
 
 
-/**
- * 晋升等级
- */
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-class BettingPkNotify: PKInfoData()
-
 /**
  * TeenPatti头条
  */

+ 0 - 1
module/bettingpk/.gitignore

@@ -1 +0,0 @@
-/build

+ 0 - 50
module/bettingpk/build.gradle

@@ -1,50 +0,0 @@
-plugins {
-    id 'com.android.dynamic-feature'
-    id 'org.jetbrains.kotlin.android'
-    id 'org.jetbrains.kotlin.kapt'
-    id 'kotlin-parcelize'
-}
-android {
-    namespace 'com.adealink.weparty.bettingpk'
-    compileSdk libs.versions.compileSdk.get().toInteger()
-
-    defaultConfig {
-        applicationId "com.adealink.weparty.bettingpk"
-        minSdk libs.versions.minSdk.get().toInteger()
-        targetSdk libs.versions.targetSdk.get().toInteger()
-        versionCode 1
-        versionName "1.0"
-
-        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
-    }
-
-
-
-    buildTypes {
-        release {
-            debuggable false
-        }
-    }
-    viewBinding {
-        enabled = true
-    }
-    compileOptions {
-        sourceCompatibility JavaVersion.VERSION_17
-        targetCompatibility JavaVersion.VERSION_17
-    }
-
-    kotlinOptions {
-        jvmTarget = JavaVersion.VERSION_17.majorVersion
-    }
-}
-
-dependencies {
-    implementation project(":app")
-    //frame
-    kapt libs.frame.router.compiler
-
-    testImplementation 'junit:junit:4.+'
-    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
-    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
-    androidTestImplementation 'androidx.annotation:annotation:1.2.0'
-}

+ 0 - 15
module/bettingpk/src/main/AndroidManifest.xml

@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:dist="http://schemas.android.com/apk/distribution">
-
-    <dist:module
-        dist:instant="false"
-        dist:title="@string/module_betting_pk">
-        <dist:fusing dist:include="true" />
-        <dist:delivery>
-            <dist:install-time>
-                <dist:removable dist:value="true"/>
-            </dist:install-time>
-        </dist:delivery>
-    </dist:module>
-</manifest>

BIN
module/bettingpk/src/main/assets/betting_pk_bg.svga


BIN
module/bettingpk/src/main/assets/betting_pk_progress_indicator.svga


BIN
module/bettingpk/src/main/assets/betting_pk_vs.mp4


+ 0 - 309
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/BettingPKDialog.kt

@@ -1,309 +0,0 @@
-package com.adealink.weparty.bettingpk
-
-import android.graphics.Color
-import android.graphics.Typeface
-import android.graphics.drawable.ColorDrawable
-import android.os.Bundle
-import android.text.TextUtils
-import android.util.TypedValue
-import android.view.Gravity
-import android.view.LayoutInflater
-import android.view.Window
-import android.view.WindowManager
-import androidx.constraintlayout.widget.ConstraintLayout
-import androidx.core.view.updateLayoutParams
-import androidx.fragment.app.Fragment
-import androidx.fragment.app.activityViewModels
-import com.adealink.frame.aab.util.getCompatString
-import com.adealink.weparty.commonui.dialogfragment.BaseDialogFragment
-import com.adealink.weparty.commonui.dialogfragment.WheelDatePickerDialogFragment
-import com.adealink.weparty.commonui.ext.dp
-import com.adealink.weparty.commonui.ext.gone
-import com.adealink.weparty.commonui.ext.hide
-import com.adealink.weparty.commonui.ext.show
-import com.adealink.weparty.commonui.recycleview.adapter.BaseTabFragmentStateAdapter
-import com.adealink.frame.mvvm.view.viewBinding
-import com.adealink.frame.router.Router
-import com.adealink.frame.router.annotation.BindExtra
-import com.adealink.frame.router.annotation.RouterUri
-import com.adealink.frame.util.DisplayUtil
-import com.adealink.weparty.module.bettingpk.BettingPK.BettingPK.Companion.TAB_IN_PK
-import com.adealink.weparty.module.bettingpk.BettingPK.BettingPK.Companion.TAB_PK_RESULT
-import com.adealink.weparty.module.bettingpk.BettingPK.BettingPK.Companion.TAB_WAIT_FOR_PK
-import com.adealink.weparty.bettingpk.databinding.DialogBettingPkBinding
-import com.adealink.weparty.bettingpk.databinding.TabBettingPkItemBinding
-import com.adealink.weparty.bettingpk.fragment.InPkFragment
-import com.adealink.weparty.bettingpk.fragment.PkResultFragment
-import com.adealink.weparty.bettingpk.fragment.WaitForPkFragment
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKPageViewModel
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKViewModelFactory
-import com.adealink.weparty.module.bettingpk.BettingPK
-import com.google.android.material.tabs.TabLayout
-import com.google.android.material.tabs.TabLayoutMediator
-
-@RouterUri(path = [BettingPK.BettingPK.PATH], desc = "赌注PK")
-class BettingPKDialog : BaseDialogFragment(R.layout.dialog_betting_pk) {
-    private val binding by viewBinding(DialogBettingPkBinding::bind)
-    private val pageViewModel by activityViewModels<BettingPKPageViewModel> { BettingPKViewModelFactory() }
-
-    @BindExtra(BettingPK.BettingPK.EXTRA_TAB)
-    var initTabIndex: Int? = null
-
-    // pk结果按时间筛选
-    private var selectedTimestamp: Long = System.currentTimeMillis()
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        Router.bind(this)
-    }
-
-    override fun initViews() {
-        super.initViews()
-        if (initTabIndex == TAB_PK_RESULT) {
-            binding.ivResultCalendar.show()
-        }
-        binding.ivResultCalendar.setOnClickListener {
-            showWheelDatePicker()
-        }
-
-        binding.tvMyPk.setOnClickListener {
-            gotoMyPk()
-        }
-        binding.tab.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
-            override fun onTabSelected(tab: TabLayout.Tab?) {
-                tab ?: return
-                updateTabView(tab, true)
-                updateTabViewLine(tab.position)
-                updateTabViewBg(tab.position)
-                showDatePicker(tab.position)
-            }
-
-            override fun onTabUnselected(tab: TabLayout.Tab?) {
-                updateTabView(tab, false)
-            }
-
-            override fun onTabReselected(tab: TabLayout.Tab?) {
-            }
-        })
-        binding.vpPk.offscreenPageLimit = 2 // 全部加载
-        binding.vpPk.adapter = PkListPageAdapter()
-        TabLayoutMediator(binding.tab, binding.vpPk) { tab, position ->
-            val tabBinding = TabBettingPkItemBinding.inflate(
-                LayoutInflater.from(context),
-                null,
-                false
-            )
-            val tabIndex = getTabIndexBy(position)
-            tabBinding.tvTab.text = getTabNameByIndex(tabIndex)
-            tab.customView = tabBinding.root
-            val isSelected = initTabIndex == tabIndex
-            updateTabView(tab, isSelected)
-            if (isSelected) {
-                updateTabViewBg(position)
-            }
-        }.attach()
-
-        val currentPosition = tabIndexList.indexOf(initTabIndex ?: TAB_IN_PK)
-        if (currentPosition >= 0) {
-            binding.vpPk.currentItem = currentPosition
-        }
-    }
-
-    private fun updateTabView(tab: TabLayout.Tab?, isSelected: Boolean) {
-        tab?.customView?.let {
-            val customViewBinding = TabBettingPkItemBinding.bind(it)
-            if (isSelected) {
-                customViewBinding.tvTab.setMarqueeEnable(true, TextUtils.TruncateAt.END)
-                customViewBinding.tvTab.setBackgroundResource(R.drawable.betting_pk_tab_selected_bg)
-                customViewBinding.tvTab.typeface = Typeface.defaultFromStyle(Typeface.BOLD)
-                customViewBinding.tvTab.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18f)
-            } else {
-                customViewBinding.tvTab.setMarqueeEnable(false, TextUtils.TruncateAt.END)
-                customViewBinding.tvTab.setBackgroundResource(0)
-                customViewBinding.tvTab.typeface = Typeface.defaultFromStyle(Typeface.NORMAL)
-                customViewBinding.tvTab.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14f)
-            }
-        }
-    }
-
-    private fun updateTabViewLine(selectPosition: Int) {
-        for (i in 0 until binding.tab.tabCount) {
-            if (i == selectPosition - 1 || i == selectPosition) {
-                binding.tab.getTabAt(i)?.let { lastTab ->
-                    lastTab.customView?.let {
-                        val customViewBinding = TabBettingPkItemBinding.bind(it)
-                        customViewBinding.vLine.gone()
-                    }
-                }
-            } else {
-                binding.tab.getTabAt(i)?.let { lastTab ->
-                    lastTab.customView?.let {
-                        val customViewBinding = TabBettingPkItemBinding.bind(it)
-                        customViewBinding.vLine.show()
-                    }
-                }
-            }
-        }
-    }
-
-    private fun updateTabViewBg(selectPosition: Int) {
-        if (tabIndexList.isEmpty()) {
-            return
-        }
-        if (tabIndexList.size == 1) {
-            binding.vTabBg.updateLayoutParams<ConstraintLayout.LayoutParams> {
-                marginStart = 0
-                marginEnd = 0
-            }
-            return
-        }
-        when (selectPosition) {
-            0 -> {
-                binding.vTabBg.updateLayoutParams<ConstraintLayout.LayoutParams> {
-                    marginStart = 12.dp()
-                    marginEnd = 0
-                }
-            }
-
-            tabIndexList.size - 1 -> {
-                binding.vTabBg.updateLayoutParams<ConstraintLayout.LayoutParams> {
-                    marginStart = 0
-                    marginEnd = 12.dp()
-                }
-            }
-
-            else -> {
-                binding.vTabBg.updateLayoutParams<ConstraintLayout.LayoutParams> {
-                    marginStart = 0
-                    marginEnd = 0
-                }
-            }
-        }
-    }
-
-    private fun showDatePicker(tabPosition: Int) {
-        if (tabPosition == TAB_PK_RESULT) binding.ivResultCalendar.show() else binding.ivResultCalendar.hide()
-    }
-
-    private fun showWheelDatePicker() {
-        val initTime =
-            if (selectedTimestamp == 0L) System.currentTimeMillis() else selectedTimestamp
-        val dialog = WheelDatePickerDialogFragment.newInstance(
-            initTime
-        )
-        dialog.selectBirthdayCallback =
-            object : WheelDatePickerDialogFragment.ISelectDateCallback {
-                override fun onSelectComplete(timestamp: Long, yymmddStr: String) {
-                    updateListByChangeTime(timestamp)
-                }
-            }
-        activity?.let { dialog.show(it.supportFragmentManager, WheelDatePickerDialogFragment.SIMPLE_NAME) }
-    }
-
-    private fun updateListByChangeTime(timestamp: Long) {
-        selectedTimestamp = timestamp
-        pageViewModel.changeDate(timestamp)
-    }
-
-    private fun gotoMyPk() {
-        val act = activity ?: return
-        Router.getRouterInstance<BaseDialogFragment>(BettingPK.MyBettingPk.PATH)
-            ?.show(act.supportFragmentManager)
-        dismiss()
-    }
-
-    override fun observeViewModel() {
-        super.observeViewModel()
-        pageViewModel.changeTabAndRefreshLD.observeWithoutCache(this) {
-            val index = tabIndexList.indexOf(it)
-            if (index >= 0) {
-                binding.vpPk.currentItem = index
-            }
-        }
-        pageViewModel.dismissPageLD.observeWithoutCache(this) {
-            dismiss()
-        }
-    }
-
-    override fun resetWindowAttributes(window: Window) {
-        super.resetWindowAttributes(window)
-        window.setLayout(
-            WindowManager.LayoutParams.MATCH_PARENT,
-            minOf(DisplayUtil.getScreenHeight(), 600.dp())
-        )
-        window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
-        val attr = window.attributes
-        attr.gravity = Gravity.BOTTOM
-        attr.dimAmount = 0.7f
-        window.attributes = attr
-    }
-
-    internal inner class PkListPageAdapter : BaseTabFragmentStateAdapter(this) {
-
-        override fun getTabName(pos: Int): String {
-            return getTabNameByPos(pos)
-        }
-
-        override fun getItemCount(): Int {
-            return tabIndexList.size
-        }
-
-        override fun getItemId(position: Int): Long {
-            return getTabIndexBy(position)?.toLong() ?: 0L
-        }
-
-        override fun createFragment(position: Int): Fragment {
-            return when (getTabIndexBy(position)) {
-                TAB_WAIT_FOR_PK -> {
-                    WaitForPkFragment()
-                }
-
-                TAB_PK_RESULT -> {
-                    PkResultFragment()
-                }
-
-                else -> {
-                    //TAB_IN_PK
-                    InPkFragment()
-                }
-            }
-        }
-    }
-
-    companion object {
-        private val tabIndexList = listOf(
-            TAB_WAIT_FOR_PK,
-            TAB_IN_PK,
-            TAB_PK_RESULT
-        )
-
-        private fun getTabIndexBy(position: Int): Int? {
-            return tabIndexList.getOrNull(position)
-        }
-
-        private fun getTabNameByPos(position: Int): String {
-            return tabIndexList.getOrNull(position)?.let {
-                getTabNameByIndex(it)
-            } ?: ""
-        }
-
-        private fun getTabNameByIndex(index: Int?): String {
-            return when (index) {
-                TAB_WAIT_FOR_PK -> {
-                    getCompatString(R.string.betting_pk_wait)
-                }
-
-                TAB_IN_PK -> {
-                    getCompatString(R.string.betting_in_pk)
-                }
-
-                TAB_PK_RESULT -> {
-                    getCompatString(R.string.betting_pk_result)
-                }
-
-                else -> {
-                    ""
-                }
-            }
-        }
-    }
-}

+ 0 - 56
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/BettingPKServiceImpl.kt

@@ -1,56 +0,0 @@
-package com.adealink.weparty.bettingpk
-
-import android.content.Context
-import android.os.Bundle
-import androidx.fragment.app.FragmentManager
-import androidx.lifecycle.ViewModelProvider
-import androidx.lifecycle.ViewModelStoreOwner
-import com.adealink.weparty.commonui.dialogfragment.showDialogFragment
-import com.adealink.frame.spi.RegisterService
-import com.adealink.weparty.bettingpk.dialog.BettingPKClickAvatarDialog
-import com.adealink.weparty.bettingpk.manager.bettingPkManager
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKViewModel
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKViewModelFactory
-import com.adealink.weparty.module.bettingpk.viewmodel.IBettingPKViewModel
-import com.adealink.weparty.bettingpk.widget.RoomBettingPkEntranceView
-import com.adealink.weparty.module.bettingpk.BettingPK
-import com.adealink.weparty.module.bettingpk.IBettingPKService
-import com.adealink.weparty.module.bettingpk.IBettingPkRoomEntranceView
-
-@RegisterService(IBettingPKService::class)
-class BettingPKServiceImpl : IBettingPKService {
-    override fun initialize() {
-        return bettingPkManager.initialize()
-    }
-
-    override fun getBettingPkViewModel(owner: ViewModelStoreOwner): IBettingPKViewModel {
-        return ViewModelProvider(owner, BettingPKViewModelFactory())[BettingPKViewModel::class.java]
-    }
-
-    override suspend fun loadShowEntrance() {
-        return bettingPkManager.loadShowEntrance()
-    }
-
-    override fun isShowEntrance(): Boolean {
-        return bettingPkManager.isShowEntrance()
-    }
-
-    override fun getBettingPkRoomEntranceView(context: Context): IBettingPkRoomEntranceView {
-        return RoomBettingPkEntranceView(context)
-    }
-
-    override fun showGoProfileOrRoomDialog(fm: FragmentManager, uid: Long?, roomId: Long?) {
-        showDialogFragment<BettingPKClickAvatarDialog>(fm, Bundle().apply {
-            uid?.let {
-                putLong(BettingPK.Common.EXTRA_UID, it)
-            }
-            roomId?.let {
-                putLong(BettingPK.Common.EXTRA_ROOM_ID, it)
-            }
-        })
-    }
-
-    override fun getService(): IBettingPKService {
-        return this
-    }
-}

+ 0 - 397
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/MyBettingPKDialog.kt

@@ -1,397 +0,0 @@
-package com.adealink.weparty.bettingpk
-
-import android.content.DialogInterface
-import android.graphics.Color
-import android.graphics.drawable.ColorDrawable
-import android.os.Bundle
-import android.view.Gravity
-import android.view.Window
-import android.view.WindowManager
-import androidx.fragment.app.viewModels
-import com.adealink.frame.aab.util.getCompatColor
-import com.adealink.frame.aab.util.getCompatString
-import com.adealink.frame.base.Rlt
-import com.adealink.frame.base.fastLazy
-import com.adealink.weparty.commonui.BaseActivity
-import com.adealink.weparty.commonui.dialogfragment.BaseDialogFragment
-import com.adealink.weparty.commonui.dialogfragment.showDialogFragment
-import com.adealink.weparty.commonui.ext.gone
-import com.adealink.weparty.commonui.ext.hide
-import com.adealink.weparty.commonui.ext.show
-import com.adealink.weparty.commonui.toast.util.showToast
-import com.adealink.frame.log.Log
-import com.adealink.frame.mvvm.view.viewBinding
-import com.adealink.frame.router.Router
-import com.adealink.frame.router.annotation.RouterUri
-import com.adealink.frame.util.safeToLong
-import com.adealink.weparty.module.backpack.SelectUserPackageInfo
-import com.adealink.weparty.bettingpk.comp.MyPkInfoComp
-import com.adealink.weparty.bettingpk.data.BETTING_PK_BG_EFFECT
-import com.adealink.weparty.bettingpk.data.BETTING_PK_VS_EFFECT
-import com.adealink.weparty.module.bettingpk.data.BettingPkStatus
-import com.adealink.weparty.module.bettingpk.data.BettingPkTime
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.bettingpk.data.TAG_PK
-import com.adealink.weparty.bettingpk.databinding.DialogMyBettingPkBinding
-import com.adealink.weparty.bettingpk.dialog.BettingPKRecordDialog
-import com.adealink.weparty.bettingpk.dialog.BettingPKRuleDialog
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKEffectViewModel
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKListViewModel
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKViewModel
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKViewModelFactory
-import com.adealink.weparty.commonui.viewmodel.VapcEffectInfo
-import com.adealink.weparty.module.bettingpk.BettingPK
-import com.adealink.weparty.module.profile.ProfileModule
-import com.adealink.weparty.module.room.RoomModule
-import com.adealink.weparty.module.search.Search
-import com.adealink.weparty.module.search.SearchModule
-import com.tencent.qgame.animplayer.util.ScaleType
-import java.io.File
-import com.adealink.weparty.R as APP_R
-
-@RouterUri(path = [BettingPK.MyBettingPk.PATH], desc = "我的赌注PK")
-class MyBettingPKDialog : BaseDialogFragment(R.layout.dialog_my_betting_pk) {
-    private val binding by viewBinding(DialogMyBettingPkBinding::bind)
-    private val viewModel by viewModels<BettingPKViewModel>({ requireActivity() }) { BettingPKViewModelFactory() }
-    private val listViewModel by viewModels<BettingPKListViewModel>({ requireActivity() }) { BettingPKViewModelFactory() }
-    private val searchViewModel by fastLazy { SearchModule.getSearchViewModel(requireActivity()) }
-    private val effectViewModel by viewModels<BettingPKEffectViewModel>()
-    private var selectPkTime = BettingPkTime.MINUTES_10
-    private var myPkInfo: PKInfoData? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        Router.bind(this)
-    }
-
-    override fun initViews() {
-        super.initViews()
-        binding.root.setOnClickListener {
-            dismiss()
-        }
-        binding.clContainer.setOnClickListener {
-            //Ntd.
-        }
-        binding.ivRule.setOnClickListener {
-            val act = activity ?: return@setOnClickListener
-            showDialogFragment<BettingPKRuleDialog>(act.supportFragmentManager)
-        }
-        binding.ivRecord.setOnClickListener {
-            val act = activity ?: return@setOnClickListener
-            showDialogFragment<BettingPKRecordDialog>(act.supportFragmentManager)
-            dismiss()
-        }
-        binding.vBettingPkEntrance.setOnClickListener {
-            val act = activity ?: return@setOnClickListener
-            showDialogFragment<BettingPKDialog>(act.supportFragmentManager)
-            dismiss()
-        }
-        binding.tv10Min.text = getCompatString(R.string.betting_pk_duration_min, BettingPkTime.MINUTES_10.time.toString())
-        binding.tv10Min.setOnClickListener {
-            val myPkInfo = viewModel.getMyPkInfo()
-            if (myPkInfo != null && !myPkInfo.isOver()) {
-                return@setOnClickListener
-            }
-            clickPkDuration(BettingPkTime.MINUTES_10)
-        }
-        binding.tv60Min.text = getCompatString(R.string.betting_pk_duration_min, BettingPkTime.MINUTES_60.time.toString())
-        binding.tv60Min.setOnClickListener {
-            val myPkInfo = viewModel.getMyPkInfo()
-            if (myPkInfo != null && !myPkInfo.isOver()) {
-                return@setOnClickListener
-            }
-            clickPkDuration(BettingPkTime.MINUTES_60)
-        }
-    }
-
-    override fun initComponents() {
-        super.initComponents()
-        MyPkInfoComp(this, binding.clBetInfo) {
-            dismiss()
-        }.attach()
-    }
-
-    private fun updateByPkInfo(pkInfo: PKInfoData?) {
-        updatePkDuration(
-            BettingPkTime.getTimeBy(pkInfo?.time) ?: BettingPkTime.MINUTES_10
-        )
-        when (BettingPkStatus.getStatusBy(pkInfo?.status)) {
-            BettingPkStatus.WAIT,
-            BettingPkStatus.WAIT_LOCK -> {
-                binding.clDuration.gone()
-                //邀请他人
-                binding.tvLeftBtn.show()
-                binding.tvLeftBtn.setBackgroundResource(R.drawable.betting_pk_blue_button_bg)
-                binding.tvLeftBtn.text = getCompatString(R.string.betting_pk_invite_other)
-                binding.tvLeftBtn.setOnClickListener { inviteOthers() }
-
-                //随机PK
-                binding.tvRightBtn.show()
-                binding.tvRightBtn.setBackgroundResource(R.drawable.betting_pk_red_button_bg)
-                binding.tvRightBtn.text = getCompatString(R.string.betting_pk_random_match)
-                binding.tvRightBtn.setOnClickListener { randomPk() }
-
-                //取消
-                binding.tvCancelBtn.show()
-                binding.tvCancelBtn.setOnClickListener { cancelPk() }
-            }
-
-            BettingPkStatus.IN_PK -> {
-                binding.clDuration.gone()
-                binding.tvLeftBtn.gone()
-                binding.tvRightBtn.gone()
-                binding.tvCancelBtn.gone()
-            }
-
-            BettingPkStatus.OVER,
-            BettingPkStatus.OVER_REWARD,
-            null -> {
-                binding.clDuration.show()
-                //没有PK信息,需要重新发起PK
-                //邀请他人
-                binding.tvLeftBtn.show()
-                binding.tvLeftBtn.setBackgroundResource(R.drawable.betting_pk_blue_button_bg)
-                binding.tvLeftBtn.text = getCompatString(R.string.betting_pk_invite_other)
-                binding.tvLeftBtn.setOnClickListener { inviteOthers() }
-
-                //随机PK
-                binding.tvRightBtn.show()
-                binding.tvRightBtn.setBackgroundResource(R.drawable.betting_pk_red_button_bg)
-                binding.tvRightBtn.text = getCompatString(R.string.betting_pk_random_match)
-                binding.tvRightBtn.setOnClickListener { randomPk() }
-
-                binding.tvCancelBtn.gone()
-            }
-        }
-    }
-
-    override fun loadData() {
-        super.loadData()
-        viewModel.clearOwnerAddBet()
-        viewModel.loadMyPkInfo()
-        listViewModel.loadPkList(BettingPkStatus.IN_PK.status, 0, 3).observe(viewLifecycleOwner) { rlt ->
-            when (rlt) {
-                is Rlt.Failed -> {
-                    binding.vBettingPkEntrance.setAvatarList(
-                        listOf(Pair("", ""))
-                    )
-                }
-
-                is Rlt.Success -> {
-                    binding.vBettingPkEntrance.setAvatarList(
-                        rlt.data.map { Pair(it.ownerImg, it.otherImg) }
-                    )
-                }
-            }
-        }
-        effectViewModel.checkAndDownloadEffect(BETTING_PK_BG_EFFECT).observe(viewLifecycleOwner) {
-            if (it == null) {
-                Log.e(TAG_PK, "checkAndDownloadEffect($BETTING_PK_BG_EFFECT) fail.")
-                return@observe
-            }
-            playBgEffect(it)
-        }
-        activity?.let {
-            binding.vBettingPkEntrance.playVsEffect(it.assets, "betting_pk_vs.mp4")
-        } ?: let {
-            effectViewModel.checkAndDownloadEffect(BETTING_PK_VS_EFFECT).observe(viewLifecycleOwner) {
-                if (it == null) {
-                    Log.e(TAG_PK, "checkAndDownloadEffect($BETTING_PK_VS_EFFECT) fail.")
-                    return@observe
-                }
-                binding.vBettingPkEntrance.playVsEffect(it.localPath)
-            }
-        }
-    }
-
-    private fun playBgEffect(effect: VapcEffectInfo) {
-        binding.ivBg.hide()
-        binding.animBg.show()
-        binding.animBg.apply {
-            setMute(true)
-            setLoop(Int.MAX_VALUE)
-            autoDismiss(false)
-            setScaleType(ScaleType.FIT_CENTER)
-            startPlay(File(effect.localPath))
-        }
-    }
-
-    override fun observeViewModel() {
-        super.observeViewModel()
-        viewModel.myPkInfoLD.observe(this) {
-            myPkInfo = it
-            updateByPkInfo(it)
-        }
-        viewModel.onPkStartLD.observeWithoutCache(this) {
-            viewModel.loadMyPkInfo()
-        }
-        viewModel.onPkResultLD.observeWithoutCache(this) {
-            //检查是不是自己的比赛
-            val currentRoomId = RoomModule.getJoinedRoomId() ?: return@observeWithoutCache
-            val ownerRoomId = it.ownerId.safeToLong(0)
-            val otherRoomId = it.otherId.safeToLong(0)
-            if (currentRoomId != ownerRoomId && currentRoomId != otherRoomId) {
-                return@observeWithoutCache
-            }
-            viewModel.loadMyPkInfo()
-        }
-        searchViewModel?.inviteResultLD?.observeWithoutCache(this) {
-            val uid = it.uid
-            val roomOwnerUid = it.roomInfo?.owner
-            if (uid > 0) {
-                sendInvite(it.uid)
-            } else if (roomOwnerUid != null && roomOwnerUid > 0) {
-                sendInvite(roomOwnerUid)
-            } else {
-                Log.d(TAG_PK, "search invite info is invalid, uid:$uid, roomOwnerUid:$roomOwnerUid")
-            }
-        }
-    }
-
-    private fun clickPkDuration(time: BettingPkTime) {
-        selectPkTime = time
-        updatePkDuration(time)
-    }
-
-    private fun updatePkDuration(time: BettingPkTime) {
-        if (time == BettingPkTime.MINUTES_10) {
-            binding.tv10Min.setBackgroundResource(R.drawable.betting_pk_duration_select_bg)
-            binding.tv10Min.setTextColor(getCompatColor(APP_R.color.color_FF833900))
-
-            binding.tv60Min.setBackgroundResource(R.drawable.betting_pk_duration_unselect_bg)
-            binding.tv60Min.setTextColor(getCompatColor(APP_R.color.color_B3FFFFFF))
-        } else {
-            binding.tv10Min.setBackgroundResource(R.drawable.betting_pk_duration_unselect_bg)
-            binding.tv10Min.setTextColor(getCompatColor(APP_R.color.color_B3FFFFFF))
-
-            binding.tv60Min.setBackgroundResource(R.drawable.betting_pk_duration_select_bg)
-            binding.tv60Min.setTextColor(getCompatColor(APP_R.color.color_FF833900))
-        }
-    }
-
-    private fun cancelPk() {
-        val currentPkInfo = viewModel.getMyPkInfo()
-        if (currentPkInfo == null || currentPkInfo.gameId.isEmpty()) {
-            showToast(R.string.betting_pk_current_no_pk_info)
-            return
-        }
-        (activity as? BaseActivity)?.showLoading()
-        viewModel.cancelPk(currentPkInfo.gameId).observe(viewLifecycleOwner) {
-            (activity as? BaseActivity)?.dismissLoading()
-            showToast(it)
-        }
-    }
-
-    private fun inviteOthers() {
-        val act = activity ?: return
-        Router.getRouterInstance<BaseDialogFragment>(Search.SearchDialog.PATH)?.apply {
-            arguments = Bundle().apply {
-                putInt(Search.Search.EXTRA_SCENE, Search.Search.SCENE_INVITE)
-            }
-        }?.show(act.supportFragmentManager)
-    }
-
-    private fun randomPk() {
-        val myPkInfo = viewModel.getMyPkInfo()
-        if (myPkInfo == null || myPkInfo.isOver()) {
-            randomPkInner(selectPkTime, viewModel.getOwnerBetList()) {
-                viewModel.clearOwnerAddBet()
-                gotoPkDialog(BettingPK.BettingPK.TAB_WAIT_FOR_PK)
-                dismiss()
-            }
-        } else {
-            if (myPkInfo.isOpen) {
-                gotoPkDialog(BettingPK.BettingPK.TAB_WAIT_FOR_PK)
-                dismiss()
-            } else {
-                randomPkInner(BettingPkTime.getTimeBy(myPkInfo.time), null) {
-                    gotoPkDialog(BettingPK.BettingPK.TAB_WAIT_FOR_PK)
-                    dismiss()
-                }
-            }
-        }
-    }
-
-    private fun randomPkInner(
-        pkTime: BettingPkTime?,
-        betList: List<SelectUserPackageInfo>?,
-        successCallback: (() -> Unit)?
-    ) {
-        (activity as? BaseActivity)?.showLoading()
-        viewModel.randomPk(pkTime, betList).observe(viewLifecycleOwner) {
-            (activity as? BaseActivity)?.dismissLoading()
-            when (it) {
-                is Rlt.Failed -> {
-                    showToast(it)
-                }
-
-                is Rlt.Success -> {
-                    successCallback?.invoke()
-                }
-            }
-        }
-    }
-
-    private fun gotoPkDialog(tab: Int) {
-        activity?.let { act ->
-            showDialogFragment<BettingPKDialog>(act.supportFragmentManager, Bundle().apply {
-                putInt(BettingPK.BettingPK.EXTRA_TAB, tab)
-            })
-        }
-    }
-
-    private fun sendInvite(uid: Long) {
-        if (uid == ProfileModule.getMyUid()) {
-            //自己邀请自己
-            showToast(APP_R.string.common_can_not_invite_self)
-            return
-        }
-        val myPkInfo = viewModel.getMyPkInfo()
-        if (myPkInfo == null || myPkInfo.isOver()) {
-            createPk {
-                viewModel.clearOwnerAddBet()
-                sendInvite(uid)
-            }
-        } else {
-            (activity as? BaseActivity)?.showLoading()
-            viewModel.sendInvite(myPkInfo.gameId, uid).observe(viewLifecycleOwner) {
-                (activity as? BaseActivity)?.dismissLoading()
-                showToast(it)
-            }
-        }
-    }
-
-    private fun createPk(callback: () -> Unit) {
-        (activity as? BaseActivity)?.showLoading()
-        viewModel.createPk(selectPkTime, viewModel.getOwnerBetList(), false).observe(viewLifecycleOwner) {
-            (activity as? BaseActivity)?.dismissLoading()
-            when (it) {
-                is Rlt.Failed -> {
-                    showToast(it)
-                }
-
-                is Rlt.Success -> {
-                    callback.invoke()
-                }
-            }
-        }
-    }
-
-    override fun onDismiss(dialog: DialogInterface) {
-        super.onDismiss(dialog)
-        viewModel.clearOwnerAddBet()
-    }
-
-    override fun resetWindowAttributes(window: Window) {
-        super.resetWindowAttributes(window)
-        window.setLayout(
-            WindowManager.LayoutParams.MATCH_PARENT,
-            WindowManager.LayoutParams.MATCH_PARENT
-        )
-        window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
-        val attr = window.attributes
-        attr.gravity = Gravity.BOTTOM
-        attr.dimAmount = 0.7f
-        window.attributes = attr
-    }
-}

+ 0 - 37
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/adapter/AddBetInfoItemViewBinder.kt

@@ -1,37 +0,0 @@
-package com.adealink.weparty.bettingpk.adapter
-
-import android.view.LayoutInflater
-import android.view.ViewGroup
-import com.adealink.weparty.commonui.ext.hide
-import com.adealink.weparty.commonui.ext.show
-import com.adealink.weparty.commonui.recycleview.adapter.BindingViewHolder
-import com.adealink.weparty.commonui.recycleview.adapter.multitype.ItemViewBinder
-import com.adealink.weparty.bettingpk.databinding.LayoutBettingPkAddBetInfoItemBinding
-import com.adealink.weparty.bettingpk.itemdata.AddBetItemData
-
-class AddBetInfoItemViewBinder(
-    val showShadow: Boolean,
-    private val listener: IAddBetInfoListener
-) :
-    ItemViewBinder<AddBetItemData, BindingViewHolder<LayoutBettingPkAddBetInfoItemBinding>>() {
-    override fun onBindViewHolder(
-        holder: BindingViewHolder<LayoutBettingPkAddBetInfoItemBinding>,
-        item: AddBetItemData,
-    ) {
-        if (showShadow) {
-            holder.binding.ivShadow.show()
-        } else {
-            holder.binding.ivShadow.hide()
-        }
-        holder.binding.root.setOnClickListener {
-            listener.onAddBetInfoClick()
-        }
-    }
-
-    override fun onCreateViewHolder(
-        inflater: LayoutInflater,
-        parent: ViewGroup,
-    ): BindingViewHolder<LayoutBettingPkAddBetInfoItemBinding> {
-        return BindingViewHolder(LayoutBettingPkAddBetInfoItemBinding.inflate(inflater, parent, false))
-    }
-}

+ 0 - 57
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/adapter/BetInfoItemViewBinder.kt

@@ -1,57 +0,0 @@
-package com.adealink.weparty.bettingpk.adapter
-
-import android.view.LayoutInflater
-import android.view.ViewGroup
-import com.adealink.frame.aab.util.getCompatString
-import com.adealink.weparty.commonui.ext.hide
-import com.adealink.weparty.commonui.ext.show
-import com.adealink.weparty.commonui.recycleview.adapter.BindingViewHolder
-import com.adealink.weparty.commonui.recycleview.adapter.multitype.ItemViewBinder
-import com.adealink.frame.util.getRemainDay
-import com.adealink.weparty.module.backpack.PackageItemType
-import com.adealink.weparty.bettingpk.databinding.LayoutBettingPkBetInfoItemBinding
-import com.adealink.weparty.bettingpk.itemdata.BetInfoItemData
-import com.adealink.weparty.R as APP_R
-
-class BetInfoItemViewBinder(
-    val showShadow: Boolean,
-    private val addListener: IAddBetInfoListener? = null
-) :
-    ItemViewBinder<BetInfoItemData, BindingViewHolder<LayoutBettingPkBetInfoItemBinding>>() {
-    override fun onBindViewHolder(
-        holder: BindingViewHolder<LayoutBettingPkBetInfoItemBinding>,
-        item: BetInfoItemData,
-    ) {
-        holder.binding.root.setOnClickListener {
-            addListener?.onAddBetInfoClick()
-        }
-        if (showShadow) {
-            holder.binding.ivShadow.show()
-        } else {
-            holder.binding.ivShadow.hide()
-        }
-        when (PackageItemType.map(item.info.type)) {
-            PackageItemType.EXP, PackageItemType.GIFT -> {
-                holder.binding.tvRemainTime.hide()
-            }
-
-            else -> {
-                holder.binding.tvRemainTime.show()
-                holder.binding.tvRemainTime.text =
-                    getCompatString(
-                        APP_R.string.commonui_days,
-                        getRemainDay(item.info.value * 1000L)
-                    )
-            }
-        }
-        holder.binding.ivImg.setImageUrl(item.info.img)
-        holder.binding.tvCount.text = getCompatString(APP_R.string.common_count, item.info.num)
-    }
-
-    override fun onCreateViewHolder(
-        inflater: LayoutInflater,
-        parent: ViewGroup,
-    ): BindingViewHolder<LayoutBettingPkBetInfoItemBinding> {
-        return BindingViewHolder(LayoutBettingPkBetInfoItemBinding.inflate(inflater, parent, false))
-    }
-}

+ 0 - 5
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/adapter/IAddBetInfoListener.kt

@@ -1,5 +0,0 @@
-package com.adealink.weparty.bettingpk.adapter
-
-interface IAddBetInfoListener {
-    fun onAddBetInfoClick()
-}

+ 0 - 168
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/adapter/InPKItemViewBinder.kt

@@ -1,168 +0,0 @@
-package com.adealink.weparty.bettingpk.adapter
-
-import android.view.LayoutInflater
-import android.view.ViewGroup
-import androidx.appcompat.widget.AppCompatTextView
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.adealink.frame.aab.util.getCompatString
-import com.adealink.weparty.commonui.ext.dpf
-import com.adealink.weparty.commonui.ext.gone
-import com.adealink.weparty.commonui.ext.show
-import com.adealink.weparty.commonui.recycleview.adapter.BindingViewHolder
-import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
-import com.adealink.weparty.commonui.recycleview.adapter.multitype.ItemViewBinder
-import com.adealink.weparty.commonui.recycleview.itemdecoration.HorizontalItemDecoration
-import com.adealink.frame.util.safeToLong
-import com.adealink.frame.util.timeToHMS
-import com.adealink.weparty.bettingpk.R
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.bettingpk.databinding.LayoutBettingPkItemPkingBinding
-import com.adealink.weparty.bettingpk.itemdata.BetInfoItemData
-import com.adealink.weparty.bettingpk.itemdata.BetListItemDiffUtil
-import com.adealink.weparty.bettingpk.itemdata.InPKItemData
-import java.lang.ref.WeakReference
-import com.adealink.weparty.R as APP_R
-
-class InPKItemViewBinder(
-    val listener: IPkingListener? = null
-) :
-    ItemViewBinder<InPKItemData, InPKItemViewBinder.ViewHolder>() {
-
-    override fun onCreateViewHolder(
-        inflater: LayoutInflater,
-        parent: ViewGroup,
-    ): ViewHolder {
-        return ViewHolder(LayoutBettingPkItemPkingBinding.inflate(inflater, parent, false))
-    }
-
-    override fun onBindViewHolder(holder: ViewHolder, item: InPKItemData) {
-        holder.update(item)
-    }
-
-    inner class ViewHolder(binding: LayoutBettingPkItemPkingBinding) :
-        BindingViewHolder<LayoutBettingPkItemPkingBinding>(binding) {
-
-        private val betListLeftAdapter = MultiTypeListAdapter(BetListItemDiffUtil())
-        private val betListRightAdapter = MultiTypeListAdapter(BetListItemDiffUtil())
-
-        private var countDownUpdateTask: CountDownUpdateTask? = null
-
-        init {
-            binding.rvBetItemsLeft.apply {
-                betListLeftAdapter.register(BetInfoItemViewBinder(true))
-                layoutManager = LinearLayoutManager(binding.root.context, LinearLayoutManager.HORIZONTAL, true)
-                adapter = betListLeftAdapter
-                addItemDecoration(HorizontalItemDecoration(1.dpf(), 0f, 0f))
-            }
-
-            binding.rvBetItemsRight.apply {
-                betListRightAdapter.register(BetInfoItemViewBinder(true))
-                layoutManager = LinearLayoutManager(binding.root.context, LinearLayoutManager.HORIZONTAL, false)
-                adapter = betListRightAdapter
-                addItemDecoration(HorizontalItemDecoration(1.dpf(), 0f, 0f))
-            }
-            if (countDownUpdateTask == null) {
-                countDownUpdateTask = CountDownUpdateTask(binding.tvCountDown)
-            }
-        }
-
-        fun update(item: InPKItemData) {
-            binding.ivLeft.setImageUrl(item.data.ownerImg)
-            binding.tvNameLeft.text = item.data.ownerName
-            binding.tvIdLeft.text = getCompatString(APP_R.string.common_short_id, item.data.ownerId)
-            binding.ivLeft.setOnClickListener {
-                listener?.clickAvatar(item.data.ownerUid, item.data.ownerId.safeToLong(0))
-            }
-
-            binding.ivRight.setImageUrl(item.data.otherImg)
-            binding.tvNameRight.text = item.data.otherName
-            binding.tvIdRight.text = getCompatString(APP_R.string.common_short_id, item.data.otherId)
-            binding.ivRight.setOnClickListener {
-                listener?.clickAvatar(item.data.otherUid, item.data.otherId.safeToLong(0))
-            }
-
-            binding.vProgress.setProgress(item.data.ownerScore, item.data.otherScore)
-
-            if (item.data.hasBet()) {
-                binding.ivBg.setImageResource(R.drawable.betting_pk_pking_expand_bg)
-
-                binding.vBetItemsBottom.show()
-                binding.rvBetItemsLeft.show()
-                binding.rvBetItemsRight.show()
-                val ownerPackages = item.data.ownerPackages ?: emptyList()
-                betListLeftAdapter.submitList(
-                    ownerPackages.map { BetInfoItemData(it) }
-                )
-                val otherPackages = item.data.otherPackages ?: emptyList()
-                betListRightAdapter.submitList(
-                    otherPackages.map { BetInfoItemData(it) }
-                )
-            } else {
-                binding.ivBg.setImageResource(R.drawable.betting_pk_pking_bg)
-
-                binding.vBetItemsBottom.gone()
-                binding.rvBetItemsLeft.gone()
-                binding.rvBetItemsRight.gone()
-            }
-
-            binding.tvCountDown.text = timeToHMS(item.data.getCloseLeftTime())
-            countDownUpdateTask?.setPkInfo(item.data)
-            startCountDownTask()
-        }
-
-        fun startCountDownTask() {
-            val task = countDownUpdateTask ?: return
-            binding.tvCountDown.removeCallbacks(task)
-            binding.tvCountDown.postDelayed(task, COUNT_DOWN_UPDATE_TIME)
-        }
-
-        fun stopCountDownTask() {
-            val task = countDownUpdateTask ?: return
-            binding.tvCountDown.removeCallbacks(task)
-        }
-    }
-
-    override fun onViewAttachedToWindow(holder: ViewHolder) {
-        super.onViewAttachedToWindow(holder)
-        holder.startCountDownTask()
-    }
-
-    override fun onViewDetachedFromWindow(holder: ViewHolder) {
-        super.onViewDetachedFromWindow(holder)
-        holder.stopCountDownTask()
-    }
-
-    internal class CountDownUpdateTask(view: AppCompatTextView) : Runnable {
-        private val reference: WeakReference<AppCompatTextView>
-        private var pkInfo: PKInfoData? = null
-
-        init {
-            reference = WeakReference(view)
-        }
-
-        fun setPkInfo(pkInfoData: PKInfoData) {
-            this.pkInfo = pkInfoData
-        }
-
-        override fun run() {
-            val view = reference.get() ?: return
-            if (!view.isAttachedToWindow) {
-                return
-            }
-            val ms = pkInfo?.getCloseLeftTime() ?: 0L
-            view.text = timeToHMS(ms)
-            view.removeCallbacks(this)
-            if (ms > 0) {
-                view.postDelayed(this, COUNT_DOWN_UPDATE_TIME)
-            }
-        }
-    }
-
-    companion object {
-        private const val COUNT_DOWN_UPDATE_TIME = 1_000L
-    }
-
-    interface IPkingListener {
-        fun clickAvatar(uid: Long, roomId: Long)
-    }
-}

+ 0 - 167
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/adapter/PKResultItemViewBinder.kt

@@ -1,167 +0,0 @@
-package com.adealink.weparty.bettingpk.adapter
-
-import android.view.LayoutInflater
-import android.view.ViewGroup
-import androidx.constraintlayout.widget.ConstraintLayout
-import androidx.core.view.updateLayoutParams
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.adealink.frame.aab.util.getCompatString
-import com.adealink.weparty.commonui.ext.dp
-import com.adealink.weparty.commonui.ext.dpf
-import com.adealink.weparty.commonui.ext.gone
-import com.adealink.weparty.commonui.ext.show
-import com.adealink.weparty.commonui.recycleview.adapter.BindingViewHolder
-import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
-import com.adealink.weparty.commonui.recycleview.adapter.multitype.ItemViewBinder
-import com.adealink.weparty.commonui.recycleview.itemdecoration.HorizontalItemDecoration
-import com.adealink.frame.util.safeToLong
-import com.adealink.weparty.bettingpk.R
-import com.adealink.weparty.module.bettingpk.data.BettingPkResult
-import com.adealink.weparty.bettingpk.databinding.LayoutBettingPkItemResultBinding
-import com.adealink.weparty.bettingpk.itemdata.BetInfoItemData
-import com.adealink.weparty.bettingpk.itemdata.BetListItemDiffUtil
-import com.adealink.weparty.bettingpk.itemdata.PKResultItemData
-import com.adealink.weparty.R as APP_R
-
-class PKResultItemViewBinder(
-    val listener: IPkResultListener? = null
-) :
-    ItemViewBinder<PKResultItemData, PKResultItemViewBinder.ViewHolder>() {
-
-
-    override fun onCreateViewHolder(
-        inflater: LayoutInflater,
-        parent: ViewGroup,
-    ): ViewHolder {
-        return ViewHolder(LayoutBettingPkItemResultBinding.inflate(inflater, parent, false))
-    }
-
-    override fun onBindViewHolder(holder: ViewHolder, item: PKResultItemData) {
-        holder.update(item)
-    }
-
-
-    inner class ViewHolder(binding: LayoutBettingPkItemResultBinding) :
-        BindingViewHolder<LayoutBettingPkItemResultBinding>(binding) {
-
-        private val betListLeftAdapter = MultiTypeListAdapter(BetListItemDiffUtil())
-        private val betListRightAdapter = MultiTypeListAdapter(BetListItemDiffUtil())
-
-        init {
-            binding.rvBetItemsLeft.apply {
-                betListLeftAdapter.register(BetInfoItemViewBinder(true))
-                layoutManager = LinearLayoutManager(binding.root.context, LinearLayoutManager.HORIZONTAL, true)
-                adapter = betListLeftAdapter
-                addItemDecoration(HorizontalItemDecoration(1.dpf(), 0f, 0f))
-            }
-
-            binding.rvBetItemsRight.apply {
-                betListRightAdapter.register(BetInfoItemViewBinder(true))
-                layoutManager = LinearLayoutManager(binding.root.context, LinearLayoutManager.HORIZONTAL, false)
-                adapter = betListRightAdapter
-                addItemDecoration(HorizontalItemDecoration(1.dpf(), 0f, 0f))
-            }
-        }
-
-        fun update(item: PKResultItemData) {
-            when (item.data.getPkResult()) {
-                BettingPkResult.DRAW -> {
-                    binding.ivLeft.updateLayoutParams<ConstraintLayout.LayoutParams> {
-                        width = 48.dp()
-                        height = 48.dp()
-                        topMargin = 20.dp()
-                    }
-                    binding.ivRight.updateLayoutParams<ConstraintLayout.LayoutParams> {
-                        width = 48.dp()
-                        height = 48.dp()
-                        topMargin = 20.dp()
-                    }
-                    binding.ivLeftResult.setImageResource(R.drawable.betting_pk_left_draw_ic)
-                    binding.ivRightResult.setImageResource(R.drawable.betting_pk_right_draw_ic)
-                    if (item.data.hasBet()) {
-                        binding.ivBg.setImageResource(R.drawable.betting_pk_pking_expand_bg)
-                    } else {
-                        binding.ivBg.setImageResource(R.drawable.betting_pk_pking_bg)
-                    }
-                }
-
-                BettingPkResult.OWNER -> {
-                    binding.ivLeft.updateLayoutParams<ConstraintLayout.LayoutParams> {
-                        width = 56.dp()
-                        height = 56.dp()
-                        topMargin = 14.dp()
-                    }
-                    binding.ivRight.updateLayoutParams<ConstraintLayout.LayoutParams> {
-                        width = 48.dp()
-                        height = 48.dp()
-                        topMargin = 20.dp()
-                    }
-                    binding.ivLeftResult.setImageResource(R.drawable.betting_pk_left_win_ic)
-                    binding.ivRightResult.setImageResource(R.drawable.betting_pk_right_lose_ic)
-                    if (item.data.hasBet()) {
-                        binding.ivBg.setImageResource(R.drawable.betting_pk_left_win_result_expand_bg)
-                    } else {
-                        binding.ivBg.setImageResource(R.drawable.betting_pk_left_win_result_bg)
-                    }
-                }
-
-                BettingPkResult.OTHER -> {
-                    binding.ivLeft.updateLayoutParams<ConstraintLayout.LayoutParams> {
-                        width = 48.dp()
-                        height = 48.dp()
-                        topMargin = 20.dp()
-                    }
-                    binding.ivRight.updateLayoutParams<ConstraintLayout.LayoutParams> {
-                        width = 56.dp()
-                        height = 56.dp()
-                        topMargin = 14.dp()
-                    }
-                    binding.ivLeftResult.setImageResource(R.drawable.betting_pk_left_lose_ic)
-                    binding.ivRightResult.setImageResource(R.drawable.betting_pk_right_win_ic)
-                    if (item.data.hasBet()) {
-                        binding.ivBg.setImageResource(R.drawable.betting_pk_right_win_result_expand_bg)
-                    } else {
-                        binding.ivBg.setImageResource(R.drawable.betting_pk_right_win_result_bg)
-                    }
-                }
-            }
-            binding.ivLeft.setImageUrl(item.data.ownerImg)
-            binding.tvNameLeft.text = item.data.ownerName
-            binding.tvIdLeft.text = getCompatString(APP_R.string.common_short_id, item.data.ownerId)
-            binding.ivLeft.setOnClickListener {
-                listener?.clickAvatar(item.data.ownerUid, item.data.ownerId.safeToLong(0))
-            }
-
-            binding.ivRight.setImageUrl(item.data.otherImg)
-            binding.tvNameRight.text = item.data.otherName
-            binding.tvIdRight.text = getCompatString(APP_R.string.common_short_id, item.data.otherId)
-            binding.ivRight.setOnClickListener {
-                listener?.clickAvatar(item.data.otherUid, item.data.otherId.safeToLong(0))
-            }
-
-            binding.vProgress.setProgress(item.data.ownerScore, item.data.otherScore)
-
-            if (item.data.hasBet()) {
-                binding.vBetItemsBottom.show()
-                binding.rvBetItemsLeft.show()
-                binding.rvBetItemsRight.show()
-                val ownerPackages = item.data.ownerPackages ?: emptyList()
-                betListLeftAdapter.submitList(
-                    ownerPackages.map { BetInfoItemData(it) }
-                )
-                val otherPackages = item.data.otherPackages ?: emptyList()
-                betListRightAdapter.submitList(
-                    otherPackages.map { BetInfoItemData(it) }
-                )
-            } else {
-                binding.vBetItemsBottom.gone()
-                binding.rvBetItemsLeft.gone()
-                binding.rvBetItemsRight.gone()
-            }
-        }
-    }
-
-    interface IPkResultListener {
-        fun clickAvatar(uid: Long, roomId: Long)
-    }
-}

+ 0 - 26
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/adapter/TimeItemViewBinder.kt

@@ -1,26 +0,0 @@
-package com.adealink.weparty.bettingpk.adapter
-
-import android.view.LayoutInflater
-import android.view.ViewGroup
-import com.adealink.weparty.commonui.recycleview.adapter.BindingViewHolder
-import com.adealink.weparty.commonui.recycleview.adapter.multitype.ItemViewBinder
-import com.adealink.frame.util.timeToEnYMD
-import com.adealink.weparty.bettingpk.databinding.LayoutBettingPkItemTimeBinding
-import com.adealink.weparty.bettingpk.itemdata.RecordTimeItemData
-
-class TimeItemViewBinder :
-    ItemViewBinder<RecordTimeItemData, BindingViewHolder<LayoutBettingPkItemTimeBinding>>() {
-    override fun onBindViewHolder(
-        holder: BindingViewHolder<LayoutBettingPkItemTimeBinding>,
-        item: RecordTimeItemData,
-    ) {
-        holder.binding.tvTime.text = timeToEnYMD(item.time)
-    }
-
-    override fun onCreateViewHolder(
-        inflater: LayoutInflater,
-        parent: ViewGroup,
-    ): BindingViewHolder<LayoutBettingPkItemTimeBinding> {
-        return BindingViewHolder(LayoutBettingPkItemTimeBinding.inflate(inflater, parent, false))
-    }
-}

+ 0 - 91
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/adapter/WaitForPKItemViewBinder.kt

@@ -1,91 +0,0 @@
-package com.adealink.weparty.bettingpk.adapter
-
-import android.view.LayoutInflater
-import android.view.ViewGroup
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.adealink.frame.aab.util.getCompatString
-import com.adealink.weparty.commonui.ext.dpf
-import com.adealink.weparty.commonui.ext.gone
-import com.adealink.weparty.commonui.ext.show
-import com.adealink.weparty.commonui.recycleview.adapter.BindingViewHolder
-import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
-import com.adealink.weparty.commonui.recycleview.adapter.multitype.ItemViewBinder
-import com.adealink.weparty.commonui.recycleview.itemdecoration.HorizontalItemDecoration
-import com.adealink.frame.util.safeToLong
-import com.adealink.weparty.bettingpk.R
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.bettingpk.databinding.LayoutBettingPkItemWaitingBinding
-import com.adealink.weparty.bettingpk.itemdata.BetInfoItemData
-import com.adealink.weparty.bettingpk.itemdata.BetListItemDiffUtil
-import com.adealink.weparty.bettingpk.itemdata.WaitForPKItemData
-import com.adealink.weparty.module.profile.ProfileModule
-import com.adealink.weparty.R as APP_R
-
-class WaitForPKItemViewBinder(
-    val listener: IWaitForPkListener? = null,
-) : ItemViewBinder<WaitForPKItemData, WaitForPKItemViewBinder.ViewHolder>() {
-
-    override fun onCreateViewHolder(
-        inflater: LayoutInflater,
-        parent: ViewGroup,
-    ): ViewHolder {
-        return ViewHolder(LayoutBettingPkItemWaitingBinding.inflate(inflater, parent, false))
-    }
-
-    override fun onBindViewHolder(holder: ViewHolder, item: WaitForPKItemData) {
-        holder.update(item)
-    }
-
-    inner class ViewHolder(binding: LayoutBettingPkItemWaitingBinding) :
-        BindingViewHolder<LayoutBettingPkItemWaitingBinding>(binding) {
-
-        private val betListAdapter = MultiTypeListAdapter(BetListItemDiffUtil())
-
-        init {
-            binding.rvBetItems.apply {
-                betListAdapter.register(BetInfoItemViewBinder(true))
-                layoutManager = LinearLayoutManager(binding.root.context, LinearLayoutManager.HORIZONTAL, false)
-                adapter = betListAdapter
-                addItemDecoration(HorizontalItemDecoration(1.dpf(), 0f, 0f))
-            }
-        }
-
-        fun update(item: WaitForPKItemData) {
-            binding.ivOwner.setImageUrl(item.data.ownerImg)
-            binding.tvName.text = item.data.ownerName
-            binding.tvId.text = getCompatString(APP_R.string.common_short_id, item.data.ownerId)
-            binding.ivOwner.setOnClickListener {
-                listener?.clickAvatar(item.data.ownerUid, item.data.ownerId.safeToLong(0))
-            }
-            if (listener == null || item.data.ownerUid == ProfileModule.getMyUid()) {
-                //没有设置回调监听 or 本人自己的挑战
-                binding.ivWaiting.show()
-                binding.tvWaiting.show()
-                binding.tvChallenge.gone()
-            } else {
-                binding.ivWaiting.gone()
-                binding.tvWaiting.gone()
-                binding.tvChallenge.show()
-                binding.tvChallenge.setOnClickListener {
-                    listener.challenge(item.data)
-                }
-            }
-            if (item.data.hasBet()) {
-                binding.ivBg.setImageResource(R.drawable.betting_pk_waiting_expand_bg)
-                binding.vBetItemsBottom.show()
-                binding.rvBetItems.show()
-                betListAdapter.submitList(item.data.ownerPackages?.map { BetInfoItemData(it) } ?: emptyList())
-            } else {
-                binding.ivBg.setImageResource(R.drawable.betting_pk_waiting_bg)
-                binding.vBetItemsBottom.gone()
-                binding.rvBetItems.gone()
-            }
-        }
-    }
-
-    interface IWaitForPkListener {
-        fun challenge(data: PKInfoData)
-
-        fun clickAvatar(uid: Long, roomId: Long)
-    }
-}

+ 0 - 182
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/comp/MyPkInfoComp.kt

@@ -1,182 +0,0 @@
-package com.adealink.weparty.bettingpk.comp
-
-import android.os.Bundle
-import androidx.lifecycle.LifecycleOwner
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.adealink.frame.aab.util.getCompatString
-import com.adealink.frame.base.fastLazy
-import com.adealink.weparty.commonui.ext.dpf
-import com.adealink.weparty.commonui.ext.gone
-import com.adealink.weparty.commonui.ext.show
-import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
-import com.adealink.weparty.commonui.recycleview.itemdecoration.HorizontalItemDecoration
-import com.adealink.frame.mvvm.view.ViewComponent
-import com.adealink.frame.mvvm.viewmodel.viewModels
-import com.adealink.weparty.module.backpack.BackpackModule
-import com.adealink.weparty.module.bettingpk.BettingPK
-import com.adealink.weparty.bettingpk.R
-import com.adealink.weparty.bettingpk.adapter.AddBetInfoItemViewBinder
-import com.adealink.weparty.bettingpk.adapter.BetInfoItemViewBinder
-import com.adealink.weparty.bettingpk.adapter.IAddBetInfoListener
-import com.adealink.weparty.bettingpk.adapter.InPKItemViewBinder
-import com.adealink.weparty.bettingpk.adapter.WaitForPKItemViewBinder
-import com.adealink.weparty.bettingpk.data.BETTING_PK_ITEM_TYPES
-import com.adealink.weparty.module.bettingpk.data.BettingPkStatus
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.module.bettingpk.data.PkPackageInfos
-import com.adealink.weparty.bettingpk.databinding.LayoutBettingPkOpBetInfoBinding
-import com.adealink.weparty.bettingpk.dialog.BettingPKClickAvatarDialog
-import com.adealink.weparty.bettingpk.itemdata.AddBetItemData
-import com.adealink.weparty.bettingpk.itemdata.BaseBetItemData
-import com.adealink.weparty.bettingpk.itemdata.BetInfoItemData
-import com.adealink.weparty.bettingpk.itemdata.BetListItemDiffUtil
-import com.adealink.weparty.bettingpk.itemdata.InPKItemData
-import com.adealink.weparty.bettingpk.itemdata.PKListItemDiffUtil
-import com.adealink.weparty.bettingpk.itemdata.WaitForPKItemData
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKViewModel
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKViewModelFactory
-
-class MyPkInfoComp(
-    lifecycleOwner: LifecycleOwner,
-    val binding: LayoutBettingPkOpBetInfoBinding,
-    val dismissDialog: () -> Unit
-) : ViewComponent(lifecycleOwner), IAddBetInfoListener, InPKItemViewBinder.IPkingListener {
-    private val viewModel by viewModels<BettingPKViewModel>({ requireActivity() }) { BettingPKViewModelFactory() }
-
-    private val betListAdapter by fastLazy { MultiTypeListAdapter(BetListItemDiffUtil()) }
-    private val pkStatusAdapter by fastLazy { MultiTypeListAdapter(PKListItemDiffUtil()) }
-    private var addBetEnable = false
-
-    override fun onCreate() {
-        super.onCreate()
-        initView()
-        observeViewModel()
-    }
-
-    private fun initView() {
-        binding.clAddBetInfo.setOnClickListener {
-            onAddBetInfoClick()
-        }
-
-        betListAdapter.register(BetInfoItemViewBinder(false, this))
-        betListAdapter.register(AddBetInfoItemViewBinder(false, this))
-        binding.rvBets.adapter = betListAdapter
-        binding.rvBets.layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)
-        binding.rvBets.addItemDecoration(HorizontalItemDecoration(4.dpf(), 0f, 0f))
-
-        pkStatusAdapter.register(WaitForPKItemViewBinder())
-        pkStatusAdapter.register(InPKItemViewBinder(this))
-        binding.rvStatus.adapter = pkStatusAdapter
-        binding.rvStatus.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
-    }
-
-    private fun observeViewModel() {
-        viewModel.myPkInfoLD.observe(viewLifecycleOwner) {
-            addBetEnable = true
-            updateMyPkInfo(it)
-        }
-        viewModel.ownerBetListLD.observe(viewLifecycleOwner) { list ->
-            val myPkInfo = viewModel.getMyPkInfo()
-            if (myPkInfo != null && !myPkInfo.isOver()) {
-                //我的PK未结束
-                updateMyPkInfo(myPkInfo)
-                return@observe
-            }
-            if (list.isEmpty()) {
-                binding.clAddBetInfo.show()
-                binding.clBetInfo.gone()
-                return@observe
-            }
-            binding.clAddBetInfo.gone()
-            binding.clBetInfo.show()
-            betListAdapter.submitList(
-                mutableListOf<BaseBetItemData>().apply {
-                    addAll(list.map {
-                        BetInfoItemData(
-                            PkPackageInfos(
-                                it.packageInfo.id,
-                                it.packageInfo.goodsType,
-                                it.packageInfo.img,
-                                it.packageInfo.intimacyType,
-                                it.packageInfo.linkId,
-                                it.packageInfo.type,
-                                it.packageInfo.value,
-                                it.selectNum
-                            )
-                        )
-                    })
-                    if (list.size < BETTING_PK_ITEM_TYPES) {
-                        add(AddBetItemData)
-                    }
-                }
-            )
-        }
-    }
-
-    private fun updateMyPkInfo(pkInfo: PKInfoData?) {
-        when (BettingPkStatus.getStatusBy(pkInfo?.status)) {
-            BettingPkStatus.WAIT,
-            BettingPkStatus.WAIT_LOCK -> {
-                binding.clAddBetInfo.gone()
-                binding.clBetInfo.gone()
-                binding.clPkStatus.show()
-                pkStatusAdapter.submitList(
-                    listOf(
-                        WaitForPKItemData(pkInfo!!)
-                    )
-                )
-            }
-
-            BettingPkStatus.IN_PK -> {
-                binding.clAddBetInfo.gone()
-                binding.clBetInfo.gone()
-                binding.clPkStatus.show()
-                pkStatusAdapter.submitList(
-                    listOf(
-                        InPKItemData(pkInfo!!)
-                    )
-                )
-            }
-
-            BettingPkStatus.OVER,
-            BettingPkStatus.OVER_REWARD,
-            null -> {
-                //没有PK信息,需要重新发起PK
-                binding.clAddBetInfo.show()
-                binding.clBetInfo.gone()
-                binding.clPkStatus.gone()
-            }
-        }
-    }
-
-    override fun onAddBetInfoClick() {
-        if (!addBetEnable) {
-            return
-        }
-        val act = activity ?: return
-        BackpackModule.showSelectBackpackDialog(
-            act.supportFragmentManager,
-            getCompatString(R.string.betting_pk_add_bet_title),
-            getCompatString(R.string.betting_pk_owner_add_bet_desc),
-            viewModel.getOwnerBetList(),
-            BETTING_PK_ITEM_TYPES
-        ) {
-            viewModel.ownerAddBet(it)
-        }
-    }
-
-    override fun clickAvatar(uid: Long, roomId: Long) {
-        val act = activity ?: return
-        BettingPKClickAvatarDialog().apply {
-            arguments = Bundle().apply {
-                putLong(BettingPK.Common.EXTRA_UID, uid)
-                putLong(BettingPK.Common.EXTRA_ROOM_ID, roomId)
-            }
-            goRoomClick = {
-                dismissDialog.invoke()
-            }
-            show(act.supportFragmentManager, "ClickAvatarDialog")
-        }
-    }
-
-}

+ 0 - 18
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/data/Constants.kt

@@ -1,18 +0,0 @@
-package com.adealink.weparty.bettingpk.data
-
-import com.adealink.frame.oss.ossService
-
-//赌注PK类型(房间:1)
-const val BETTING_PK_TYPE_ROOM = 1
-
-//最多选几种商品
-const val BETTING_PK_ITEM_TYPES = 3
-
-//特效资源
-val BETTING_PK_TITLE_EFFECT = ossService.getUrlByPath("/betting_pk/betting_pk_title.mp4")
-val BETTING_PK_BG_EFFECT = ossService.getUrlByPath("/betting_pk/betting_pk_bg.mp4")
-val BETTING_PK_VS_EFFECT = ossService.getUrlByPath("/betting_pk/betting_pk_vs.mp4")
-val BETTING_PK_DRAW_EFFECT = ossService.getUrlByPath("/betting_pk/betting_pk_draw.mp4")
-val BETTING_PK_WIN_EFFECT = ossService.getUrlByPath("/betting_pk/betting_pk_win2.mp4")
-val BETTING_PK_WIN_BG_EFFECT = ossService.getUrlByPath("/betting_pk/betting_pk_win_bg.mp4")
-val BETTING_PK_LOSE_EFFECT = ossService.getUrlByPath("/betting_pk/betting_pk_lose2.mp4")

+ 0 - 75
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/data/Data.kt

@@ -1,75 +0,0 @@
-package com.adealink.weparty.bettingpk.data
-
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.module.bettingpk.data.PkPackageInfos
-import com.google.gson.annotations.GsonNullable
-import com.google.gson.annotations.JsonAdapter
-import com.google.gson.annotations.SerializedName
-import com.google.gson.internal.bind.ExtReflectiveTypeAdapterFactory
-
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-data class AcceptPkReq(
-    @SerializedName("gameId") val gameId: String,
-    @GsonNullable
-    @SerializedName("packageInfos") val packageInfos: List<PkPackageInfos>?,
-)
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-data class CancelPkReq(
-    @SerializedName("gameId") val gameId: String
-)
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-data class RejectPkReq(
-    @SerializedName("gameId") val gameId: String,
-    @SerializedName("otherId") val otherId: String
-)
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-data class SetupPkReq(
-    @GsonNullable
-    @SerializedName("time") val time: Long?,
-    @GsonNullable
-    @SerializedName("packageInfos") val packageInfos: List<PkPackageInfos>?,
-    @GsonNullable
-    @SerializedName("isOpen") val isOpen: Boolean?, //是否显示在广场
-)
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-data class StartPkReq(
-    @SerializedName("gameId") val gameId: String,
-    @SerializedName("otherId") val otherId: String
-)
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-data class InviteOtherReq(
-    @SerializedName("gameId") val gameId: String,
-    @SerializedName("otherUid") val otherUid: Long
-)
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-data class PkRecordRes(
-    @SerializedName("records") val records: List<PKInfoData>
-)
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-class InvitePkNotify : PKInfoData()
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-class AcceptPkNotify : PKInfoData()
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-class RejectPkNotify : PKInfoData()
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-class PkStartNotify : PKInfoData()
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-class PkUserStartNotify : PKInfoData()
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-class PkResultNotify : PKInfoData()
-
-@JsonAdapter(ExtReflectiveTypeAdapterFactory::class)
-class PkAddScoreNotify : PKInfoData()

+ 0 - 2
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/data/Error.kt

@@ -1,2 +0,0 @@
-package com.adealink.weparty.bettingpk.data
-

+ 0 - 3
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/data/TAG.kt

@@ -1,3 +0,0 @@
-package com.adealink.weparty.bettingpk.data
-
-const val TAG_PK = "tag_betting_pk"

+ 0 - 17
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/datasource/local/BettingPKLocalService.kt

@@ -1,17 +0,0 @@
-package com.adealink.weparty.bettingpk.datasource.local
-
-import android.content.Context
-import com.adealink.frame.storage.sp.TypeDelegationPrefs
-import com.adealink.frame.util.AppUtil
-import com.adealink.weparty.module.profile.ProfileModule
-
-object BettingPKLocalService : TypeDelegationPrefs(
-    prefs = {
-        AppUtil.appContext.getSharedPreferences("pref_betting_pk", Context.MODE_PRIVATE)
-    },
-    userId = {
-        ProfileModule.getMyUid().toString()
-    }
-) {
-//    var showPkRules: Boolean by PrefKey("key_show_pk_rules", true)
-}

+ 0 - 69
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/datasource/remote/BettingPKHttpService.kt

@@ -1,69 +0,0 @@
-package com.adealink.weparty.bettingpk.datasource.remote
-
-import com.adealink.frame.base.Rlt
-import com.adealink.frame.network.data.Res
-import com.adealink.weparty.bettingpk.data.AcceptPkReq
-import com.adealink.weparty.bettingpk.data.CancelPkReq
-import com.adealink.weparty.bettingpk.data.InviteOtherReq
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.bettingpk.data.PkRecordRes
-import com.adealink.weparty.bettingpk.data.RejectPkReq
-import com.adealink.weparty.bettingpk.data.SetupPkReq
-import com.adealink.weparty.bettingpk.data.StartPkReq
-import retrofit2.http.Body
-import retrofit2.http.GET
-import retrofit2.http.POST
-import retrofit2.http.Query
-
-interface BettingPKHttpService {
-
-    //挑战者接受pk
-    @POST("superpk/acceptPk")
-    suspend fun acceptPK(@Body req: AcceptPkReq): Rlt<Res<Any>>
-
-    //发起者取消pk
-    @POST("superpk/cancelPk")
-    suspend fun cancelPK(@Body req: CancelPkReq): Rlt<Res<Any>>
-
-    @GET("superpk/getMyPkRecords")
-    suspend fun getMyPkRecords(
-        @Query("type") type: Int,
-        @Query("currentPage") currentPage: Int,
-        @Query("pageSize") pageSize: Int
-    ): Rlt<Res<PkRecordRes>>
-
-    //获取单场pk信息
-    @GET("superpk/getPkInfo")
-    suspend fun getPkInfo(
-        @Query("type") type: Int, //pk类型,默认是房间pk
-        @Query("ownerId") ownerId: String? = null, //发起者id
-        @Query("gameId") gameId: String? = null, //查询游戏id
-    ): Rlt<Res<PKInfoData>>
-
-    //获取pk列表
-    @GET("superpk/getPkInfoList")
-    suspend fun getPkInfoList(
-        @Query("type") type: Int, //pk类型,默认是房间pk
-        @Query("status") status: Int, //0等待中, 1锁定, 2pk中,3pk结果
-        @Query("offset") page: Int, //分页
-        @Query("limit") pageSize: Int,
-        @Query("date") date: String? = null, //日期
-    ): Rlt<Res<List<PKInfoData>>>
-
-    //发起者拒绝pk
-    @POST("superpk/rejectPk")
-    suspend fun rejectPK(@Body req: RejectPkReq): Rlt<Res<Any>>
-
-    //发起者设置pk
-    @POST("superpk/setUpPk")
-    suspend fun setupPK(@Body req: SetupPkReq): Rlt<Res<Any>>
-
-    //发起者开启pk
-    @POST("superpk/startPk")
-    suspend fun startPK(@Body req: StartPkReq): Rlt<Res<Any>>
-
-    @POST("superpk/inviteOther")
-    suspend fun inviteOther(@Body req: InviteOtherReq): Rlt<Res<Any>>
-
-
-}

+ 0 - 160
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/dialog/BettingPKAcceptChallengeDialog.kt

@@ -1,160 +0,0 @@
-package com.adealink.weparty.bettingpk.dialog
-
-import android.graphics.Color
-import android.graphics.drawable.ColorDrawable
-import android.os.Bundle
-import android.view.Gravity
-import android.view.Window
-import android.view.WindowManager
-import androidx.fragment.app.viewModels
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.adealink.frame.aab.util.getCompatString
-import com.adealink.frame.base.Rlt
-import com.adealink.weparty.commonui.BaseActivity
-import com.adealink.weparty.commonui.dialogfragment.BaseDialogFragment
-import com.adealink.weparty.commonui.ext.dp
-import com.adealink.weparty.commonui.ext.dpf
-import com.adealink.weparty.commonui.ext.getActivity
-import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
-import com.adealink.weparty.commonui.recycleview.itemdecoration.HorizontalItemDecoration
-import com.adealink.weparty.commonui.toast.util.showToast
-import com.adealink.frame.mvvm.view.viewBinding
-import com.adealink.frame.router.Router
-import com.adealink.frame.router.annotation.BindExtra
-import com.adealink.frame.router.annotation.RouterUri
-import com.adealink.frame.util.DisplayUtil
-import com.adealink.weparty.module.bettingpk.BettingPK
-import com.adealink.weparty.bettingpk.R
-import com.adealink.weparty.bettingpk.adapter.BetInfoItemViewBinder
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.bettingpk.databinding.DialogBettingPkAcceptChallengeBinding
-import com.adealink.weparty.bettingpk.itemdata.BetInfoItemData
-import com.adealink.weparty.bettingpk.itemdata.BetListItemDiffUtil
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKViewModel
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKViewModelFactory
-import com.adealink.weparty.module.profile.Profile
-import com.adealink.weparty.R as APP_R
-
-@RouterUri(path = [BettingPK.AcceptChallenge.PATH], desc = "赌注PK接受挑战弹窗")
-class BettingPKAcceptChallengeDialog : BaseDialogFragment(R.layout.dialog_betting_pk_accept_challenge) {
-    private val binding by viewBinding(DialogBettingPkAcceptChallengeBinding::bind)
-    private val myBetListAdapter = MultiTypeListAdapter(BetListItemDiffUtil())
-    private val otherBetListAdapter = MultiTypeListAdapter(BetListItemDiffUtil())
-    private val viewModel by viewModels<BettingPKViewModel> { BettingPKViewModelFactory() }
-
-    @BindExtra(BettingPK.Common.EXTRA_PK_INFO)
-    var pkInfo: PKInfoData? = null
-
-    override val canceledOnTouchOutside: Boolean = false
-
-    private val autoDismissRunnable = Runnable {
-        dismiss()
-    }
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        Router.bind(this)
-    }
-
-    override fun initViews() {
-        super.initViews()
-        binding.root.postDelayed(autoDismissRunnable, 60_000) //60秒后自动消失
-        binding.ivMyAvatar.setImageUrl(pkInfo?.ownerImg)
-        binding.ivMyAvatar.setOnClickListener {
-            removeAutoDismiss()
-            val act = it.getActivity() ?: return@setOnClickListener
-            val uid = pkInfo?.ownerUid ?: return@setOnClickListener
-            Router.build(act, Profile.UserProfile.PATH)
-                .putExtra(Profile.Common.EXTRA_UID, uid)
-                .start()
-        }
-        binding.tvMyName.text = pkInfo?.ownerName
-        binding.rvMyBet.apply {
-            myBetListAdapter.register(BetInfoItemViewBinder(false))
-            layoutManager = LinearLayoutManager(binding.root.context, LinearLayoutManager.HORIZONTAL, false)
-            adapter = myBetListAdapter
-            addItemDecoration(HorizontalItemDecoration(4.dpf(), 0f, 0f))
-        }
-        myBetListAdapter.submitList(pkInfo?.ownerPackages?.map { BetInfoItemData(it) } ?: emptyList())
-
-        binding.ivOtherAvatar.setImageUrl(pkInfo?.otherImg)
-        binding.ivOtherAvatar.setOnClickListener {
-            removeAutoDismiss()
-            val act = it.getActivity() ?: return@setOnClickListener
-            val uid = pkInfo?.otherUid ?: return@setOnClickListener
-            Router.build(act, Profile.UserProfile.PATH)
-                .putExtra(Profile.Common.EXTRA_UID, uid)
-                .start()
-        }
-        binding.tvOtherName.text = pkInfo?.otherName
-        binding.rvOtherBet.apply {
-            otherBetListAdapter.register(BetInfoItemViewBinder(false))
-            layoutManager = LinearLayoutManager(binding.root.context, LinearLayoutManager.HORIZONTAL, false)
-            adapter = otherBetListAdapter
-            addItemDecoration(HorizontalItemDecoration(4.dpf(), 0f, 0f))
-        }
-        otherBetListAdapter.submitList(pkInfo?.otherPackages?.map { BetInfoItemData(it) } ?: emptyList())
-
-        binding.tvRefuse.setOnClickListener {
-            removeAutoDismiss()
-            rejectChallenge()
-        }
-        binding.tvAccept.setOnClickListener {
-            removeAutoDismiss()
-            acceptChallenge()
-        }
-    }
-
-    private fun rejectChallenge() {
-        val pkInfo = pkInfo ?: return
-        (activity as? BaseActivity)?.showLoading()
-        viewModel.rejectPk(pkInfo.gameId, pkInfo.otherId).observe(viewLifecycleOwner) {
-            (activity as? BaseActivity)?.dismissLoading()
-            when (it) {
-                is Rlt.Failed -> {
-                    showToast(it)
-                }
-
-                is Rlt.Success -> {
-                    showToast(getCompatString(APP_R.string.common_success))
-                    dismiss()
-                }
-            }
-        }
-    }
-
-    private fun acceptChallenge() {
-        val pkInfo = pkInfo ?: return
-        (activity as? BaseActivity)?.showLoading()
-        viewModel.startPk(pkInfo.gameId, pkInfo.otherId).observe(viewLifecycleOwner) {
-            (activity as? BaseActivity)?.dismissLoading()
-            when (it) {
-                is Rlt.Failed -> {
-                    showToast(it)
-                }
-
-                is Rlt.Success -> {
-                    showToast(getCompatString(APP_R.string.common_success))
-                    dismiss()
-                }
-            }
-        }
-    }
-
-    private fun removeAutoDismiss() {
-        binding.root.removeCallbacks(autoDismissRunnable)
-    }
-
-    override fun resetWindowAttributes(window: Window) {
-        super.resetWindowAttributes(window)
-        window.setLayout(
-            minOf((DisplayUtil.getScreenWidth() * 0.8f).toInt(), 300.dp()),
-            WindowManager.LayoutParams.WRAP_CONTENT
-        )
-        window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
-        val attr = window.attributes
-        attr.gravity = Gravity.CENTER
-        attr.dimAmount = 0.7f
-        window.attributes = attr
-    }
-}

+ 0 - 113
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/dialog/BettingPKAlertDialog.kt

@@ -1,113 +0,0 @@
-package com.adealink.weparty.bettingpk.dialog
-
-import android.graphics.Color
-import android.graphics.drawable.ColorDrawable
-import android.os.Bundle
-import android.view.Gravity
-import android.view.View
-import android.view.Window
-import android.view.WindowManager
-import androidx.fragment.app.FragmentManager
-import com.adealink.weparty.commonui.dialogfragment.BaseDialogFragment
-import com.adealink.weparty.commonui.ext.dp
-import com.adealink.frame.mvvm.view.viewBinding
-import com.adealink.frame.router.Router
-import com.adealink.frame.util.DisplayUtil
-import com.adealink.weparty.bettingpk.R
-import com.adealink.weparty.bettingpk.databinding.DialogCommonBettingPkBinding
-
-class BettingPKAlertDialog : BaseDialogFragment(R.layout.dialog_common_betting_pk) {
-    private val binding by viewBinding(DialogCommonBettingPkBinding::bind)
-
-    private var confirmText: CharSequence? = null
-    private var onConfirm: (() -> Unit)? = null
-
-    private var cancelText: CharSequence? = null
-    private var onCancel: (() -> Unit)? = null
-
-    private var customMessageView: View? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        Router.bind(this)
-    }
-
-    override fun initViews() {
-        super.initViews()
-        customMessageView?.let {
-            binding.flContent.addView(it)
-        }
-        binding.tvCancel.setOnClickListener {
-            onCancel?.invoke()
-            dismiss()
-        }
-        binding.tvConfirm.setOnClickListener {
-            onConfirm?.invoke()
-            dismiss()
-        }
-    }
-
-    override fun resetWindowAttributes(window: Window) {
-        super.resetWindowAttributes(window)
-        window.setLayout(
-            minOf((DisplayUtil.getScreenWidth() * 0.8f).toInt(), 300.dp()),
-            WindowManager.LayoutParams.WRAP_CONTENT
-        )
-        window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
-        val attr = window.attributes
-        attr.gravity = Gravity.CENTER
-        attr.dimAmount = 0.7f
-        window.attributes = attr
-    }
-
-    class Builder {
-        private var confirmText: CharSequence? = null
-        private var onConfirm: (() -> Unit)? = null
-
-        private var cancelText: CharSequence? = null
-        private var onCancel: (() -> Unit)? = null
-
-        private var customMessageView: View? = null
-
-        fun customMessageView(view: View): Builder {
-            customMessageView = view
-            return this
-        }
-
-        fun confirmText(confirmText: CharSequence): Builder {
-            this.confirmText = confirmText
-            return this
-        }
-
-        fun onConfirm(onConfirm: () -> Unit): Builder {
-            this.onConfirm = onConfirm
-            return this
-        }
-
-        fun cancelText(cancelText: CharSequence): Builder {
-            this.cancelText = cancelText
-            return this
-        }
-
-        fun onCancel(onCancel: () -> Unit): Builder {
-            this.onCancel = onCancel
-            return this
-        }
-
-        fun build(): BettingPKAlertDialog {
-            val dialog = BettingPKAlertDialog()
-            dialog.confirmText = confirmText
-            dialog.onConfirm = onConfirm
-            dialog.cancelText = cancelText
-            dialog.onCancel = onCancel
-            dialog.customMessageView = customMessageView
-            return dialog
-        }
-
-        fun show(manager: FragmentManager?) {
-            manager?.let {
-                build().show(it)
-            }
-        }
-    }
-}

+ 0 - 95
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/dialog/BettingPKClickAvatarDialog.kt

@@ -1,95 +0,0 @@
-package com.adealink.weparty.bettingpk.dialog
-
-import android.graphics.Color
-import android.graphics.drawable.ColorDrawable
-import android.os.Bundle
-import android.view.Gravity
-import android.view.Window
-import android.view.WindowManager
-import com.adealink.weparty.commonui.dialogfragment.BaseDialogFragment
-import com.adealink.weparty.commonui.ext.dp
-import com.adealink.weparty.commonui.ext.gone
-import com.adealink.weparty.commonui.ext.show
-import com.adealink.frame.mvvm.view.viewBinding
-import com.adealink.frame.router.Router
-import com.adealink.frame.util.DisplayUtil
-import com.adealink.weparty.module.bettingpk.BettingPK
-import com.adealink.weparty.bettingpk.R
-import com.adealink.weparty.bettingpk.databinding.DialogBettingPkClickAvatarBinding
-import com.adealink.weparty.module.profile.Profile
-import com.adealink.weparty.module.room.RoomModule
-import com.adealink.weparty.module.room.Room
-import com.adealink.weparty.room.data.EnterRoomInfo
-import com.adealink.weparty.room.data.JoinRoomFrom
-import kotlin.math.min
-
-class BettingPKClickAvatarDialog : BaseDialogFragment(R.layout.dialog_betting_pk_click_avatar) {
-    private val binding by viewBinding(DialogBettingPkClickAvatarBinding::bind)
-
-    private var uid: Long? = null
-    private var roomId: Long? = null
-
-    var goProfileClick: (() -> Unit)? = null
-    var goRoomClick: (() -> Unit)? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        uid = arguments?.getLong(BettingPK.Common.EXTRA_UID)
-        roomId = arguments?.getLong(BettingPK.Common.EXTRA_ROOM_ID)
-    }
-
-    override fun initViews() {
-        super.initViews()
-        binding.ivClose.setOnClickListener {
-            dismiss()
-        }
-        binding.clGoProfile.setOnClickListener {
-            goProfile()
-            goProfileClick?.invoke()
-            dismiss()
-        }
-        if (RoomModule.getJoinedRoomId() == roomId) {
-            binding.clGoRoom.gone()
-        } else {
-            binding.clGoRoom.show()
-            binding.clGoRoom.setOnClickListener {
-                goRoom()
-                goRoomClick?.invoke()
-                dismiss()
-            }
-        }
-    }
-
-    private fun goProfile() {
-        val act = activity ?: return
-        val uid = this.uid ?: return
-        Router.build(act, Profile.UserProfile.PATH)
-            .putExtra(Profile.Common.EXTRA_UID, uid)
-            .start()
-    }
-
-    private fun goRoom() {
-        val act = activity ?: return
-        val roomId = this.roomId ?: return
-        Router.build(act, Room.Room.PATH)
-            .putExtra(
-                Room.Room.EXTRA_ENTER_ROOM_INFO,
-                EnterRoomInfo(roomId, JoinRoomFrom.BETTING_PK.from)
-            )
-            .start()
-    }
-
-    override fun resetWindowAttributes(window: Window) {
-        super.resetWindowAttributes(window)
-        window.setWindowAnimations(com.adealink.weparty.R.style.CommonDialogAnim)
-        window.setLayout(
-            min(303f.dp(), (DisplayUtil.getScreenWidth() * 0.81f).toInt()),
-            WindowManager.LayoutParams.WRAP_CONTENT
-        )
-        window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
-        val attr = window.attributes
-        attr.gravity = Gravity.CENTER
-        attr.dimAmount = 0.7f
-        window.attributes = attr
-    }
-}

+ 0 - 240
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/dialog/BettingPKInviteDialog.kt

@@ -1,240 +0,0 @@
-package com.adealink.weparty.bettingpk.dialog
-
-import android.graphics.Color
-import android.graphics.drawable.ColorDrawable
-import android.os.Bundle
-import android.text.Spannable
-import android.text.SpannableStringBuilder
-import android.text.style.ForegroundColorSpan
-import android.view.Gravity
-import android.view.LayoutInflater
-import android.view.Window
-import android.view.WindowManager
-import androidx.fragment.app.viewModels
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.adealink.frame.aab.util.getCompatColor
-import com.adealink.frame.aab.util.getCompatDrawable
-import com.adealink.frame.aab.util.getCompatString
-import com.adealink.frame.base.Rlt
-import com.adealink.weparty.commonui.BaseActivity
-import com.adealink.weparty.commonui.dialogfragment.BaseDialogFragment
-import com.adealink.weparty.commonui.ext.dp
-import com.adealink.weparty.commonui.ext.dpf
-import com.adealink.weparty.commonui.ext.getActivity
-import com.adealink.weparty.commonui.ext.gone
-import com.adealink.weparty.commonui.ext.show
-import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
-import com.adealink.weparty.commonui.recycleview.itemdecoration.HorizontalItemDecoration
-import com.adealink.weparty.commonui.toast.util.showToast
-import com.adealink.weparty.commonui.widget.CenterImageSpan
-import com.adealink.frame.ext.ellipsizeIfMoreThan
-import com.adealink.frame.ext.safeSetSpan
-import com.adealink.frame.mvvm.view.viewBinding
-import com.adealink.frame.router.Router
-import com.adealink.frame.router.annotation.BindExtra
-import com.adealink.frame.router.annotation.RouterUri
-import com.adealink.frame.util.DisplayUtil
-import com.adealink.weparty.module.backpack.BackpackModule
-import com.adealink.weparty.module.backpack.SelectUserPackageInfo
-import com.adealink.weparty.module.bettingpk.BettingPK
-import com.adealink.weparty.bettingpk.R
-import com.adealink.weparty.bettingpk.adapter.BetInfoItemViewBinder
-import com.adealink.weparty.bettingpk.data.BETTING_PK_ITEM_TYPES
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.module.bettingpk.data.PkPackageInfos
-import com.adealink.weparty.bettingpk.databinding.DialogBettingPkInviteBinding
-import com.adealink.weparty.bettingpk.databinding.LayoutBettingPkChallengeConfirmBinding
-import com.adealink.weparty.bettingpk.itemdata.BetInfoItemData
-import com.adealink.weparty.bettingpk.itemdata.BetListItemDiffUtil
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKViewModel
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKViewModelFactory
-import com.adealink.weparty.module.profile.Profile
-import com.adealink.weparty.R as APP_R
-
-@RouterUri(path = [BettingPK.InvitePk.PATH], desc = "赌注PK邀请弹窗")
-class BettingPKInviteDialog : BaseDialogFragment(R.layout.dialog_betting_pk_invite) {
-    private val binding by viewBinding(DialogBettingPkInviteBinding::bind)
-    private val viewModel by viewModels<BettingPKViewModel> { BettingPKViewModelFactory() }
-
-    @BindExtra(BettingPK.Common.EXTRA_PK_INFO)
-    var pkInfo: PKInfoData? = null
-
-    override val canceledOnTouchOutside: Boolean = false
-
-    private val autoDismissRunnable = Runnable {
-        dismiss()
-    }
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        Router.bind(this)
-    }
-
-    override fun initViews() {
-        super.initViews()
-        binding.root.postDelayed(autoDismissRunnable, 60_000) //60秒后自动消失
-        binding.ivInvite.setImageUrl(pkInfo?.ownerImg)
-        binding.ivInvite.setOnClickListener {
-            removeAutoDismiss()
-            val act = it.getActivity() ?: return@setOnClickListener
-            val uid = pkInfo?.ownerUid ?: return@setOnClickListener
-            Router.build(act, Profile.UserProfile.PATH)
-                .putExtra(Profile.Common.EXTRA_UID, uid)
-                .start()
-        }
-        val inviteName = pkInfo?.ownerName?.ellipsizeIfMoreThan(10) ?: ""
-        val inviteNameStr = getCompatString(R.string.betting_pk_invite_desc, inviteName)
-        binding.tvInvite.text = SpannableStringBuilder(inviteNameStr).apply {
-            if (inviteName.isNotEmpty()) {
-                val index = inviteNameStr.indexOf(inviteName)
-                if (index >= 0) {
-                    safeSetSpan(
-                        ForegroundColorSpan(getCompatColor(APP_R.color.color_FFFCE571)),
-                        index,
-                        index + inviteName.length,
-                        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
-                    )
-                }
-            }
-        }
-        if (pkInfo?.hasBet() == true) {
-            binding.tvAddBetTips.show()
-            val addBetTipsStr = TIPS_ICON + getCompatString(R.string.betting_pk_other_add_bet_desc)
-            binding.tvAddBetTips.text = SpannableStringBuilder(addBetTipsStr).apply {
-                val index = addBetTipsStr.indexOf(TIPS_ICON)
-                if (index >= 0) {
-                    safeSetSpan(
-                        CenterImageSpan(getCompatDrawable(com.adealink.weparty.R.drawable.app_alerty_gray_24_ic).apply {
-                            setBounds(0, 0, DisplayUtil.dp2px(16f), DisplayUtil.dp2px(16f))
-                        }),
-                        index,
-                        index + TIPS_ICON.length,
-                        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
-                    )
-                }
-            }
-
-            binding.clAddBet.show()
-            val betListAdapter = MultiTypeListAdapter(BetListItemDiffUtil())
-            binding.rvBetItems.apply {
-                betListAdapter.register(BetInfoItemViewBinder(true))
-                layoutManager = LinearLayoutManager(binding.root.context, LinearLayoutManager.HORIZONTAL, false)
-                adapter = betListAdapter
-                addItemDecoration(HorizontalItemDecoration(1.dpf(), 0f, 0f))
-            }
-            betListAdapter.submitList(pkInfo?.ownerPackages?.map { BetInfoItemData(it) } ?: emptyList())
-        } else {
-            binding.tvAddBetTips.gone()
-            binding.clAddBet.gone()
-        }
-        binding.tvRefuse.setOnClickListener {
-            removeAutoDismiss()
-            dismiss()
-        }
-        binding.tvAccept.setOnClickListener {
-            removeAutoDismiss()
-            val pkInfo = pkInfo ?: return@setOnClickListener
-            if (pkInfo.hasBet()) {
-                addBetAndAccept()
-            } else {
-                acceptPk(null)
-            }
-        }
-    }
-
-    private fun addBetAndAccept() {
-        val act = activity ?: return
-        BackpackModule.showSelectBackpackDialog(
-            act.supportFragmentManager,
-            getCompatString(R.string.betting_pk_add_bet_title),
-            getCompatString(R.string.betting_pk_other_add_bet_desc),
-            null,
-            BETTING_PK_ITEM_TYPES
-        ) {
-            if (it.isEmpty()) {
-                showToast(R.string.betting_pk_other_add_bet_desc)
-                return@showSelectBackpackDialog
-            }
-            showChallengeConfirmDialog(it) {
-                acceptPk(it)
-            }
-        }
-    }
-
-    private fun showChallengeConfirmDialog(
-        betList: List<SelectUserPackageInfo>,
-        confirm: () -> Unit
-    ) {
-        val act = activity ?: return
-        val customBinding = LayoutBettingPkChallengeConfirmBinding.inflate(LayoutInflater.from(act), null, false)
-        val betListAdapter = MultiTypeListAdapter(BetListItemDiffUtil())
-        customBinding.rvBetItems.apply {
-            betListAdapter.register(BetInfoItemViewBinder(true))
-            layoutManager = LinearLayoutManager(binding.root.context, LinearLayoutManager.HORIZONTAL, false)
-            adapter = betListAdapter
-            addItemDecoration(HorizontalItemDecoration(1.dpf(), 0f, 0f))
-        }
-        betListAdapter.submitList(
-            betList.map {
-                BetInfoItemData(
-                    PkPackageInfos(
-                        it.packageInfo.id,
-                        it.packageInfo.goodsType,
-                        it.packageInfo.img,
-                        it.packageInfo.intimacyType,
-                        it.packageInfo.linkId,
-                        it.packageInfo.type,
-                        it.packageInfo.value,
-                        it.selectNum
-                    )
-                )
-            }
-        )
-        BettingPKAlertDialog.Builder()
-            .customMessageView(customBinding.root)
-            .confirmText(getCompatString(APP_R.string.common_add))
-            .onConfirm {
-                confirm.invoke()
-            }
-            .show(act.supportFragmentManager)
-    }
-
-    private fun acceptPk(betList: List<SelectUserPackageInfo>?) {
-        val pkInfo = pkInfo ?: return
-        (activity as? BaseActivity)?.showLoading()
-        viewModel.otherAcceptPk(pkInfo.gameId, betList).observe(viewLifecycleOwner) {
-            (activity as? BaseActivity)?.dismissLoading()
-            when (it) {
-                is Rlt.Failed -> {
-                    showToast(it)
-                }
-
-                is Rlt.Success -> {
-                    showToast(getCompatString(APP_R.string.common_success))
-                    dismiss()
-                }
-            }
-        }
-    }
-
-    private fun removeAutoDismiss() {
-        binding.root.removeCallbacks(autoDismissRunnable)
-    }
-
-    override fun resetWindowAttributes(window: Window) {
-        super.resetWindowAttributes(window)
-        window.setLayout(
-            minOf((DisplayUtil.getScreenWidth() * 0.8f).toInt(), 300.dp()),
-            WindowManager.LayoutParams.WRAP_CONTENT
-        )
-        window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
-        val attr = window.attributes
-        attr.gravity = Gravity.CENTER
-        attr.dimAmount = 0.7f
-        window.attributes = attr
-    }
-
-    companion object {
-        const val TIPS_ICON = "[icon]"
-    }
-}

+ 0 - 143
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/dialog/BettingPKRecordDialog.kt

@@ -1,143 +0,0 @@
-package com.adealink.weparty.bettingpk.dialog
-
-import android.graphics.Color
-import android.graphics.drawable.ColorDrawable
-import android.os.Bundle
-import android.view.Gravity
-import android.view.Window
-import android.view.WindowManager
-import androidx.fragment.app.viewModels
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.adealink.frame.aab.util.getCompatColor
-import com.adealink.frame.base.Rlt
-import com.adealink.frame.base.fastLazy
-import com.adealink.weparty.commonui.dialogfragment.BaseDialogFragment
-import com.adealink.weparty.commonui.ext.dp
-import com.adealink.weparty.commonui.ext.gone
-import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
-import com.adealink.weparty.commonui.toast.util.showToast
-import com.adealink.frame.mvvm.view.viewBinding
-import com.adealink.frame.router.Router
-import com.adealink.frame.router.annotation.RouterUri
-import com.adealink.frame.util.DisplayUtil
-import com.adealink.weparty.module.bettingpk.BettingPK
-import com.adealink.weparty.bettingpk.R
-import com.adealink.weparty.R as APP_R
-import com.adealink.weparty.bettingpk.adapter.PKResultItemViewBinder
-import com.adealink.weparty.bettingpk.adapter.TimeItemViewBinder
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.bettingpk.databinding.DialogBettingPkRecordBinding
-import com.adealink.weparty.bettingpk.itemdata.PKListItemDiffUtil
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKRecordViewModel
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKViewModelFactory
-import com.scwang.smart.refresh.footer.ClassicsFooter
-
-@RouterUri(path = [BettingPK.Record.PATH], desc = "赌注PK历史记录弹窗")
-class BettingPKRecordDialog : BaseDialogFragment(R.layout.dialog_betting_pk_record) {
-    private val binding by viewBinding(DialogBettingPkRecordBinding::bind)
-    private val listAdapter by fastLazy { MultiTypeListAdapter(PKListItemDiffUtil()) }
-    private val viewModel by viewModels<BettingPKRecordViewModel> { BettingPKViewModelFactory() }
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        Router.bind(this)
-    }
-
-    override fun initViews() {
-        super.initViews()
-        listAdapter.register(TimeItemViewBinder())
-        listAdapter.register(PKResultItemViewBinder())
-
-        binding.rvRecord.apply {
-            layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
-            adapter = listAdapter
-            //addItemDecoration(VerticalSpaceItemDecoration(13.5f.dp()))
-        }
-
-        binding.refreshLayout.refreshFooter?.let {
-            if (it is ClassicsFooter) {
-                it.setAccentColor(Color.WHITE)
-            }
-        }
-        binding.refreshLayout.setOnRefreshListener { refreshData() }
-        binding.refreshLayout.setOnLoadMoreListener { loadMore() }
-        binding.refreshLayout.setEnableLoadMore(false)
-
-        binding.vErrorEmpty.setTitleColor(getCompatColor(APP_R.color.white))
-    }
-
-    override fun observeViewModel() {
-        super.observeViewModel()
-        viewModel.pkListLD.observe(viewLifecycleOwner) { rlt ->
-            binding.refreshLayout.finishRefresh()
-            binding.refreshLayout.finishLoadMore()
-            binding.refreshLayout.setEnableLoadMore(!viewModel.noMoreData())
-            when (rlt) {
-                is Rlt.Failed -> {
-                    showToast(rlt)
-                    listAdapter.submitList(emptyList())
-                    showErrorView()
-                }
-
-                is Rlt.Success -> {
-                    groupByTimeAndSubmit(rlt.data)
-                }
-            }
-        }
-    }
-
-    override fun loadData() {
-        super.loadData()
-        binding.refreshLayout.autoRefresh()
-    }
-
-    private fun showErrorView() {
-        binding.vErrorEmpty.show(
-            APP_R.drawable.common_list_empty_ic,
-            APP_R.string.common_net_error
-        )
-    }
-
-    private fun showEmptyView() {
-        binding.vErrorEmpty.show(
-            APP_R.drawable.common_list_empty_ic,
-            APP_R.string.commonui_list_empty
-        )
-    }
-
-    private fun hideErrorEmptyView() {
-        binding.vErrorEmpty.gone()
-    }
-
-    private fun refreshData() {
-        viewModel.loadPkList()
-    }
-
-    private fun loadMore() {
-        viewModel.loadMorePkList()
-    }
-
-    private fun groupByTimeAndSubmit(list: List<PKInfoData>) {
-        viewModel.groupByTime(list).observe(viewLifecycleOwner) {
-            listAdapter.submitList(it)
-            if (it.isEmpty()) {
-                showEmptyView()
-            } else {
-                hideErrorEmptyView()
-            }
-        }
-    }
-
-    override fun resetWindowAttributes(window: Window) {
-        super.resetWindowAttributes(window)
-        window.setLayout(
-            WindowManager.LayoutParams.MATCH_PARENT,
-            minOf(DisplayUtil.getScreenHeight(), 600.dp())
-        )
-        window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
-        val attr = window.attributes
-        attr.gravity = Gravity.BOTTOM
-        attr.dimAmount = 0.7f
-        window.attributes = attr
-    }
-}

+ 0 - 332
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/dialog/BettingPKResultDialog.kt

@@ -1,332 +0,0 @@
-package com.adealink.weparty.bettingpk.dialog
-
-import android.graphics.Color
-import android.graphics.drawable.ColorDrawable
-import android.os.Bundle
-import android.view.Gravity
-import android.view.Window
-import android.view.WindowManager
-import androidx.fragment.app.viewModels
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.adealink.frame.base.fastLazy
-import com.adealink.weparty.commonui.dialogfragment.BaseDialogFragment
-import com.adealink.weparty.commonui.ext.dp
-import com.adealink.weparty.commonui.ext.hide
-import com.adealink.weparty.commonui.ext.show
-import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
-import com.adealink.weparty.commonui.recycleview.itemdecoration.VerticalSpaceItemDecoration
-import com.adealink.frame.log.Log
-import com.adealink.frame.mvvm.view.viewBinding
-import com.adealink.frame.router.Router
-import com.adealink.frame.router.annotation.BindExtra
-import com.adealink.frame.router.annotation.RouterUri
-import com.adealink.frame.util.runOnUiThread
-import com.adealink.frame.util.safeToLong
-import com.adealink.weparty.module.bettingpk.BettingPK
-import com.adealink.weparty.bettingpk.R
-import com.adealink.weparty.bettingpk.adapter.PKResultItemViewBinder
-import com.adealink.weparty.bettingpk.data.BETTING_PK_DRAW_EFFECT
-import com.adealink.weparty.bettingpk.data.BETTING_PK_LOSE_EFFECT
-import com.adealink.weparty.bettingpk.data.BETTING_PK_WIN_BG_EFFECT
-import com.adealink.weparty.bettingpk.data.BETTING_PK_WIN_EFFECT
-import com.adealink.weparty.module.bettingpk.data.BettingPkResult
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.bettingpk.data.TAG_PK
-import com.adealink.weparty.bettingpk.databinding.DialogBettingPkOtherResultBinding
-import com.adealink.weparty.bettingpk.databinding.DialogBettingPkResultBinding
-import com.adealink.weparty.bettingpk.databinding.DialogBettingPkWinResultBinding
-import com.adealink.weparty.bettingpk.itemdata.PKListItemDiffUtil
-import com.adealink.weparty.bettingpk.itemdata.PKResultItemData
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKEffectViewModel
-import com.adealink.weparty.module.room.RoomModule
-import com.tencent.qgame.animplayer.AnimConfig
-import com.tencent.qgame.animplayer.inter.IAnimListener
-import com.tencent.qgame.animplayer.util.ScaleType
-import java.io.File
-
-@RouterUri(path = [BettingPK.Result.PATH], desc = "赌注PK结果弹窗")
-class BettingPKResultDialog : BaseDialogFragment(R.layout.dialog_betting_pk_result) {
-    private val binding by viewBinding(DialogBettingPkResultBinding::bind)
-    private val listAdapter by fastLazy { MultiTypeListAdapter(PKListItemDiffUtil()) }
-    private val effectViewModel by viewModels<BettingPKEffectViewModel>()
-    private var pkOtherBinding: DialogBettingPkOtherResultBinding? = null
-    private var pkWinBinding: DialogBettingPkWinResultBinding? = null
-
-
-    @BindExtra(BettingPK.Common.EXTRA_PK_INFO)
-    var pkInfo: PKInfoData? = null
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        Router.bind(this)
-    }
-
-    companion object {
-        private const val WIN_EFFECT = "winEffect"
-        private const val WIN_BACKGROUND_EFFECT = "winBackgroundEffect"
-        private const val LOSE_EffECT = "loseEffect"
-        private const val DRAW_EFFECT = "drawEffect"
-    }
-
-    override fun initViews() {
-        super.initViews()
-        listAdapter.register(PKResultItemViewBinder())
-        when (pkInfo?.getPkResult()) {
-            BettingPkResult.DRAW -> {
-                initResultViews(binding, DRAW_EFFECT)
-            }
-
-            BettingPkResult.OWNER -> {
-                if (pkInfo?.ownerId?.safeToLong(0) == RoomModule.getJoinedRoomId()) {
-                    //赢了
-                    initResultViews(binding, WIN_EFFECT)
-                } else {
-                    //输了
-                    initResultViews(binding, LOSE_EffECT)
-                }
-            }
-
-            BettingPkResult.OTHER -> {
-                if (pkInfo?.otherId?.safeToLong(0) == RoomModule.getJoinedRoomId()) {
-                    //赢了
-                    initResultViews(binding, WIN_EFFECT)
-                } else {
-                    //输了
-                    initResultViews(binding, LOSE_EffECT)
-                }
-            }
-
-            null -> {
-
-            }
-        }
-        pkInfo?.let {
-            listAdapter.submitList(
-                listOf(
-                    PKResultItemData(it)
-                )
-            )
-        }
-    }
-
-    private fun initResultViews(binding: DialogBettingPkResultBinding, type: String) {
-        when (type) {
-            WIN_EFFECT -> {
-                binding.vStubTop.layoutResource = R.layout.dialog_betting_pk_win_result
-                val view = binding.vStubTop.inflate()
-                pkWinBinding = DialogBettingPkWinResultBinding.bind(view)
-                pkWinBinding?.let { winBinding ->
-                    winBinding.ivClose.postDelayed({ dismiss() }, 30_000)
-                    winBinding.ivClose.setOnClickListener { dismiss() }
-                    winBinding.rvResult.layoutManager =
-                        LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
-                    winBinding.rvResult.adapter = listAdapter
-                    winBinding.rvResult.addItemDecoration(VerticalSpaceItemDecoration(13.5f.dp()))
-                }
-            }
-
-            else -> {
-                binding.vStubTop.layoutResource = R.layout.dialog_betting_pk_other_result
-                val view = binding.vStubTop.inflate()
-                pkOtherBinding = DialogBettingPkOtherResultBinding.bind(view)
-                pkOtherBinding?.let { otherBinding ->
-                    otherBinding.ivTitle.setImageResource(if (type == LOSE_EffECT) R.drawable.betting_pk_lose_title_ic else R.drawable.betting_pk_draw_title_ic)
-                    otherBinding.ivClose.postDelayed({ dismiss() }, 30_000)
-                    otherBinding.ivClose.setOnClickListener { dismiss() }
-                    otherBinding.rvResult.layoutManager =
-                        LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)
-                    otherBinding.rvResult.adapter = listAdapter
-                    otherBinding.rvResult.addItemDecoration(VerticalSpaceItemDecoration(13.5f.dp()))
-                }
-            }
-        }
-    }
-
-    override fun loadData() {
-        super.loadData()
-        when (pkInfo?.getPkResult()) {
-            BettingPkResult.DRAW -> {
-                playTitleEffect(DRAW_EFFECT)
-            }
-
-            BettingPkResult.OWNER -> {
-                if (pkInfo?.ownerId?.safeToLong(0) == RoomModule.getJoinedRoomId()) {
-                    playTitleEffect(WIN_EFFECT)
-                    playTitleEffect(WIN_BACKGROUND_EFFECT)
-                } else {
-                    playTitleEffect(LOSE_EffECT)
-                }
-            }
-
-            BettingPkResult.OTHER -> {
-                if (pkInfo?.otherId?.safeToLong(0) == RoomModule.getJoinedRoomId()) {
-                    playTitleEffect(WIN_EFFECT)
-                    playTitleEffect(WIN_BACKGROUND_EFFECT)
-                } else {
-                    playTitleEffect(LOSE_EffECT)
-                }
-            }
-
-            null -> {}
-        }
-    }
-
-    private fun playTitleEffect(type: String) {
-        when (type) {
-            WIN_EFFECT -> {
-                effectViewModel.checkAndDownloadEffect(BETTING_PK_WIN_EFFECT).observe(viewLifecycleOwner) {
-                    if (it == null) {
-                        Log.e(TAG_PK, "checkAndDownloadEffect($BETTING_PK_WIN_EFFECT) fail")
-                        return@observe
-                    }
-                    pkWinBinding?.let { binding ->
-                        binding.ivTitle.hide()
-                        binding.animTitle.show()
-                        binding.animTitle.apply {
-                            setMute(RoomModule.isAudioPlayerMute())
-                            setLoop(1)
-                            autoDismiss(false)
-                            ScaleType.FIT_XY
-                            startPlay(File(it.localPath))
-                            setAnimListener(object : IAnimListener {
-                                override fun onFailed(errorType: Int, errorMsg: String?) {
-                                }
-
-                                override fun onVideoStart() {
-                                }
-
-                                override fun onVideoRender(frameIndex: Int, config: AnimConfig?) {
-                                    //第十帧显示pk结果
-                                    if (frameIndex == 10) {
-                                        runOnUiThread {
-                                            binding.rvResult.show()
-                                        }
-                                    }
-                                }
-
-                                override fun onVideoComplete() {
-                                }
-
-                                override fun onVideoDestroy() {
-                                }
-                            })
-                        }
-                    }
-                }
-            }
-
-            WIN_BACKGROUND_EFFECT -> {
-                effectViewModel.checkAndDownloadEffect(BETTING_PK_WIN_BG_EFFECT).observe(viewLifecycleOwner) {
-                    if (it == null) {
-                        Log.e(TAG_PK, "checkAndDownloadEffect($BETTING_PK_WIN_BG_EFFECT) fail")
-                        return@observe
-                    }
-                    pkWinBinding?.let { binding ->
-                        binding.animBg.show()
-                        binding.animBg.apply {
-                            setMute(RoomModule.isAudioPlayerMute())
-                            setLoop(Int.MAX_VALUE)
-                            autoDismiss(false)
-                            ScaleType.FIT_XY
-                            startPlay(File(it.localPath))
-                        }
-                    }
-                }
-            }
-
-            LOSE_EffECT -> {
-                effectViewModel.checkAndDownloadEffect(BETTING_PK_LOSE_EFFECT).observe(viewLifecycleOwner) {
-                    if (it == null) {
-                        Log.e(TAG_PK, "checkAndDownloadEffect($BETTING_PK_LOSE_EFFECT) fail")
-                        return@observe
-                    }
-                    pkOtherBinding?.let { binding ->
-                        binding.animTitle.show()
-                        binding.animTitle.apply {
-                            setMute(RoomModule.isAudioPlayerMute())
-                            setLoop(1)
-                            autoDismiss(false)
-                            setScaleType(ScaleType.FIT_CENTER)
-                            startPlay(File(it.localPath))
-                            setAnimListener(object : IAnimListener {
-                                override fun onFailed(errorType: Int, errorMsg: String?) {
-                                }
-
-                                override fun onVideoStart() {
-                                }
-
-                                override fun onVideoRender(frameIndex: Int, config: AnimConfig?) {
-                                    //第十帧显示pk结果
-                                    if (frameIndex == 10) {
-                                        runOnUiThread {
-                                            binding.rvResult.show()
-                                        }
-                                    }
-                                }
-
-                                override fun onVideoComplete() {
-                                }
-
-                                override fun onVideoDestroy() {
-                                }
-                            })
-                        }
-                    }
-                }
-            }
-
-            else -> {
-                effectViewModel.checkAndDownloadEffect(BETTING_PK_DRAW_EFFECT).observe(viewLifecycleOwner) {
-                    if (it == null) {
-                        Log.e(TAG_PK, "checkAndDownloadEffect($BETTING_PK_DRAW_EFFECT) fail")
-                        return@observe
-                    }
-                    pkOtherBinding?.let { binding ->
-                        binding.animTitle.show()
-                        binding.animTitle.apply {
-                            setMute(RoomModule.isAudioPlayerMute())
-                            setLoop(1)
-                            autoDismiss(false)
-                            setScaleType(ScaleType.FIT_CENTER)
-                            startPlay(File(it.localPath))
-                            setAnimListener(object : IAnimListener {
-                                override fun onFailed(errorType: Int, errorMsg: String?) {
-                                }
-
-                                override fun onVideoStart() {
-                                }
-
-                                override fun onVideoRender(frameIndex: Int, config: AnimConfig?) {
-                                    //第十帧显示pk结果
-                                    if (frameIndex == 10) {
-                                        runOnUiThread {
-                                            binding.rvResult.show()
-                                        }
-                                    }
-                                }
-
-                                override fun onVideoComplete() {
-                                }
-
-                                override fun onVideoDestroy() {
-                                }
-                            })
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-    override fun resetWindowAttributes(window: Window) {
-        super.resetWindowAttributes(window)
-        window.setLayout(
-            WindowManager.LayoutParams.MATCH_PARENT,
-            WindowManager.LayoutParams.MATCH_PARENT
-        )
-        window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
-        val attr = window.attributes
-        attr.gravity = Gravity.CENTER
-        attr.dimAmount = 0.7f
-        window.attributes = attr
-    }
-}

+ 0 - 61
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/dialog/BettingPKRuleDialog.kt

@@ -1,61 +0,0 @@
-package com.adealink.weparty.bettingpk.dialog
-
-import android.graphics.Color
-import android.graphics.drawable.ColorDrawable
-import android.os.Bundle
-import android.view.Gravity
-import android.view.Window
-import android.view.WindowManager
-import com.adealink.weparty.commonui.dialogfragment.BaseDialogFragment
-import com.adealink.weparty.commonui.ext.dp
-import com.adealink.frame.mvvm.view.viewBinding
-import com.adealink.frame.router.Router
-import com.adealink.frame.router.annotation.RouterUri
-import com.adealink.frame.util.DisplayUtil
-import com.adealink.weparty.module.bettingpk.BettingPK
-import com.adealink.weparty.bettingpk.R
-import com.adealink.weparty.bettingpk.databinding.DialogBettingPkRuleBinding
-import com.adealink.weparty.url.UrlConfig
-import com.adealink.weparty.module.webview.IWebViewFragment
-import com.adealink.weparty.module.webview.WebViewFragmentBuilder
-import kotlin.math.min
-
-@RouterUri(path = [BettingPK.Rule.PATH], desc = "赌注PK规则弹窗")
-class BettingPKRuleDialog : BaseDialogFragment(R.layout.dialog_betting_pk_rule) {
-    private val binding by viewBinding(DialogBettingPkRuleBinding::bind)
-    private var webChannelView: IWebViewFragment? = null
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        Router.bind(this)
-    }
-
-    override fun initViews() {
-        super.initViews()
-        binding.ivClose.setOnClickListener {
-            dismiss()
-        }
-
-        webChannelView = WebViewFragmentBuilder().build()
-        webChannelView?.setTransparentBgWhenPageFinish()
-        webChannelView?.replaceAndShow(
-            childFragmentManager,
-            R.id.fl_content,
-            UrlConfig.bettingPkRule
-        )
-    }
-
-    override fun resetWindowAttributes(window: Window) {
-        super.resetWindowAttributes(window)
-        window.setWindowAnimations(com.adealink.weparty.R.style.CommonDialogAnim)
-        window.setLayout(
-            min(303f.dp(), (DisplayUtil.getScreenWidth() * 0.81f).toInt()),
-            WindowManager.LayoutParams.WRAP_CONTENT
-        )
-        window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
-        val attr = window.attributes
-        attr.gravity = Gravity.CENTER
-        attr.dimAmount = 0.7f
-        window.attributes = attr
-    }
-}

+ 0 - 133
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/fragment/InPkFragment.kt

@@ -1,133 +0,0 @@
-package com.adealink.weparty.bettingpk.fragment
-
-import android.graphics.Color
-import android.os.Bundle
-import androidx.fragment.app.activityViewModels
-import androidx.fragment.app.viewModels
-import androidx.recyclerview.widget.LinearLayoutManager
-import androidx.recyclerview.widget.RecyclerView
-import com.adealink.frame.aab.util.getCompatColor
-import com.adealink.frame.base.Rlt
-import com.adealink.frame.base.fastLazy
-import com.adealink.weparty.commonui.BaseFragment
-import com.adealink.weparty.commonui.ext.dp
-import com.adealink.weparty.commonui.ext.gone
-import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
-import com.adealink.weparty.commonui.recycleview.itemdecoration.VerticalSpaceItemDecoration
-import com.adealink.weparty.commonui.toast.util.showFailedToast
-import com.adealink.frame.mvvm.view.viewBinding
-import com.adealink.weparty.module.bettingpk.BettingPK
-import com.adealink.weparty.bettingpk.R
-import com.adealink.weparty.bettingpk.adapter.InPKItemViewBinder
-import com.adealink.weparty.module.bettingpk.data.BettingPkStatus
-import com.adealink.weparty.R as APP_R
-import com.adealink.weparty.bettingpk.databinding.FragmentBettingPkListBinding
-import com.adealink.weparty.bettingpk.dialog.BettingPKClickAvatarDialog
-import com.adealink.weparty.bettingpk.itemdata.InPKItemData
-import com.adealink.weparty.bettingpk.itemdata.PKListItemDiffUtil
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKListViewModel
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKPageViewModel
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKViewModelFactory
-import com.scwang.smart.refresh.footer.ClassicsFooter
-
-class InPkFragment : BaseFragment(R.layout.fragment_betting_pk_list), InPKItemViewBinder.IPkingListener {
-    private val binding by viewBinding(FragmentBettingPkListBinding::bind)
-    private val viewModel by viewModels<BettingPKListViewModel> { BettingPKViewModelFactory() }
-    private val listAdapter by fastLazy { MultiTypeListAdapter(PKListItemDiffUtil()) }
-    private val pageViewModel by activityViewModels<BettingPKPageViewModel> { BettingPKViewModelFactory() }
-
-    override fun initViews() {
-        super.initViews()
-        listAdapter.register(InPKItemViewBinder(this))
-        binding.rvPk.apply {
-            adapter = listAdapter
-            layoutManager = LinearLayoutManager(context, RecyclerView.VERTICAL, false)
-            addItemDecoration(VerticalSpaceItemDecoration(13.5f.dp()))
-        }
-        binding.refreshLayout.refreshFooter?.let {
-            if (it is ClassicsFooter) {
-                it.setAccentColor(Color.WHITE)
-            }
-        }
-        binding.refreshLayout.setOnRefreshListener { refreshData() }
-        binding.refreshLayout.setOnLoadMoreListener { loadMore() }
-        binding.refreshLayout.setEnableLoadMore(false)
-        binding.vErrorEmpty.setTitleColor(getCompatColor(APP_R.color.white))
-    }
-
-    override fun observeViewModel() {
-        super.observeViewModel()
-        viewModel.pkListLD.observe(viewLifecycleOwner) { rlt ->
-            binding.refreshLayout.finishRefresh()
-            binding.refreshLayout.finishLoadMore()
-            binding.refreshLayout.setEnableLoadMore(!viewModel.noMoreData())
-            when (rlt) {
-                is Rlt.Failed -> {
-                    showFailedToast(rlt)
-                    listAdapter.submitList(emptyList())
-                    showErrorView()
-                }
-
-                is Rlt.Success -> {
-                    val itemList = rlt.data.map { InPKItemData(it) }
-                    listAdapter.submitList(itemList)
-                    if (itemList.isEmpty()) {
-                        showEmptyView()
-                    } else {
-                        hideErrorEmptyView()
-                    }
-                }
-            }
-        }
-        pageViewModel.changeTabAndRefreshLD.observeWithoutCache(this) {
-            if (it == BettingPK.BettingPK.TAB_IN_PK) {
-                binding.refreshLayout.autoRefresh()
-            }
-        }
-    }
-
-    private fun showErrorView() {
-        binding.vErrorEmpty.show(
-            APP_R.drawable.common_list_empty_ic,
-            APP_R.string.common_net_error
-        )
-    }
-
-    private fun showEmptyView() {
-        binding.vErrorEmpty.show(
-            APP_R.drawable.common_list_empty_ic,
-            APP_R.string.commonui_list_empty
-        )
-    }
-
-    private fun hideErrorEmptyView() {
-        binding.vErrorEmpty.gone()
-    }
-
-    override fun loadData() {
-        super.loadData()
-        binding.refreshLayout.autoRefresh()
-    }
-
-    private fun refreshData() {
-        viewModel.loadPkList(BettingPkStatus.IN_PK.status)
-    }
-
-    private fun loadMore() {
-        viewModel.loadMorePkList(BettingPkStatus.IN_PK.status)
-    }
-
-    override fun clickAvatar(uid: Long, roomId: Long) {
-        val act = activity ?: return
-        BettingPKClickAvatarDialog().apply {
-            arguments = Bundle().apply {
-                putLong(BettingPK.Common.EXTRA_UID, uid)
-                putLong(BettingPK.Common.EXTRA_ROOM_ID, roomId)
-            }
-            goRoomClick = {
-                pageViewModel.dismissPage()
-            }
-            show(act.supportFragmentManager, "ClickAvatarDialog")
-        }
-    }
-}

+ 0 - 144
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/fragment/PkResultFragment.kt

@@ -1,144 +0,0 @@
-package com.adealink.weparty.bettingpk.fragment
-
-import android.graphics.Color
-import android.os.Bundle
-import androidx.fragment.app.activityViewModels
-import androidx.fragment.app.viewModels
-import androidx.recyclerview.widget.LinearLayoutManager
-import androidx.recyclerview.widget.RecyclerView
-import com.adealink.frame.aab.util.getCompatColor
-import com.adealink.frame.base.Rlt
-import com.adealink.frame.base.fastLazy
-import com.adealink.frame.mvvm.view.viewBinding
-import com.adealink.weparty.module.bettingpk.BettingPK
-import com.adealink.weparty.bettingpk.R
-import com.adealink.weparty.bettingpk.adapter.PKResultItemViewBinder
-import com.adealink.weparty.bettingpk.adapter.TimeItemViewBinder
-import com.adealink.weparty.bettingpk.databinding.FragmentBettingPkListBinding
-import com.adealink.weparty.bettingpk.dialog.BettingPKClickAvatarDialog
-import com.adealink.weparty.bettingpk.itemdata.PKListItemDiffUtil
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKListViewModel
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKPageViewModel
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKViewModelFactory
-import com.adealink.weparty.commonui.BaseFragment
-import com.adealink.weparty.commonui.ext.gone
-import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
-import com.adealink.weparty.commonui.toast.util.showFailedToast
-import com.adealink.weparty.module.bettingpk.data.BettingPkStatus
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.util.timeToEnYYMMDD
-import com.scwang.smart.refresh.footer.ClassicsFooter
-import com.adealink.weparty.R as APP_R
-
-class PkResultFragment : BaseFragment(R.layout.fragment_betting_pk_list), PKResultItemViewBinder.IPkResultListener {
-    private val binding by viewBinding(FragmentBettingPkListBinding::bind)
-    private val viewModel by viewModels<BettingPKListViewModel> { BettingPKViewModelFactory() }
-    private val listAdapter by fastLazy { MultiTypeListAdapter(PKListItemDiffUtil()) }
-    private val pageViewModel by activityViewModels<BettingPKPageViewModel> { BettingPKViewModelFactory() }
-    private var pkResultDate: String = timeToEnYYMMDD(System.currentTimeMillis())
-
-    override fun initViews() {
-        super.initViews()
-        listAdapter.register(TimeItemViewBinder())
-        listAdapter.register(PKResultItemViewBinder(this))
-        binding.rvPk.apply {
-            adapter = listAdapter
-            layoutManager = LinearLayoutManager(context, RecyclerView.VERTICAL, false)
-            //addItemDecoration(VerticalSpaceItemDecoration(13.5f.dp()))
-        }
-        binding.refreshLayout.refreshFooter?.let {
-            if (it is ClassicsFooter) {
-                it.setAccentColor(Color.WHITE)
-            }
-        }
-        binding.refreshLayout.setOnRefreshListener { refreshData() }
-        binding.refreshLayout.setOnLoadMoreListener { loadMore() }
-        binding.refreshLayout.setEnableLoadMore(false)
-        binding.vErrorEmpty.setTitleColor(getCompatColor(com.adealink.weparty.R.color.white))
-    }
-
-    override fun loadData() {
-        super.loadData()
-        binding.refreshLayout.autoRefresh()
-    }
-
-    override fun observeViewModel() {
-        super.observeViewModel()
-        viewModel.pkListLD.observe(viewLifecycleOwner) { rlt ->
-            binding.refreshLayout.finishRefresh()
-            binding.refreshLayout.finishLoadMore()
-            binding.refreshLayout.setEnableLoadMore(!viewModel.noMoreData())
-            when (rlt) {
-                is Rlt.Failed -> {
-                    showFailedToast(rlt)
-                    listAdapter.submitList(emptyList())
-                    showErrorView()
-                }
-
-                is Rlt.Success -> {
-                    groupByTimeAndSubmit(rlt.data)
-                }
-            }
-        }
-        pageViewModel.changeTabAndRefreshLD.observeWithoutCache(this) {
-            if (it == BettingPK.BettingPK.TAB_PK_RESULT) {
-                binding.refreshLayout.autoRefresh()
-            }
-        }
-        pageViewModel.dateLD.observeWithoutCache(this) {
-            pkResultDate = timeToEnYYMMDD(it)
-            binding.refreshLayout.autoRefresh()
-        }
-    }
-
-    private fun showErrorView() {
-        binding.vErrorEmpty.show(
-            APP_R.drawable.common_list_empty_ic,
-            com.adealink.weparty.R.string.common_net_error
-        )
-    }
-
-    private fun showEmptyView() {
-        binding.vErrorEmpty.show(
-            APP_R.drawable.common_list_empty_ic,
-            APP_R.string.commonui_list_empty
-        )
-    }
-
-    private fun hideErrorEmptyView() {
-        binding.vErrorEmpty.gone()
-    }
-
-    private fun refreshData() {
-        viewModel.loadPkList(BettingPkStatus.OVER.status, pkResultDate)
-    }
-
-    private fun loadMore() {
-        viewModel.loadMorePkList(BettingPkStatus.OVER.status, pkResultDate)
-    }
-
-    private fun groupByTimeAndSubmit(list: List<PKInfoData>) {
-        viewModel.groupByTime(list).observe(viewLifecycleOwner) {
-            listAdapter.submitList(it)
-            if (it.isEmpty()) {
-                showEmptyView()
-            } else {
-                hideErrorEmptyView()
-            }
-        }
-    }
-
-    override fun clickAvatar(uid: Long, roomId: Long) {
-        val act = activity ?: return
-        BettingPKClickAvatarDialog().apply {
-            arguments = Bundle().apply {
-                putLong(BettingPK.Common.EXTRA_UID, uid)
-                putLong(BettingPK.Common.EXTRA_ROOM_ID, roomId)
-            }
-            goRoomClick = {
-                pageViewModel.dismissPage()
-            }
-            show(act.supportFragmentManager, "ClickAvatarDialog")
-        }
-    }
-}

+ 0 - 240
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/fragment/WaitForPkFragment.kt

@@ -1,240 +0,0 @@
-package com.adealink.weparty.bettingpk.fragment
-
-import android.graphics.Color
-import android.os.Bundle
-import android.view.LayoutInflater
-import androidx.fragment.app.activityViewModels
-import androidx.fragment.app.viewModels
-import androidx.recyclerview.widget.LinearLayoutManager
-import androidx.recyclerview.widget.RecyclerView
-import com.adealink.frame.aab.util.getCompatColor
-import com.adealink.frame.aab.util.getCompatString
-import com.adealink.frame.base.Rlt
-import com.adealink.frame.base.fastLazy
-import com.adealink.weparty.commonui.BaseFragment
-import com.adealink.weparty.commonui.ext.dp
-import com.adealink.weparty.commonui.ext.dpf
-import com.adealink.weparty.commonui.ext.gone
-import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
-import com.adealink.weparty.commonui.recycleview.itemdecoration.HorizontalItemDecoration
-import com.adealink.weparty.commonui.recycleview.itemdecoration.VerticalSpaceItemDecoration
-import com.adealink.weparty.commonui.toast.util.showFailedToast
-import com.adealink.weparty.commonui.toast.util.showToast
-import com.adealink.frame.mvvm.view.viewBinding
-import com.adealink.weparty.module.backpack.BackpackModule
-import com.adealink.weparty.module.backpack.SelectUserPackageInfo
-import com.adealink.weparty.module.bettingpk.BettingPK
-import com.adealink.weparty.bettingpk.R
-import com.adealink.weparty.bettingpk.adapter.BetInfoItemViewBinder
-import com.adealink.weparty.bettingpk.adapter.WaitForPKItemViewBinder
-import com.adealink.weparty.bettingpk.data.BETTING_PK_ITEM_TYPES
-import com.adealink.weparty.module.bettingpk.data.BettingPkStatus
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.module.bettingpk.data.PkPackageInfos
-import com.adealink.weparty.bettingpk.databinding.FragmentBettingPkListBinding
-import com.adealink.weparty.bettingpk.databinding.LayoutBettingPkChallengeConfirmBinding
-import com.adealink.weparty.bettingpk.dialog.BettingPKAlertDialog
-import com.adealink.weparty.bettingpk.dialog.BettingPKClickAvatarDialog
-import com.adealink.weparty.bettingpk.itemdata.BetInfoItemData
-import com.adealink.weparty.bettingpk.itemdata.BetListItemDiffUtil
-import com.adealink.weparty.bettingpk.itemdata.PKListItemDiffUtil
-import com.adealink.weparty.bettingpk.itemdata.WaitForPKItemData
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKListViewModel
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKPageViewModel
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKViewModel
-import com.adealink.weparty.bettingpk.viewmodel.BettingPKViewModelFactory
-import com.scwang.smart.refresh.footer.ClassicsFooter
-import com.adealink.weparty.R as APP_R
-
-class WaitForPkFragment : BaseFragment(R.layout.fragment_betting_pk_list), WaitForPKItemViewBinder.IWaitForPkListener {
-    private val binding by viewBinding(FragmentBettingPkListBinding::bind)
-    private val viewModel by viewModels<BettingPKViewModel> { BettingPKViewModelFactory() }
-    private val listViewModel by viewModels<BettingPKListViewModel>({ requireActivity() }) { BettingPKViewModelFactory() }
-    private val listAdapter by fastLazy { MultiTypeListAdapter(PKListItemDiffUtil()) }
-    private val pageViewModel by activityViewModels<BettingPKPageViewModel> { BettingPKViewModelFactory() }
-
-    override fun initViews() {
-        super.initViews()
-        listAdapter.register(WaitForPKItemViewBinder(this))
-        binding.rvPk.apply {
-            adapter = listAdapter
-            layoutManager = LinearLayoutManager(context, RecyclerView.VERTICAL, false)
-            addItemDecoration(VerticalSpaceItemDecoration(13.5f.dp()))
-        }
-        binding.refreshLayout.refreshFooter?.let {
-            if (it is ClassicsFooter) {
-                it.setAccentColor(Color.WHITE)
-            }
-        }
-        binding.refreshLayout.setOnRefreshListener { refreshData() }
-        binding.refreshLayout.setOnLoadMoreListener { loadMore() }
-        binding.refreshLayout.setEnableLoadMore(false)
-        binding.vErrorEmpty.setTitleColor(getCompatColor(APP_R.color.white))
-    }
-
-    override fun observeViewModel() {
-        super.observeViewModel()
-        listViewModel.pkListLD.observe(viewLifecycleOwner) { rlt ->
-            binding.refreshLayout.finishRefresh()
-            binding.refreshLayout.finishLoadMore()
-            binding.refreshLayout.setEnableLoadMore(!listViewModel.noMoreData())
-            when (rlt) {
-                is Rlt.Failed -> {
-                    showFailedToast(rlt)
-                    listAdapter.submitList(emptyList())
-                    showErrorView()
-                }
-
-                is Rlt.Success -> {
-                    val itemList = rlt.data.map { WaitForPKItemData(it) }
-                    listAdapter.submitList(itemList)
-                    if (itemList.isEmpty()) {
-                        showEmptyView()
-                    } else {
-                        hideErrorEmptyView()
-                    }
-                }
-            }
-        }
-        viewModel.onPkStartLD.observeWithoutCache(this) {
-            binding.refreshLayout.autoRefresh()
-            pageViewModel.changeTabAndRefresh(BettingPK.BettingPK.TAB_IN_PK)
-        }
-        pageViewModel.changeTabAndRefreshLD.observeWithoutCache(this) {
-            if (it == BettingPK.BettingPK.TAB_WAIT_FOR_PK) {
-                binding.refreshLayout.autoRefresh()
-            }
-        }
-    }
-
-    override fun loadData() {
-        super.loadData()
-        binding.refreshLayout.autoRefresh()
-    }
-
-    private fun showErrorView() {
-        binding.vErrorEmpty.show(
-            APP_R.drawable.common_list_empty_ic,
-            APP_R.string.common_net_error
-        )
-    }
-
-    private fun showEmptyView() {
-        binding.vErrorEmpty.show(
-            APP_R.drawable.common_list_empty_ic,
-            APP_R.string.commonui_list_empty
-        )
-    }
-
-    private fun hideErrorEmptyView() {
-        binding.vErrorEmpty.gone()
-    }
-
-    private fun refreshData() {
-        listViewModel.loadPkList(BettingPkStatus.WAIT.status)
-    }
-
-    private fun loadMore() {
-        listViewModel.loadMorePkList(BettingPkStatus.WAIT.status)
-    }
-
-    override fun challenge(data: PKInfoData) {
-        if (data.hasBet()) {
-            val act = activity ?: return
-            BackpackModule.showSelectBackpackDialog(
-                act.supportFragmentManager,
-                getCompatString(R.string.betting_pk_add_bet_title),
-                getCompatString(R.string.betting_pk_other_add_bet_desc),
-                null,
-                BETTING_PK_ITEM_TYPES
-            ) {
-                if (it.isEmpty()) {
-                    showToast(R.string.betting_pk_other_add_bet_desc)
-                    return@showSelectBackpackDialog
-                }
-                showChallengeConfirmDialog(it) {
-                    showLoading()
-                    viewModel.otherAcceptPk(data.gameId, it).observe(viewLifecycleOwner) { rlt ->
-                        dismissLoading()
-                        when (rlt) {
-                            is Rlt.Failed -> {
-                                showToast(rlt)
-                            }
-
-                            is Rlt.Success -> {
-                                binding.refreshLayout.autoRefresh()
-                            }
-                        }
-                    }
-                }
-            }
-        } else {
-            showLoading()
-            viewModel.otherAcceptPk(data.gameId).observe(viewLifecycleOwner) { rlt ->
-                dismissLoading()
-                when (rlt) {
-                    is Rlt.Failed -> {
-                        showToast(rlt)
-                    }
-
-                    is Rlt.Success -> {
-                        binding.refreshLayout.autoRefresh()
-                        pageViewModel.changeTabAndRefresh(BettingPK.BettingPK.TAB_IN_PK)
-                    }
-                }
-            }
-        }
-    }
-
-    override fun clickAvatar(uid: Long, roomId: Long) {
-        val act = activity ?: return
-        BettingPKClickAvatarDialog().apply {
-            arguments = Bundle().apply {
-                putLong(BettingPK.Common.EXTRA_UID, uid)
-                putLong(BettingPK.Common.EXTRA_ROOM_ID, roomId)
-            }
-            goRoomClick = {
-                pageViewModel.dismissPage()
-            }
-            show(act.supportFragmentManager, "ClickAvatarDialog")
-        }
-    }
-
-    private fun showChallengeConfirmDialog(
-        betList: List<SelectUserPackageInfo>,
-        confirm: () -> Unit
-    ) {
-        val act = activity ?: return
-        val customBinding = LayoutBettingPkChallengeConfirmBinding.inflate(LayoutInflater.from(act), null, false)
-        val betListAdapter = MultiTypeListAdapter(BetListItemDiffUtil())
-        customBinding.rvBetItems.apply {
-            betListAdapter.register(BetInfoItemViewBinder(true))
-            layoutManager = LinearLayoutManager(binding.root.context, LinearLayoutManager.HORIZONTAL, false)
-            adapter = betListAdapter
-            addItemDecoration(HorizontalItemDecoration(4.dpf(), 0f, 0f))
-        }
-        betListAdapter.submitList(
-            betList.map {
-                BetInfoItemData(
-                    PkPackageInfos(
-                        it.packageInfo.id,
-                        it.packageInfo.goodsType,
-                        it.packageInfo.img,
-                        it.packageInfo.intimacyType,
-                        it.packageInfo.linkId,
-                        it.packageInfo.type,
-                        it.packageInfo.value,
-                        it.selectNum
-                    )
-                )
-            }
-        )
-        BettingPKAlertDialog.Builder()
-            .customMessageView(customBinding.root)
-            .confirmText(getCompatString(APP_R.string.common_add))
-            .onConfirm {
-                confirm.invoke()
-            }
-            .show(act.supportFragmentManager)
-    }
-}

+ 0 - 26
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/itemdata/BetInfoItemData.kt

@@ -1,26 +0,0 @@
-package com.adealink.weparty.bettingpk.itemdata
-
-import com.adealink.weparty.module.bettingpk.data.PkPackageInfos
-import com.adealink.weparty.module.bettingpk.data.contentsTheSame
-
-sealed class BaseBetItemData {
-    abstract fun contentsTheSame(newItem: BaseBetItemData): Boolean
-}
-
-//添加赌注
-object AddBetItemData : BaseBetItemData() {
-    override fun contentsTheSame(newItem: BaseBetItemData): Boolean {
-        return true
-    }
-}
-
-data class BetInfoItemData(
-    val info: PkPackageInfos
-) : BaseBetItemData() {
-    override fun contentsTheSame(newItem: BaseBetItemData): Boolean {
-        if (newItem !is BetInfoItemData) {
-            return false
-        }
-        return info.contentsTheSame(newItem.info)
-    }
-}

+ 0 - 14
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/itemdata/BetListItemDiffUtil.kt

@@ -1,14 +0,0 @@
-package com.adealink.weparty.bettingpk.itemdata
-
-import androidx.recyclerview.widget.DiffUtil
-
-class BetListItemDiffUtil() :
-    DiffUtil.ItemCallback<BaseBetItemData>() {
-    override fun areItemsTheSame(oldItem: BaseBetItemData, newItem: BaseBetItemData): Boolean {
-        return oldItem == newItem
-    }
-
-    override fun areContentsTheSame(oldItem: BaseBetItemData, newItem: BaseBetItemData): Boolean {
-        return oldItem.contentsTheSame(newItem)
-    }
-}

+ 0 - 52
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/itemdata/PKItemData.kt

@@ -1,52 +0,0 @@
-package com.adealink.weparty.bettingpk.itemdata
-
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.module.bettingpk.data.contentsTheSame
-
-sealed class BasePKItemData {
-    abstract fun contentsTheSame(newItem: BasePKItemData): Boolean
-}
-
-data class WaitForPKItemData(
-    val data: PKInfoData
-) : BasePKItemData() {
-    override fun contentsTheSame(newItem: BasePKItemData): Boolean {
-        if (newItem !is WaitForPKItemData) {
-            return false
-        }
-        return data.contentsTheSame(newItem.data)
-    }
-}
-
-data class InPKItemData(
-    val data: PKInfoData
-) : BasePKItemData() {
-    override fun contentsTheSame(newItem: BasePKItemData): Boolean {
-        if (newItem !is InPKItemData) {
-            return false
-        }
-        return data.contentsTheSame(newItem.data)
-    }
-}
-
-data class PKResultItemData(
-    val data: PKInfoData
-) : BasePKItemData() {
-    override fun contentsTheSame(newItem: BasePKItemData): Boolean {
-        if (newItem !is PKResultItemData) {
-            return false
-        }
-        return data.contentsTheSame(newItem.data)
-    }
-}
-
-data class RecordTimeItemData(
-    val time: Long
-) : BasePKItemData() {
-    override fun contentsTheSame(newItem: BasePKItemData): Boolean {
-        if (newItem !is RecordTimeItemData) {
-            return false
-        }
-        return time == newItem.time
-    }
-}

+ 0 - 14
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/itemdata/PKListItemDiffUtil.kt

@@ -1,14 +0,0 @@
-package com.adealink.weparty.bettingpk.itemdata
-
-import androidx.recyclerview.widget.DiffUtil
-
-class PKListItemDiffUtil() :
-    DiffUtil.ItemCallback<BasePKItemData>() {
-    override fun areItemsTheSame(oldItem: BasePKItemData, newItem: BasePKItemData): Boolean {
-        return oldItem == newItem
-    }
-
-    override fun areContentsTheSame(oldItem: BasePKItemData, newItem: BasePKItemData): Boolean {
-        return oldItem.contentsTheSame(newItem)
-    }
-}

+ 0 - 283
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/manager/BettingPKManager.kt

@@ -1,283 +0,0 @@
-package com.adealink.weparty.bettingpk.manager
-
-import com.adealink.frame.frame.BaseFrame
-import com.adealink.frame.log.Log
-import com.adealink.frame.network.ISocketNotify
-import com.adealink.frame.room.data.FlowStateInfo
-import com.adealink.frame.util.safeToLong
-import com.adealink.weparty.App
-import com.adealink.weparty.bettingpk.data.AcceptPkNotify
-import com.adealink.weparty.bettingpk.data.InvitePkNotify
-import com.adealink.weparty.bettingpk.data.PkAddScoreNotify
-import com.adealink.weparty.bettingpk.data.PkResultNotify
-import com.adealink.weparty.bettingpk.data.PkStartNotify
-import com.adealink.weparty.bettingpk.data.PkUserStartNotify
-import com.adealink.weparty.bettingpk.data.RejectPkNotify
-import com.adealink.weparty.bettingpk.data.TAG_PK
-import com.adealink.weparty.config.GlobalConfigType
-import com.adealink.weparty.config.IGlobalConfigListener
-import com.adealink.weparty.config.globalConfigManager
-import com.adealink.weparty.module.profile.ProfileModule
-import com.adealink.weparty.module.room.RoomModule
-import com.adealink.weparty.module.room.listener.IRoomListener
-import kotlinx.coroutines.launch
-
-val bettingPkManager : IBettingPKManager by lazy { BettingPKManager() }
-
-class BettingPKManager : BaseFrame<IBettingPKManager.IBettingPKListener>(), IBettingPKManager,
-    IRoomListener, IGlobalConfigListener {
-
-    private var showEntrance: Boolean? = null
-
-    /**
-     * 别人邀请我参加PK
-     */
-    private val invitePkNotify = object : ISocketNotify<InvitePkNotify> {
-
-        override val uri: String = "SUPER_PK_INVITE_NOTIFY"
-
-        override fun needHandle(data: InvitePkNotify?): Boolean {
-            return data != null
-        }
-
-        override fun onNotify(data: InvitePkNotify) {
-            handleInvitePkNotify(data)
-        }
-    }
-
-    /**
-     * 别人发起挑战,我是否迎战
-     */
-    private val acceptPkNotify = object : ISocketNotify<AcceptPkNotify> {
-
-        override val uri: String = "SUPER_PK_ACCEPT_NOTIFY"
-
-        override fun needHandle(data: AcceptPkNotify?): Boolean {
-            return data != null && data.ownerUid == ProfileModule.getMyUid()
-        }
-
-        override fun onNotify(data: AcceptPkNotify) {
-            handleAcceptPkNotify(data)
-        }
-    }
-
-    private val rejectPkNotify = object : ISocketNotify<RejectPkNotify> {
-
-        override val uri: String = "SUPER_PK_REJECT_NOTIFY"
-
-        override fun needHandle(data: RejectPkNotify?): Boolean {
-            return data != null
-        }
-
-        override fun onNotify(data: RejectPkNotify) {
-            handleRejectPkNotify(data)
-        }
-    }
-
-    private val pkStartNotify = object : ISocketNotify<PkStartNotify> {
-
-        override val uri: String = "SUPER_PK_START_NOTIFY"
-
-        override fun needHandle(data: PkStartNotify?): Boolean {
-            data ?: return false
-            val currentRoomId = RoomModule.getJoinedRoomId()
-            val ownerId = data.ownerId.safeToLong(0)
-            val otherId = data.otherId.safeToLong(0)
-            if (currentRoomId != ownerId && currentRoomId != otherId) {
-                return false
-            }
-            return true
-        }
-
-        override fun onNotify(data: PkStartNotify) {
-            handlePkStartNotify(data)
-        }
-    }
-
-    private val pkUserStartNotify = object : ISocketNotify<PkUserStartNotify> {
-
-        override val uri: String = "SUPER_PK_START_USER_NOTIFY"
-
-        override fun needHandle(data: PkUserStartNotify?): Boolean {
-            return data != null
-        }
-
-        override fun onNotify(data: PkUserStartNotify) {
-            handlePkUserStartNotify(data)
-        }
-    }
-
-    private val pkResultNotify = object : ISocketNotify<PkResultNotify> {
-
-        override val uri: String = "SUPER_PK_RESULT_NOTIFY"
-
-        override fun needHandle(data: PkResultNotify?): Boolean {
-            return data != null
-        }
-
-        override fun onNotify(data: PkResultNotify) {
-            handlePkResultNotify(data)
-        }
-    }
-
-    private val pkAddScoreNotify = object : ISocketNotify<PkAddScoreNotify> {
-
-        override val uri: String = "SUPER_PK_ADD_SCORE_NOTIFY"
-
-        override fun needHandle(data: PkAddScoreNotify?): Boolean {
-            data ?: return false
-            val currentRoomId = RoomModule.getJoinedRoomId()
-            val ownerId = data.ownerId.safeToLong(0)
-            val otherId = data.otherId.safeToLong(0)
-            if (currentRoomId != ownerId && currentRoomId != otherId) {
-                return false
-            }
-            return true
-        }
-
-        override fun onNotify(data: PkAddScoreNotify) {
-            handlePkAddScoreNotify(data)
-        }
-    }
-
-
-    init {
-        RoomModule.registerListener(this)
-        globalConfigManager.getConfig(GlobalConfigType.GLOBAL_BETTING_PK)?.let {
-            handleShowEntrance(it.firstOrNull())
-        }
-        globalConfigManager.addListener(GlobalConfigType.GLOBAL_BETTING_PK, this)
-    }
-
-    private fun registerNotify() {
-        Log.d(TAG_PK, "registerNotify")
-        App.instance.networkService.subscribeNotify(invitePkNotify)
-        App.instance.networkService.subscribeNotify(acceptPkNotify)
-        App.instance.networkService.subscribeNotify(rejectPkNotify)
-        App.instance.networkService.subscribeNotify(pkStartNotify)
-        App.instance.networkService.subscribeNotify(pkUserStartNotify)
-        App.instance.networkService.subscribeNotify(pkResultNotify)
-        App.instance.networkService.subscribeNotify(pkAddScoreNotify)
-    }
-
-    private fun unRegisterNotify() {
-        Log.d(TAG_PK, "unRegisterNotify")
-        App.instance.networkService.unSubscribeNotify(invitePkNotify)
-        App.instance.networkService.unSubscribeNotify(acceptPkNotify)
-        App.instance.networkService.unSubscribeNotify(rejectPkNotify)
-        App.instance.networkService.unSubscribeNotify(pkStartNotify)
-        App.instance.networkService.unSubscribeNotify(pkUserStartNotify)
-        App.instance.networkService.unSubscribeNotify(pkResultNotify)
-        App.instance.networkService.unSubscribeNotify(pkAddScoreNotify)
-    }
-
-    override fun onRoomIn(roomId: Long, flowStateInfo: FlowStateInfo) {
-        super.onRoomIn(roomId, flowStateInfo)
-        Log.d(TAG_PK, "onRoomIn: $roomId")
-        registerNotify()
-    }
-
-
-    override fun onRoomLeaved(roomId: Long, flowStateInfo: FlowStateInfo) {
-        super.onRoomLeaved(roomId, flowStateInfo)
-        Log.d(TAG_PK, "onRoomLeaved: $roomId")
-        unRegisterNotify()
-    }
-
-    private fun handleInvitePkNotify(notify: InvitePkNotify) {
-        launch {
-            notify.initData()
-            dispatch {
-                it.onInvitePk(notify)
-            }
-        }
-    }
-
-    private fun handleAcceptPkNotify(notify: AcceptPkNotify) {
-        launch {
-            notify.initData()
-            dispatch {
-                it.onAcceptPk(notify)
-            }
-        }
-    }
-
-    private fun handleRejectPkNotify(notify: RejectPkNotify) {
-        launch {
-            notify.initData()
-            dispatch {
-                it.onRejectPk(notify)
-            }
-        }
-    }
-
-    private fun handlePkStartNotify(notify: PkStartNotify) {
-        launch {
-            notify.initData()
-            dispatch {
-                it.onPkStart(notify)
-            }
-        }
-    }
-
-    private fun handlePkUserStartNotify(notify: PkUserStartNotify) {
-        launch {
-            notify.initData()
-            dispatch {
-                it.onUserPkStart(notify)
-            }
-        }
-    }
-
-    private fun handlePkResultNotify(notify: PkResultNotify) {
-        launch {
-            notify.initData()
-            dispatch {
-                it.onPkResult(notify)
-            }
-        }
-    }
-
-    private fun handlePkAddScoreNotify(notify: PkAddScoreNotify) {
-        launch {
-            notify.initData()
-            dispatch {
-                it.onPkAddScore(notify)
-            }
-        }
-    }
-
-    override fun initialize() {
-        val roomId = RoomModule.getJoinedRoomId()
-        if (roomId != null && roomId != 0L) {
-            registerNotify()
-        }
-    }
-
-    private fun handleShowEntrance(configStr: String?) {
-        launch {
-            configStr ?: return@launch
-            showEntrance = configStr == "1"
-        }
-    }
-
-    override suspend fun loadShowEntrance() {
-        val show = showEntrance
-        if (show == null) {
-            globalConfigManager.suspendGetConfig(GlobalConfigType.GLOBAL_BETTING_PK)?.let {
-                handleShowEntrance(it.firstOrNull())
-            }
-        }
-    }
-
-    override fun isShowEntrance(): Boolean {
-        return showEntrance ?: false
-    }
-
-    override fun onConfigGet(configType: GlobalConfigType, config: List<String>) {
-        if (configType == GlobalConfigType.GLOBAL_BETTING_PK) {
-            handleShowEntrance(config.firstOrNull())
-        }
-    }
-
-}

+ 0 - 37
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/manager/IBettingPKManager.kt

@@ -1,37 +0,0 @@
-package com.adealink.weparty.bettingpk.manager
-
-import com.adealink.frame.frame.IBaseFrame
-import com.adealink.frame.frame.IListener
-import com.adealink.weparty.bettingpk.data.AcceptPkNotify
-import com.adealink.weparty.bettingpk.data.InvitePkNotify
-import com.adealink.weparty.bettingpk.data.PkAddScoreNotify
-import com.adealink.weparty.bettingpk.data.PkResultNotify
-import com.adealink.weparty.bettingpk.data.RejectPkNotify
-import com.adealink.weparty.bettingpk.data.PkStartNotify
-import com.adealink.weparty.bettingpk.data.PkUserStartNotify
-
-interface IBettingPKManager : IBaseFrame<IBettingPKManager.IBettingPKListener> {
-
-    fun initialize()
-    suspend fun loadShowEntrance()
-
-    fun isShowEntrance(): Boolean
-
-    interface IBettingPKListener : IListener {
-
-        fun onInvitePk(notify: InvitePkNotify) {}
-
-        fun onAcceptPk(notify: AcceptPkNotify) {}
-
-        fun onRejectPk(notify: RejectPkNotify) {}
-
-        fun onPkStart(notify: PkStartNotify) {}
-
-        fun onUserPkStart(notify: PkUserStartNotify) {}
-
-        fun onPkResult(notify: PkResultNotify) {}
-
-        fun onPkAddScore(notify: PkAddScoreNotify) {}
-
-    }
-}

+ 0 - 11
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/viewmodel/BettingPKEffectViewModel.kt

@@ -1,11 +0,0 @@
-package com.adealink.weparty.bettingpk.viewmodel
-
-import com.adealink.frame.download.task.Task
-import com.adealink.weparty.App
-import com.adealink.weparty.commonui.viewmodel.VapcEffectViewModel
-
-class BettingPKEffectViewModel : VapcEffectViewModel() {
-    override fun addDownloadTask(task: Task) {
-        App.instance.downloadService.addTask(task)
-    }
-}

+ 0 - 129
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/viewmodel/BettingPKListViewModel.kt

@@ -1,129 +0,0 @@
-package com.adealink.weparty.bettingpk.viewmodel
-
-import androidx.lifecycle.LiveData
-import androidx.lifecycle.MutableLiveData
-import com.adealink.frame.base.Rlt
-import com.adealink.frame.coroutine.dispatcher.Dispatcher
-import com.adealink.frame.mvvm.livedata.OnceMutableLiveData
-import com.adealink.frame.mvvm.viewmodel.BaseViewModel
-import com.adealink.frame.network.data.Res
-import com.adealink.weparty.App
-import com.adealink.weparty.bettingpk.data.BETTING_PK_TYPE_ROOM
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.bettingpk.datasource.remote.BettingPKHttpService
-import com.adealink.weparty.bettingpk.itemdata.BasePKItemData
-import com.adealink.weparty.bettingpk.itemdata.PKResultItemData
-import com.adealink.weparty.bettingpk.itemdata.RecordTimeItemData
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.withContext
-
-class BettingPKListViewModel : BaseViewModel() {
-
-    private val bettingPkHttpService by lazy {
-        App.instance.networkService.getHttpService(BettingPKHttpService::class.java)
-    }
-
-    private var noMoreData = false
-    private var page = 0
-    private val pkGameIdSet = mutableSetOf<String>()
-    private val pkList = mutableListOf<PKInfoData>()
-    val pkListLD = MutableLiveData<Rlt<List<PKInfoData>>>()
-
-    fun loadPkList(status: Int, date: String? = null) {
-        viewModelScope.launch {
-            page = 0
-            noMoreData = false
-            pkList.clear()
-            pkGameIdSet.clear()
-            loadMorePkList(status, date)
-        }
-    }
-
-    fun loadMorePkList(status: Int, date: String? = null) {
-        viewModelScope.launch {
-            when (val rlt = loadPkListInner(
-                status,
-                page,
-                PAGE_SIZE,
-                date
-            )) {
-                is Rlt.Failed -> {
-                    if (pkList.isEmpty()) {
-                        pkListLD.send(rlt)
-                    } else {
-                        pkListLD.send(Rlt.Success(pkList))
-                    }
-                }
-
-                is Rlt.Success -> {
-                    val list = (rlt.data.data ?: emptyList())
-                        .filter { !pkGameIdSet.contains(it.gameId) }
-                    pkGameIdSet.addAll(list.map { it.gameId })
-                    list.onEach {
-                        withContext(Dispatcher.WENEXT_THREAD_POOL) {
-                            it.initData()
-                        }
-                    }
-                    page++
-                    noMoreData = list.isEmpty()
-                    pkList.addAll(list)
-                    pkListLD.send(Rlt.Success(pkList))
-                }
-            }
-        }
-    }
-
-    fun loadPkList(status: Int, page: Int, pageSize: Int): LiveData<Rlt<List<PKInfoData>>> {
-        val liveData = OnceMutableLiveData<Rlt<List<PKInfoData>>>()
-        viewModelScope.launch {
-            when (val rlt = loadPkListInner(status, page, pageSize, null)) {
-                is Rlt.Failed -> {
-                    liveData.send(rlt)
-                }
-
-                is Rlt.Success -> {
-                    liveData.send(Rlt.Success(rlt.data.data ?: emptyList()))
-                }
-            }
-        }
-        return liveData
-    }
-
-    private suspend fun loadPkListInner(status: Int, page: Int, pageSize: Int, date: String?): Rlt<Res<List<PKInfoData>>> {
-        return bettingPkHttpService.getPkInfoList(
-            BETTING_PK_TYPE_ROOM,
-            status,
-            page,
-            pageSize,
-            date
-        )
-    }
-
-    fun noMoreData(): Boolean {
-        return noMoreData
-    }
-
-    fun groupByTime(list: List<PKInfoData>): LiveData<List<BasePKItemData>> {
-        val liveData = OnceMutableLiveData<List<BasePKItemData>>()
-        viewModelScope.launch {
-            withContext(Dispatcher.WENEXT_THREAD_POOL) {
-                var dayTime = 0L
-                val finalList = mutableListOf<BasePKItemData>()
-                list.onEach {
-                    val itemDayTime = it.getStartTimeDay()
-                    if (dayTime != itemDayTime) {
-                        dayTime = itemDayTime
-                        finalList.add(RecordTimeItemData(dayTime * 86400000))
-                    }
-                    finalList.add(PKResultItemData(it))
-                }
-                liveData.send(finalList)
-            }
-        }
-        return liveData
-    }
-
-    companion object {
-        private const val PAGE_SIZE = 20
-    }
-}

+ 0 - 24
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/viewmodel/BettingPKPageViewModel.kt

@@ -1,24 +0,0 @@
-package com.adealink.weparty.bettingpk.viewmodel
-
-import com.adealink.frame.mvvm.livedata.ExtMutableLiveData
-import com.adealink.frame.mvvm.viewmodel.BaseViewModel
-
-class BettingPKPageViewModel : BaseViewModel() {
-
-    val changeTabAndRefreshLD = ExtMutableLiveData<Int>()
-    val dismissPageLD = ExtMutableLiveData<Unit>()
-
-    val dateLD = ExtMutableLiveData<Long>()
-
-    fun changeTabAndRefresh(tab: Int) {
-        changeTabAndRefreshLD.send(tab)
-    }
-
-    fun changeDate(tab: Long) {
-        dateLD.send(tab)
-    }
-
-    fun dismissPage() {
-        dismissPageLD.send(Unit)
-    }
-}

+ 0 - 102
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/viewmodel/BettingPKRecordViewModel.kt

@@ -1,102 +0,0 @@
-package com.adealink.weparty.bettingpk.viewmodel
-
-import androidx.lifecycle.LiveData
-import androidx.lifecycle.MutableLiveData
-import com.adealink.frame.base.Rlt
-import com.adealink.frame.coroutine.dispatcher.Dispatcher
-import com.adealink.frame.mvvm.livedata.OnceMutableLiveData
-import com.adealink.frame.mvvm.viewmodel.BaseViewModel
-import com.adealink.weparty.App
-import com.adealink.weparty.bettingpk.data.BETTING_PK_TYPE_ROOM
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.bettingpk.datasource.remote.BettingPKHttpService
-import com.adealink.weparty.bettingpk.itemdata.BasePKItemData
-import com.adealink.weparty.bettingpk.itemdata.PKResultItemData
-import com.adealink.weparty.bettingpk.itemdata.RecordTimeItemData
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.withContext
-
-class BettingPKRecordViewModel : BaseViewModel() {
-
-    private val bettingPkHttpService by lazy {
-        App.instance.networkService.getHttpService(BettingPKHttpService::class.java)
-    }
-
-    private var noMoreData = false
-    private var page = 1
-    private val pkGameIdSet = mutableSetOf<String>()
-    private val pkList = mutableListOf<PKInfoData>()
-    val pkListLD = MutableLiveData<Rlt<List<PKInfoData>>>()
-
-    fun loadPkList() {
-        viewModelScope.launch {
-            page = 1
-            noMoreData = false
-            pkList.clear()
-            pkGameIdSet.clear()
-            loadMorePkList()
-        }
-    }
-
-    fun loadMorePkList() {
-        viewModelScope.launch {
-            when (val rlt = bettingPkHttpService.getMyPkRecords(
-                BETTING_PK_TYPE_ROOM,
-                page,
-                PAGE_SIZE
-            )) {
-                is Rlt.Failed -> {
-                    if (pkList.isEmpty()) {
-                        pkListLD.send(rlt)
-                    } else {
-                        pkListLD.send(Rlt.Success(pkList))
-                    }
-                }
-
-                is Rlt.Success -> {
-                    val list = (rlt.data.data?.records ?: emptyList())
-                        .filter { !pkGameIdSet.contains(it.gameId) }
-                    pkGameIdSet.addAll(list.map { it.gameId })
-                    list.onEach {
-                        withContext(Dispatcher.WENEXT_THREAD_POOL) {
-                            it.initData()
-                        }
-                    }
-                    page++
-                    noMoreData = list.isEmpty()
-                    pkList.addAll(list)
-                    pkListLD.send(Rlt.Success(pkList))
-                }
-            }
-        }
-    }
-
-    fun noMoreData(): Boolean {
-        return noMoreData
-    }
-
-    fun groupByTime(list: List<PKInfoData>): LiveData<List<BasePKItemData>> {
-        val liveData = OnceMutableLiveData<List<BasePKItemData>>()
-        viewModelScope.launch {
-            withContext(Dispatcher.WENEXT_THREAD_POOL) {
-                val sortedList = list.sortedByDescending { it.startTime }
-                var dayTime = 0L
-                val finalList = mutableListOf<BasePKItemData>()
-                sortedList.onEach {
-                    val itemDayTime = it.getStartTimeDay()
-                    if (dayTime != itemDayTime) {
-                        dayTime = itemDayTime
-                        finalList.add(RecordTimeItemData(dayTime * 86400000))
-                    }
-                    finalList.add(PKResultItemData(it))
-                }
-                liveData.send(finalList)
-            }
-        }
-        return liveData
-    }
-
-    companion object {
-        private const val PAGE_SIZE = 20
-    }
-}

+ 0 - 306
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/viewmodel/BettingPKViewModel.kt

@@ -1,306 +0,0 @@
-package com.adealink.weparty.bettingpk.viewmodel
-
-import androidx.lifecycle.LiveData
-import androidx.lifecycle.MutableLiveData
-import com.adealink.frame.base.Rlt
-import com.adealink.frame.coroutine.dispatcher.Dispatcher
-import com.adealink.frame.mvvm.livedata.ExtLiveData
-import com.adealink.frame.mvvm.livedata.ExtMutableLiveData
-import com.adealink.frame.mvvm.livedata.OnceMutableLiveData
-import com.adealink.frame.mvvm.viewmodel.BaseViewModel
-import com.adealink.frame.network.data.Res
-import com.adealink.weparty.App
-import com.adealink.weparty.module.backpack.SelectUserPackageInfo
-import com.adealink.weparty.bettingpk.data.AcceptPkNotify
-import com.adealink.weparty.bettingpk.data.AcceptPkReq
-import com.adealink.weparty.bettingpk.data.BETTING_PK_TYPE_ROOM
-import com.adealink.weparty.module.bettingpk.data.BettingPkTime
-import com.adealink.weparty.bettingpk.data.CancelPkReq
-import com.adealink.weparty.bettingpk.data.InviteOtherReq
-import com.adealink.weparty.bettingpk.data.InvitePkNotify
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.bettingpk.data.PkAddScoreNotify
-import com.adealink.weparty.module.bettingpk.data.PkPackageInfos
-import com.adealink.weparty.bettingpk.data.PkResultNotify
-import com.adealink.weparty.bettingpk.data.PkStartNotify
-import com.adealink.weparty.bettingpk.data.PkUserStartNotify
-import com.adealink.weparty.bettingpk.data.RejectPkNotify
-import com.adealink.weparty.bettingpk.data.RejectPkReq
-import com.adealink.weparty.bettingpk.data.SetupPkReq
-import com.adealink.weparty.bettingpk.data.StartPkReq
-import com.adealink.weparty.bettingpk.datasource.remote.BettingPKHttpService
-import com.adealink.weparty.bettingpk.itemdata.BasePKItemData
-import com.adealink.weparty.bettingpk.itemdata.PKResultItemData
-import com.adealink.weparty.bettingpk.itemdata.RecordTimeItemData
-import com.adealink.weparty.bettingpk.manager.IBettingPKManager
-import com.adealink.weparty.bettingpk.manager.bettingPkManager
-import com.adealink.weparty.module.bettingpk.viewmodel.IBettingPKViewModel
-import kotlinx.coroutines.launch
-import kotlinx.coroutines.withContext
-
-class BettingPKViewModel : BaseViewModel(), IBettingPKViewModel, IBettingPKManager.IBettingPKListener {
-
-    private val bettingPkHttpService by lazy {
-        App.instance.networkService.getHttpService(BettingPKHttpService::class.java)
-    }
-
-    private var myPkInfo: PKInfoData? = null
-    override val myPkInfoLD: LiveData<PKInfoData?> = MutableLiveData()
-
-    private var ownerBetList: List<SelectUserPackageInfo>? = null
-    val ownerBetListLD = MutableLiveData<List<SelectUserPackageInfo>>()
-
-    override val onInvitePkLD: ExtLiveData<PKInfoData> = ExtMutableLiveData()
-    override val onAcceptPkLD: ExtLiveData<PKInfoData> = ExtMutableLiveData()
-    override val onRejectPkLD: ExtLiveData<PKInfoData> = ExtMutableLiveData()
-    override val onPkStartLD: ExtLiveData<PKInfoData> = ExtMutableLiveData()
-    override val onPkUserStartLD: ExtLiveData<PKInfoData> = ExtMutableLiveData()
-    override val onPkResultLD: ExtLiveData<PKInfoData> = ExtMutableLiveData()
-    override val onPkScoreChangedLD: ExtLiveData<PKInfoData> = ExtMutableLiveData()
-
-    init {
-        bettingPkManager.addListener(this)
-    }
-
-    override fun loadMyPkInfo() {
-        viewModelScope.launch {
-            loadMyPkIfoInner()
-        }
-    }
-
-    override fun loadPkInfo(roomId: Long): LiveData<PKInfoData?> {
-        val liveData = OnceMutableLiveData<PKInfoData?>()
-        viewModelScope.launch {
-            when (val rlt = bettingPkHttpService.getPkInfo(BETTING_PK_TYPE_ROOM, ownerId = roomId.toString())) {
-                is Rlt.Failed -> {
-                    liveData.send(null)
-                }
-
-                is Rlt.Success -> {
-                    val pkInfo = rlt.data.data?.also {
-                        withContext(Dispatcher.WENEXT_THREAD_POOL) {
-                            it.initData()
-                        }
-                    }
-                    liveData.send(pkInfo)
-                }
-            }
-        }
-        return liveData
-    }
-
-    private suspend fun loadMyPkIfoInner() {
-        myPkInfo = when (val rlt = bettingPkHttpService.getPkInfo(BETTING_PK_TYPE_ROOM)) {
-            is Rlt.Failed -> {
-                null
-            }
-
-            is Rlt.Success -> {
-                rlt.data.data?.also {
-                    withContext(Dispatcher.WENEXT_THREAD_POOL) {
-                        it.initData()
-                    }
-                }
-            }
-        }
-        myPkInfoLD.send(myPkInfo)
-    }
-
-    fun getMyPkInfo(): PKInfoData? {
-        return myPkInfo
-    }
-
-    fun ownerAddBet(betList: List<SelectUserPackageInfo>) {
-        viewModelScope.launch {
-            ownerBetList = betList
-            ownerBetListLD.send(betList)
-        }
-    }
-
-    fun clearOwnerAddBet() {
-        ownerBetList = null
-        ownerBetListLD.send(emptyList())
-    }
-
-    fun getOwnerBetList(): List<SelectUserPackageInfo> {
-        return ownerBetList ?: emptyList()
-    }
-
-    fun groupByTime(list: List<PKInfoData>): LiveData<List<BasePKItemData>> {
-        val liveData = OnceMutableLiveData<List<BasePKItemData>>()
-        viewModelScope.launch {
-            withContext(Dispatcher.WENEXT_THREAD_POOL) {
-                val sortedList = list.sortedByDescending { it.startTime }
-                var dayTime = 0L
-                val finalList = mutableListOf<BasePKItemData>()
-                sortedList.onEach {
-                    val itemDayTime = it.getStartTimeDay()
-                    if (dayTime != itemDayTime) {
-                        dayTime = itemDayTime
-                        finalList.add(RecordTimeItemData(dayTime * 86400000))
-                    }
-                    finalList.add(PKResultItemData(it))
-                }
-                liveData.send(finalList)
-            }
-        }
-        return liveData
-    }
-
-    /**
-     * owner取消PK
-     */
-    fun cancelPk(gameId: String): LiveData<Rlt<Any>> {
-        val liveData = OnceMutableLiveData<Rlt<Any>>()
-        viewModelScope.launch {
-            val rlt = bettingPkHttpService.cancelPK(CancelPkReq(gameId))
-            if (rlt is Rlt.Success) {
-                loadMyPkIfoInner()
-            }
-            liveData.send(rlt)
-        }
-        return liveData
-    }
-
-    /**
-     * owner发起随机PK
-     */
-    fun randomPk(pkTime: BettingPkTime?, betList: List<SelectUserPackageInfo>?): LiveData<Rlt<Any>> {
-        val liveData = OnceMutableLiveData<Rlt<Any>>()
-        viewModelScope.launch {
-            liveData.send(createPkInner(pkTime, betList, true))
-        }
-        return liveData
-    }
-
-    fun createPk(pkTime: BettingPkTime?, betList: List<SelectUserPackageInfo>?, isOpen: Boolean): LiveData<Rlt<Any>> {
-        val liveData = OnceMutableLiveData<Rlt<Any>>()
-        viewModelScope.launch {
-            liveData.send(createPkInner(pkTime, betList, isOpen))
-        }
-        return liveData
-    }
-
-    private suspend fun createPkInner(
-        pkTime: BettingPkTime?,
-        betList: List<SelectUserPackageInfo>?,
-        isOpen: Boolean
-    ): Rlt<Res<Any>> {
-        val pkDuration = pkTime?.duration
-        val createRlt = bettingPkHttpService.setupPK(
-            SetupPkReq(
-                pkDuration,
-                betList?.map {
-                    PkPackageInfos(
-                        it.packageInfo.id,
-                        it.packageInfo.goodsType,
-                        it.packageInfo.img,
-                        it.packageInfo.intimacyType,
-                        it.packageInfo.linkId,
-                        it.packageInfo.type,
-                        it.packageInfo.value,
-                        it.selectNum
-                    )
-                },
-                isOpen
-            )
-        )
-        loadMyPkIfoInner()
-        return createRlt
-    }
-
-    /**
-     * 发送PK邀请
-     */
-    fun sendInvite(gameId: String, uid: Long): LiveData<Rlt<Any>> {
-        val liveData = OnceMutableLiveData<Rlt<Any>>()
-        viewModelScope.launch {
-            liveData.send(bettingPkHttpService.inviteOther(InviteOtherReq(gameId, uid)))
-        }
-        return liveData
-    }
-
-    /**
-     * other接受PK
-     */
-    fun otherAcceptPk(gameId: String, betList: List<SelectUserPackageInfo>? = null): LiveData<Rlt<Any>> {
-        val liveData = OnceMutableLiveData<Rlt<Any>>()
-        viewModelScope.launch {
-            liveData.send(
-                bettingPkHttpService.acceptPK(
-                    AcceptPkReq(gameId, betList?.map {
-                        PkPackageInfos(
-                            it.packageInfo.id,
-                            it.packageInfo.goodsType,
-                            it.packageInfo.img,
-                            it.packageInfo.intimacyType,
-                            it.packageInfo.linkId,
-                            it.packageInfo.type,
-                            it.packageInfo.value,
-                            it.selectNum
-                        )
-                    })
-                )
-            )
-        }
-        return liveData
-    }
-
-    fun rejectPk(gameId: String, otherId: String): LiveData<Rlt<Any>> {
-        val liveData = OnceMutableLiveData<Rlt<Any>>()
-        viewModelScope.launch {
-            liveData.send(bettingPkHttpService.rejectPK(RejectPkReq(gameId, otherId)))
-        }
-        return liveData
-    }
-
-    fun startPk(gameId: String, otherId: String): LiveData<Rlt<Any>> {
-        val liveData = OnceMutableLiveData<Rlt<Any>>()
-        viewModelScope.launch {
-            liveData.send(bettingPkHttpService.startPK(StartPkReq(gameId, otherId)))
-        }
-        return liveData
-    }
-
-
-    //回调监听
-    override fun onInvitePk(notify: InvitePkNotify) {
-        super.onInvitePk(notify)
-        onInvitePkLD.send(notify as PKInfoData, false)
-    }
-
-    override fun onAcceptPk(notify: AcceptPkNotify) {
-        super.onAcceptPk(notify)
-        onAcceptPkLD.send(notify as PKInfoData, false)
-    }
-
-    override fun onRejectPk(notify: RejectPkNotify) {
-        super.onRejectPk(notify)
-        onRejectPkLD.send(notify as PKInfoData, false)
-    }
-
-    override fun onPkStart(notify: PkStartNotify) {
-        super.onPkStart(notify)
-        onPkStartLD.send(notify as PKInfoData, false)
-    }
-
-    override fun onUserPkStart(notify: PkUserStartNotify) {
-        super.onUserPkStart(notify)
-        onPkUserStartLD.send(notify as PKInfoData, false)
-    }
-
-    override fun onPkResult(notify: PkResultNotify) {
-        super.onPkResult(notify)
-        onPkResultLD.send(notify as PKInfoData, false)
-    }
-
-    override fun onPkAddScore(notify: PkAddScoreNotify) {
-        super.onPkAddScore(notify)
-        onPkScoreChangedLD.send(notify as PKInfoData, false)
-    }
-
-    override fun onCleared() {
-        super.onCleared()
-        bettingPkManager.removeListener(this)
-    }
-}

+ 0 - 26
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/viewmodel/BettingPKViewModelFactory.kt

@@ -1,26 +0,0 @@
-package com.adealink.weparty.bettingpk.viewmodel
-
-import androidx.lifecycle.ViewModel
-import androidx.lifecycle.ViewModelProvider
-
-@Suppress("UNCHECKED_CAST")
-class BettingPKViewModelFactory : ViewModelProvider.NewInstanceFactory() {
-
-    override fun <T : ViewModel> create(modelClass: Class<T>): T {
-        return with(modelClass) {
-            when {
-                isAssignableFrom(BettingPKViewModel::class.java) ->
-                    BettingPKViewModel()
-                isAssignableFrom(BettingPKListViewModel::class.java) ->
-                    BettingPKListViewModel()
-                isAssignableFrom(BettingPKPageViewModel::class.java) ->
-                    BettingPKPageViewModel()
-                isAssignableFrom(BettingPKRecordViewModel::class.java) ->
-                    BettingPKRecordViewModel()
-                else ->
-                    throw IllegalArgumentException("Unknown ViewModel class: ${modelClass.name}")
-            } as T
-        }
-    }
-
-}

+ 0 - 168
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/widget/BettingPkAvatarViewSwitcher.kt

@@ -1,168 +0,0 @@
-package com.adealink.weparty.bettingpk.widget
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.Gravity
-import android.view.LayoutInflater
-import android.view.View
-import android.widget.ViewSwitcher
-import androidx.core.view.updateLayoutParams
-import com.adealink.frame.base.fastLazy
-import com.adealink.frame.image.view.NetworkImageView
-import com.adealink.weparty.bettingpk.R
-import com.adealink.weparty.bettingpk.databinding.LayoutBettingPkAvatarSwitcherBinding
-import java.lang.ref.WeakReference
-import com.adealink.weparty.R as APP_R
-
-class BettingPkAvatarViewSwitcher @JvmOverloads constructor(
-    context: Context, attrs: AttributeSet? = null
-) : ViewSwitcher(context, attrs) {
-
-    companion object {
-        private const val DEFAULT_ROLL_INTERVAL_MS = 3000L
-    }
-
-    init {
-        setFactory {
-            LayoutBettingPkAvatarSwitcherBinding.inflate(LayoutInflater.from(this@BettingPkAvatarViewSwitcher.context), null, false).root
-        }
-        setInAnimation(this@BettingPkAvatarViewSwitcher.context, R.anim.betting_pk_avatar_in_anim)
-        setOutAnimation(this@BettingPkAvatarViewSwitcher.context, R.anim.betting_pk_avatar_out_anim)
-    }
-
-    private var running = false
-    private val autoRollTask by fastLazy { AutoSwitchTask(this) }
-
-    private var index = 0
-    private var avatarList: List<Pair<String, String>>? = null
-
-    private var defaultAvatarResource: Int? = null
-
-    fun setDefaultAvatarResource(drawableId: Int) {
-        defaultAvatarResource = drawableId
-    }
-
-    /**
-     * 设置头像信息
-     */
-    fun setAvatarList(avatarList: List<Pair<String, String>>?, autoSwitch: Boolean = true, delay: Long = DEFAULT_ROLL_INTERVAL_MS) {
-        reset()
-        index = 0
-        this.avatarList = avatarList
-        showNextView()
-        if (autoSwitch) {
-            startPlaySwitch(delay)
-        }
-    }
-
-    private fun setCurrentView() {
-        val currentView = currentView.apply {
-            updateLayoutParams<LayoutParams> {
-                gravity = Gravity.CENTER
-            }
-        }
-        updateViewBy(currentView, getIntroAt(index))
-    }
-
-    private fun updateViewBy(view: View, avatars: Pair<String, String>?) {
-        val binding = LayoutBettingPkAvatarSwitcherBinding.bind(view)
-        setDefaultAvatar(binding.avatar1)
-        setAvatarUrl(binding.avatar1, avatars?.first)
-
-        setDefaultAvatar(binding.avatar2)
-        setAvatarUrl(binding.avatar2, avatars?.second)
-    }
-
-    private fun setDefaultAvatar(avatarView: NetworkImageView) {
-        avatarView.hierarchy.apply {
-            setPlaceholderImage(
-                defaultAvatarResource ?: APP_R.drawable.common_default_avatar_ic
-            )
-            setFailureImage(
-                APP_R.drawable.common_default_avatar_ic
-            )
-        }
-    }
-
-    private fun setAvatarUrl(avatarView: NetworkImageView, avatarUrl: String?) {
-        if (avatarUrl != null) {
-            if (avatarUrl.isEmpty()) {
-                avatarView.setActualImageResource(APP_R.drawable.common_default_avatar_ic)
-            } else {
-                avatarView.setImageUrl(avatarUrl)
-            }
-        } else {
-            avatarView.setActualImageResource(
-                defaultAvatarResource ?: APP_R.drawable.common_default_avatar_ic
-            )
-        }
-    }
-
-    private fun showNextView() {
-        val nextView = nextView.apply {
-            updateLayoutParams<LayoutParams> {
-                gravity = Gravity.CENTER
-            }
-        }
-        updateViewBy(nextView, getIntroAt(index))
-        showNext()
-    }
-
-    fun startPlaySwitch(delay: Long = DEFAULT_ROLL_INTERVAL_MS) {
-        index = 0
-        running = true
-        removeCallbacks(autoRollTask)
-        postDelayed(autoRollTask, delay)
-    }
-
-    fun stopRoll() {
-        running = false
-        removeCallbacks(autoRollTask)
-    }
-
-    private fun getNextIndex(): Int {
-        val size = avatarList?.size ?: return 0
-        if (size == 0) {
-            return -1
-        }
-        return (index + 1) % size
-    }
-
-    fun getIntroAt(index: Int): Pair<String, String>? {
-        return avatarList?.getOrNull(index)
-    }
-
-    private fun getIntrosSize(): Int {
-        return avatarList?.size ?: 0
-    }
-
-    private fun postNext(delay: Long) {
-        if (getIntrosSize() <= 1 || !running) {
-            return
-        }
-        removeCallbacks(autoRollTask)
-        postDelayed(autoRollTask, delay)
-    }
-
-    class AutoSwitchTask(reference: BettingPkAvatarViewSwitcher) : Runnable {
-
-        private val reference by fastLazy { WeakReference<BettingPkAvatarViewSwitcher>(reference) }
-
-        override fun run() {
-            val viewSwitcher = reference.get() ?: return
-            if (!viewSwitcher.running) {
-                return
-            }
-            viewSwitcher.showNextView()
-            if (!viewSwitcher.running) {
-                return
-            }
-            val nextIndex = viewSwitcher.getNextIndex()
-            if (nextIndex == -1) {
-                return
-            }
-            viewSwitcher.index = nextIndex
-            viewSwitcher.postNext(DEFAULT_ROLL_INTERVAL_MS)
-        }
-    }
-}

+ 0 - 54
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/widget/BettingPkEntranceView.kt

@@ -1,54 +0,0 @@
-package com.adealink.weparty.bettingpk.widget
-
-import android.content.Context
-import android.content.res.AssetManager
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import androidx.constraintlayout.widget.ConstraintLayout
-import com.adealink.weparty.commonui.ext.hide
-import com.adealink.weparty.commonui.ext.show
-import com.adealink.weparty.bettingpk.databinding.LayoutBettingPkEntranceViewBinding
-import com.tencent.qgame.animplayer.util.ScaleType
-import java.io.File
-
-class BettingPkEntranceView @JvmOverloads constructor(
-    context: Context,
-    attrs: AttributeSet? = null,
-    defStyleAttr: Int = 0,
-) : ConstraintLayout(context, attrs, defStyleAttr) {
-
-    private val binding = LayoutBettingPkEntranceViewBinding.inflate(LayoutInflater.from(context), this)
-
-    fun setAvatarList(avatarList: List<Pair<String, String>>, scrollDelay: Long = 3000L) {
-        binding.vAvatarSwitcher.setAvatarList(
-            avatarList,
-            true,
-            scrollDelay
-        )
-    }
-
-    fun playVsEffect(path: String) {
-        binding.ivVs.hide()
-        binding.animVs.show()
-        binding.animVs.apply {
-            setMute(true)
-            setLoop(Int.MAX_VALUE)
-            autoDismiss(false)
-            setScaleType(ScaleType.FIT_CENTER)
-            startPlay(File(path))
-        }
-    }
-
-    fun playVsEffect(assetManager: AssetManager, assetsPath: String) {
-        binding.ivVs.hide()
-        binding.animVs.show()
-        binding.animVs.apply {
-            setMute(true)
-            setLoop(Int.MAX_VALUE)
-            autoDismiss(false)
-            setScaleType(ScaleType.FIT_CENTER)
-            startPlay(assetManager, assetsPath)
-        }
-    }
-
-}

+ 0 - 82
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/widget/BettingPkProgressView.kt

@@ -1,82 +0,0 @@
-package com.adealink.weparty.bettingpk.widget
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import androidx.constraintlayout.widget.ConstraintLayout
-import androidx.core.view.doOnLayout
-import androidx.core.view.updateLayoutParams
-import com.adealink.weparty.bettingpk.R
-import com.adealink.weparty.bettingpk.databinding.LayoutBettingPkProgressViewBinding
-import com.adealink.weparty.commonui.ext.dp
-import com.adealink.weparty.commonui.ext.hide
-import com.adealink.weparty.commonui.ext.show
-
-class BettingPkProgressView @JvmOverloads constructor(
-    context: Context,
-    attrs: AttributeSet? = null,
-    defStyleAttr: Int = 0,
-) : ConstraintLayout(context, attrs, defStyleAttr) {
-
-    private val binding = LayoutBettingPkProgressViewBinding.inflate(LayoutInflater.from(context), this)
-
-    private val leftRightMinWidth = 50.dp()
-
-    private var leftValue = 0L
-    private var rightValue = 0L
-
-    init {
-        initAttrs(context, attrs)
-        binding.vProgress.setLeftRightMinWidth(leftRightMinWidth, leftRightMinWidth)
-    }
-
-    private fun initAttrs(context: Context, attrs: AttributeSet?) {
-        if (isInEditMode) {
-            return
-        }
-        context.theme.obtainStyledAttributes(
-            attrs,
-            R.styleable.BettingPkProgressView,
-            0, 0
-        ).apply {
-            val showIndicator = getBoolean(R.styleable.BettingPkProgressView_showIndicator, true)
-            showIndicator(showIndicator)
-            val slopeOffset = getDimensionPixelSize(R.styleable.BettingPkProgressView_slopeOffset, 20)
-            binding.vProgress.setSlopeOffset(slopeOffset)
-        }
-    }
-
-    fun showIndicator(show: Boolean) {
-        if (show) {
-            binding.svgaIndicator.show()
-        } else {
-            binding.svgaIndicator.hide()
-        }
-    }
-
-    fun setProgress(leftV: Long, rightV: Long) {
-        leftValue = leftV
-        rightValue = rightV
-        binding.tvLeftValue.text = leftV.toString()
-        binding.tvRightValue.text = rightV.toString()
-        binding.vProgress.setLeftRightValue(leftV, rightV)
-        updateIndicatorPos()
-    }
-
-    private fun updateIndicatorPos() {
-        doOnLayout {
-            binding.svgaIndicator.post {
-                var leftWidth = if (leftValue == 0L && rightValue == 0L) {
-                    maxOf(leftRightMinWidth, (0.5f * width).toInt())
-                } else {
-                    maxOf(leftRightMinWidth, ((leftValue.toFloat() / (leftValue + rightValue)) * width).toInt())
-                }
-                leftWidth = minOf(leftWidth, width - leftRightMinWidth)
-                binding.svgaIndicator.updateLayoutParams<LayoutParams> {
-                    leftMargin = leftWidth - binding.svgaIndicator.width / 2
-                }
-            }
-        }
-    }
-
-}

+ 0 - 61
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/widget/BettingPkWaitingView.kt

@@ -1,61 +0,0 @@
-package com.adealink.weparty.bettingpk.widget
-
-import android.animation.ObjectAnimator
-import android.animation.ValueAnimator
-import android.content.Context
-import android.util.AttributeSet
-import android.view.View
-import androidx.appcompat.widget.AppCompatImageView
-import com.adealink.weparty.bettingpk.R
-
-class BettingPkWaitingView @JvmOverloads constructor(
-    context: Context,
-    attrs: AttributeSet? = null,
-    defStyleAttr: Int = 0,
-) : AppCompatImageView(context, attrs, defStyleAttr) {
-
-    private lateinit var rotateAnim: ObjectAnimator
-
-    init {
-        setImageResource(R.drawable.betting_pk_waiting_ic)
-        rotateAnim = ObjectAnimator.ofFloat(this, View.ROTATION, 0f, 360f).apply {
-            duration = 600L
-            repeatCount = ValueAnimator.INFINITE
-        }
-    }
-
-    override fun onAttachedToWindow() {
-        super.onAttachedToWindow()
-        playWaitingAnim()
-//        rotateAnim.start()
-    }
-
-    override fun onDetachedFromWindow() {
-        super.onDetachedFromWindow()
-        stopWaitingAnim()
-//        rotateAnim.pause()
-    }
-
-    private fun playWaitingAnim() {
-        removeCallbacks(rotateAnimTask)
-        postDelayed(rotateAnimTask, ROTATE_ANIM_DELAY)
-    }
-
-    private fun stopWaitingAnim() {
-        removeCallbacks(rotateAnimTask)
-    }
-
-    private val rotateAnimTask = Runnable {
-        playRotateAnim()
-    }
-
-    private fun playRotateAnim() {
-        animate().rotationBy(180f).setDuration(300).start()
-        playWaitingAnim()
-    }
-
-    companion object {
-        private const val ROTATE_ANIM_DELAY = 600L
-    }
-
-}

+ 0 - 250
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/widget/PkProgress.kt

@@ -1,250 +0,0 @@
-package com.adealink.weparty.bettingpk.widget
-
-import android.content.Context
-import android.graphics.Bitmap
-import android.graphics.BlurMaskFilter
-import android.graphics.Canvas
-import android.graphics.Color
-import android.graphics.LinearGradient
-import android.graphics.Paint
-import android.graphics.Path
-import android.graphics.PorterDuff
-import android.graphics.PorterDuffXfermode
-import android.graphics.RectF
-import android.graphics.Shader
-import android.os.Build
-import android.util.AttributeSet
-import android.view.View
-import com.adealink.frame.log.Log
-
-class PkProgress @JvmOverloads constructor(
-    context: Context,
-    attrs: AttributeSet? = null,
-    defStyleAttr: Int = 0,
-) : View(context, attrs, defStyleAttr) {
-
-    private var mWidth = 0
-    private var mHeight = 0
-    private var mSlopeOffset = 20
-
-    private var leftV = 100L
-    private var rightV = 100L
-
-    private val leftPaint = Paint()
-    private var leftGradientColors: Array<Int> = arrayOf(Color.parseColor("#FF382B"), Color.parseColor("#FFF854")) //#FF382B, #FFF854
-    private var leftGradientColorPositions: Array<Float> = arrayOf(0f, 1f)
-    private val leftPath = Path()
-    private var leftMinWidth = 100
-
-    private val rightPaint = Paint()
-    private var rightGradientColors: Array<Int> = arrayOf(Color.parseColor("#024FE3"), Color.parseColor("#2AE5FF")) //#024FE3, #2AE5FF
-    private var rightGradientColorPositions: Array<Float> = arrayOf(0f, 1f)
-    private val rightPath = Path()
-    private var rightMinWidth = 100
-
-    private val lineOffset = 20f
-    private val lineWidth = 10f
-    private val lineAlpha = 0.1f
-    private val linePaint = Paint()
-    private var lineGradientColors: Array<Int> = arrayOf(Color.parseColor("#FFFFFF"), Color.parseColor("#00FFFFFF"), Color.parseColor("#FFFFFF"))
-    private var lineGradientColorPositions: Array<Float> = arrayOf(0f, 0.5f, 1f)
-    private var linCanvasBitmap: Bitmap? = null
-    private val lineMergePaint = Paint()
-
-
-    init {
-        initPaint()
-    }
-
-    private fun initPaint() {
-        leftPaint.color = Color.BLACK
-        leftPaint.isAntiAlias = true
-        leftPaint.isDither = true
-        leftPaint.isFilterBitmap = true
-        leftPaint.style = Paint.Style.FILL
-        //leftPaint.maskFilter = BlurMaskFilter(5f, BlurMaskFilter.Blur.INNER)
-
-        rightPaint.isAntiAlias = true
-        rightPaint.isDither = true
-        rightPaint.isFilterBitmap = true
-        rightPaint.strokeJoin = Paint.Join.ROUND
-        rightPaint.strokeCap = Paint.Cap.ROUND
-        rightPaint.style = Paint.Style.FILL
-        //rightPaint.maskFilter = BlurMaskFilter(5f, BlurMaskFilter.Blur.INNER)
-
-        linePaint.color = Color.WHITE
-        linePaint.strokeWidth = lineWidth
-        linePaint.alpha = (255 * lineAlpha).toInt()
-        linePaint.isAntiAlias = true
-        linePaint.isDither = true
-        linePaint.isFilterBitmap = true
-        linePaint.style = Paint.Style.FILL_AND_STROKE
-
-        lineMergePaint.isAntiAlias = true
-        lineMergePaint.isFilterBitmap = true
-        lineMergePaint.xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP)
-    }
-
-    fun setLeftRightMinWidth(leftMinWidth: Int, rightMinWidth: Int) {
-        this.leftMinWidth = leftMinWidth
-        this.rightMinWidth = rightMinWidth
-    }
-
-    fun setSlopeOffset(offset: Int) {
-        mSlopeOffset = offset
-    }
-
-    override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
-        super.onSizeChanged(w, h, oldw, oldh)
-        mWidth = width
-        mHeight = height
-        updateLeftRightPath()
-        updateLineBitmap()
-    }
-
-    fun setLeftRightValue(lv: Long, rv: Long) {
-        leftV = lv
-        rightV = rv
-        updateLeftRightPath()
-        postInvalidate()
-    }
-
-    private fun updateLeftRightPath() {
-        if (mWidth == 0) {
-            leftPath.reset()
-            leftPaint.shader = null
-            rightPath.reset()
-            rightPaint.shader = null
-            return
-        }
-        //左边的路径
-        var leftWidth = if (leftV == 0L && rightV == 0L) {
-            maxOf(leftMinWidth, (0.5f * mWidth).toInt())
-        } else {
-            maxOf(leftMinWidth, ((leftV.toFloat() / (leftV + rightV)) * mWidth).toInt())
-        }
-        leftWidth = minOf(leftWidth, mWidth - rightMinWidth)
-        val leftRect = RectF(
-            0f,
-            0f,
-            leftWidth.toFloat(),
-            mHeight.toFloat()
-        )
-        leftPath.reset()
-        leftPath.set(generateLeftPath(leftRect))
-        leftPaint.shader = LinearGradient(
-            leftRect.left,
-            0f,
-            (leftRect.right + mSlopeOffset),
-            0f,
-            leftGradientColors.toIntArray(),
-            leftGradientColorPositions.toFloatArray(),
-            Shader.TileMode.REPEAT
-        )
-
-        //右边的路径
-        var rightWidth = if (leftV == 0L && rightV == 0L) {
-            maxOf(rightMinWidth, (0.5f * mWidth).toInt())
-        } else {
-            maxOf(rightMinWidth, ((rightV.toFloat() / (leftV + rightV)) * mWidth).toInt())
-        }
-        rightWidth = minOf(rightWidth, mWidth - leftMinWidth)
-        val rightRect = RectF(
-            (mWidth - rightWidth).toFloat(),
-            0f,
-            mWidth.toFloat(),
-            mHeight.toFloat()
-        )
-        rightPath.reset()
-        rightPath.set(generateRightPath(rightRect))
-        rightPaint.shader = LinearGradient(
-            rightRect.right,
-            0f,
-            (rightRect.left - mSlopeOffset),
-            0f,
-            rightGradientColors.toIntArray(),
-            rightGradientColorPositions.toFloatArray(),
-            Shader.TileMode.REPEAT
-        )
-    }
-
-    private fun generateLeftPath(rect: RectF): Path {
-        val path = Path()
-        val x1 = rect.height() / 2
-        val y1 = rect.top
-        path.moveTo(x1, y1)
-        path.addArc(RectF(rect.left, rect.top, rect.height(), rect.height()), -90f, -180f)
-
-        val x2 = (rect.width() + mSlopeOffset)
-        val y2 = rect.height()
-        path.lineTo(x2, y2)
-
-        val x3 = (rect.width() - mSlopeOffset)
-        val y3 = rect.top
-        path.lineTo(x3, y3)
-
-        path.lineTo(x1, y1)
-        return path
-    }
-
-    private fun generateRightPath(rect: RectF): Path {
-        rect.height()
-        val path = Path()
-        val x1 = rect.right - rect.height() / 2f
-        val y1 = rect.top
-        path.moveTo(x1, y1)
-        path.addArc(RectF(rect.right - rect.height(), rect.top, rect.right, rect.bottom), -90f, 180f)
-
-        val x2 = (rect.left + mSlopeOffset)
-        val y2 = rect.bottom
-        path.lineTo(x2, y2)
-
-        val x3 = (rect.left - mSlopeOffset)
-        val y3 = rect.top
-        path.lineTo(x3, y3)
-
-        path.lineTo(x1, y1)
-        return path
-    }
-
-    private fun updateLineBitmap() {
-        linCanvasBitmap?.recycle()
-        val bitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888).also {
-            Canvas(it).apply {
-                val count = ((width / lineOffset) + 1).toInt()
-                for (i in 0..count) {
-                    linePaint.xfermode = null
-                    drawLine(
-                        i * lineOffset + lineOffset, 0f,
-                        i * lineOffset, height.toFloat(),
-                        linePaint
-                    )
-                }
-            }
-        }
-        linCanvasBitmap = bitmap
-    }
-
-    override fun onDraw(canvas: Canvas) {
-        val count = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-            canvas.saveLayerAlpha(RectF(0f, 0f, mWidth.toFloat(), mHeight.toFloat()), 250)
-        } else {
-            canvas.saveLayerAlpha(0f, 0f, mWidth.toFloat(), mHeight.toFloat(), 250, Canvas.ALL_SAVE_FLAG)
-        }
-
-        super.onDraw(canvas)
-
-        //绘制左边进度条
-        canvas.drawPath(leftPath, leftPaint)
-
-        //绘制右边进度条
-        canvas.drawPath(rightPath, rightPaint)
-
-        //绘制栅格
-        linCanvasBitmap?.let { bitmap ->
-            canvas.drawBitmap(bitmap, 0f, 0f, lineMergePaint)
-        }
-        canvas.restoreToCount(count)
-    }
-
-}

+ 0 - 188
module/bettingpk/src/main/java/com/adealink/weparty/bettingpk/widget/RoomBettingPkEntranceView.kt

@@ -1,188 +0,0 @@
-package com.adealink.weparty.bettingpk.widget
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import android.view.MotionEvent
-import androidx.constraintlayout.widget.ConstraintLayout
-import com.adealink.frame.aab.util.getCompatString
-import com.adealink.weparty.commonui.drag.TAG_DRAG_VIEW
-import com.adealink.weparty.commonui.ext.gone
-import com.adealink.weparty.commonui.ext.show
-import com.adealink.weparty.commonui.gesture.GestureDetectDelegate
-import com.adealink.weparty.commonui.gesture.SimpleSafeOnGestureListener
-import com.adealink.frame.log.Log
-import com.adealink.frame.util.timeToHMS
-import com.adealink.weparty.R
-import com.adealink.weparty.module.bettingpk.IBettingPkRoomEntranceView
-import com.adealink.weparty.module.bettingpk.data.PKInfoData
-import com.adealink.weparty.bettingpk.databinding.LayoutBettingPkRoomEntranceViewBinding
-
-class RoomBettingPkEntranceView @JvmOverloads constructor(
-    context: Context,
-    attrs: AttributeSet? = null,
-    defStyleAttr: Int = 0,
-) : ConstraintLayout(context, attrs, defStyleAttr), IBettingPkRoomEntranceView {
-
-    private val binding = LayoutBettingPkRoomEntranceViewBinding.inflate(
-        LayoutInflater.from(context), this
-    )
-
-    private var pkInfo: PKInfoData? = null
-    private var isCollapse: Boolean = false
-    private var onEntranceClick: (() -> Unit)? = null
-    private var onCollapseLongPress: ((e: MotionEvent) -> Unit)? = null
-    private var onCollapseChanged: ((Boolean) -> Unit)? = null
-
-    private val updateTask = Runnable {
-        doUpdateTask()
-    }
-
-    init {
-        initView()
-    }
-
-    private fun initView() {
-        binding.clExpand.setOnClickListener {
-            onEntranceClick?.invoke()
-        }
-        binding.vCollapseClick.setOnClickListener {
-            setCollapse(!isCollapse)
-        }
-        binding.clCollapse.isClickable = true
-        binding.clCollapse.touchDelegate =
-            GestureDetectDelegate(binding.clCollapse, object : SimpleSafeOnGestureListener {
-                override fun onDown(e: MotionEvent): Boolean {
-                    Log.d(TAG_DRAG_VIEW, "onDown(RoomBettingPkEntranceView.clCollapse), ${MotionEvent.actionToString(e.action)}")
-                    return true
-                }
-
-
-                override fun onSingleTapUp(e: MotionEvent): Boolean {
-                    Log.d(TAG_DRAG_VIEW, "onSingleTapUp(RoomBettingPkEntranceView.clCollapse), ${MotionEvent.actionToString(e.action)}")
-                    setCollapse(!isCollapse)
-                    return true
-                }
-
-                override fun onLongPress(e: MotionEvent) {
-                    Log.d(TAG_DRAG_VIEW, "onLongPress(RoomBettingPkEntranceView.clCollapse), ${MotionEvent.actionToString(e.action)}")
-                    onCollapseLongPress?.invoke(e)
-                }
-            })
-    }
-
-    override fun updateBy(pkInfo: PKInfoData) {
-        this.pkInfo = pkInfo
-
-        //展开的信息
-        binding.ivLeft.setImageUrl(pkInfo.ownerImg)
-        binding.tvNameLeft.text = pkInfo.ownerName
-        binding.tvIdLeft.text = getCompatString(R.string.common_short_id, pkInfo.ownerId)
-
-        binding.ivRight.setImageUrl(pkInfo.otherImg)
-        binding.tvNameRight.text = pkInfo.otherName
-        binding.tvIdRight.text = getCompatString(R.string.common_short_id, pkInfo.otherId)
-
-        binding.vProgress.setProgress(pkInfo.ownerScore, pkInfo.otherScore)
-
-        //折叠的信息
-        binding.ivCollapseLeft.setImageUrl(pkInfo.ownerImg)
-        binding.ivCollapseRight.setImageUrl(pkInfo.otherImg)
-
-        val countDownTimeStr = timeToHMS(pkInfo.getCloseLeftTime())
-        binding.tvCountDown.text = countDownTimeStr
-        binding.tvCollapseCountDown.text = countDownTimeStr
-        startUpdateTask()
-    }
-
-    override fun setOwnerAvatarClick(onClick: () -> Unit) {
-        binding.ivLeft.setOnClickListener {
-            onClick.invoke()
-        }
-    }
-
-    override fun setOtherAvatarClick(onClick: () -> Unit) {
-        binding.ivRight.setOnClickListener {
-            onClick.invoke()
-        }
-    }
-
-    override fun setEntranceClick(onClick: () -> Unit) {
-        this.onEntranceClick = onClick
-    }
-
-    private fun setCollapse(collapse: Boolean) {
-        if (isCollapse == collapse) {
-            return
-        }
-        isCollapse = collapse
-        if (collapse) {
-            //箭头需要翻转180度的倍数
-            if ((binding.ivCollapse.rotation.toInt() + 180) % 360 != 0) {
-                binding.ivCollapse
-                    .animate()
-                    .rotation(180f)
-                    .setDuration(300)
-                    .start()
-            }
-            binding.clExpand.gone()
-            binding.clCollapse.show()
-        } else {
-            //箭头需要翻转360度的倍数
-            if ((binding.ivCollapse.rotation.toInt() + 180) % 360 == 0) {
-                binding.ivCollapse
-                    .animate()
-                    .rotation(0f)
-                    .setDuration(300)
-                    .start()
-            }
-            binding.clExpand.show()
-            binding.clCollapse.gone()
-        }
-        onCollapseChanged?.invoke(collapse)
-    }
-
-    override fun isCollapse(): Boolean {
-        return isCollapse
-    }
-
-    override fun onCollapseChanged(onChanged: (Boolean) -> Unit) {
-        this.onCollapseChanged = onChanged
-    }
-
-    override fun setCollapseLongPress(onLongPress: (e: MotionEvent) -> Unit) {
-        this.onCollapseLongPress = onLongPress
-    }
-
-    private fun startUpdateTask() {
-        removeCallbacks(updateTask)
-        val pkInfo = this.pkInfo ?: return
-        if (pkInfo.getCloseLeftTime() > 0) {
-            postDelayed(updateTask, 1000L)
-        }
-    }
-
-    private fun doUpdateTask() {
-        if (!isAttachedToWindow) {
-            return
-        }
-        val pkInfo = this.pkInfo ?: return
-        val countDownTimeStr = timeToHMS(pkInfo.getCloseLeftTime())
-        binding.tvCountDown.text = countDownTimeStr
-        binding.tvCollapseCountDown.text = countDownTimeStr
-        if (pkInfo.getCloseLeftTime() > 0) {
-            postDelayed(updateTask, 1000L)
-        }
-    }
-
-    override fun onAttachedToWindow() {
-        super.onAttachedToWindow()
-        startUpdateTask()
-    }
-
-    override fun onDetachedFromWindow() {
-        super.onDetachedFromWindow()
-        removeCallbacks(updateTask)
-    }
-
-}

+ 0 - 7
module/bettingpk/src/main/res/anim/betting_pk_avatar_in_anim.xml

@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android"
-    android:duration="1000">
-    <translate
-        android:fromYDelta="100%"
-        android:toYDelta="0%" />
-</set>

+ 0 - 7
module/bettingpk/src/main/res/anim/betting_pk_avatar_out_anim.xml

@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<set xmlns:android="http://schemas.android.com/apk/res/android"
-    android:duration="1000">
-    <translate
-        android:fromYDelta="0%"
-        android:toYDelta="100%" />
-</set>

BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_add_bet_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_add_bet_info_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_alert_dialog_bg.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_alert_dialog_top_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_bet_info_item_bg.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_bet_info_item_bottom_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_bet_info_item_days_bg.9.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_bet_info_item_shadow.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_blue_button_bg.9.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_cancel_btn.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_cancel_btn_bg.9.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_challenge_btn.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_confirm_btn.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_content_top_left_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_content_top_right_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_count_down_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_count_down_title_bg.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_dialog_title_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_draw_title_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_duration_select_bg.9.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_duration_unselect_bg.9.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_entrance_bg.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_entrance_go_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_go_profile_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_go_room_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_gray_button_bg.9.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_left_draw_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_left_lose_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_left_win_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_left_win_result_bg.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_left_win_result_expand_bg.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_list_bg.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_lose_title_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_my_pk_bg.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_my_pk_title_bg.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_pking_bg.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_pking_expand_bg.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_progress_highlight_ic.png


BIN
module/bettingpk/src/main/res/drawable-xhdpi/betting_pk_record_ic.png


Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác