diff --git a/app/src/main/java/com/chwl/app/avroom/activity/AVRoomActivity.java b/app/src/main/java/com/chwl/app/avroom/activity/AVRoomActivity.java index 2dbcce732..b613622d0 100644 --- a/app/src/main/java/com/chwl/app/avroom/activity/AVRoomActivity.java +++ b/app/src/main/java/com/chwl/app/avroom/activity/AVRoomActivity.java @@ -42,8 +42,10 @@ import com.alibaba.fastjson.JSONObject; import com.chwl.app.notify.RoomNotifyManager; import com.chwl.app.ui.webview.baishun.BaiShunGameWebFragment; import com.chwl.app.ui.webview.baishun.IBaiShunGameListener; +import com.chwl.app.ui.webview.baishun.LeaderccGameWebFragment; import com.chwl.app.utils.RoomBoomManager; import com.chwl.core.manager.AudioEngineManager; +import com.chwl.library.language.LanguageHelper; import com.chwl.library.widget.SVGAView; import com.chwl.core.monsterhunting.bean.MonsterDataBean; import com.chwl.core.room.game.bean.BaiShunGameConfig; @@ -233,6 +235,7 @@ public class AVRoomActivity extends BaseMvpActivity(R.layout.item_room_create_game_guide) { override fun convert(helper: BaseViewHolder, item: GameInfo) { - GlideUtils.instance().load(item.pic,R.drawable.default_cover,helper.getView(R.id.iv_cover)) + GlideUtils.instance().load(item.pic?:"",R.drawable.default_cover,helper.getView(R.id.iv_cover)) } } \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/avroom/adapter/RoomGameListAdapter.kt b/app/src/main/java/com/chwl/app/avroom/adapter/RoomGameListAdapter.kt index bca9fd6dd..2b3287d43 100644 --- a/app/src/main/java/com/chwl/app/avroom/adapter/RoomGameListAdapter.kt +++ b/app/src/main/java/com/chwl/app/avroom/adapter/RoomGameListAdapter.kt @@ -11,8 +11,8 @@ import com.chwl.core.room.game.bean.GameInfo class RoomGameListAdapter : BaseQuickAdapter(R.layout.room_gameplay_item2) { override fun convert(helper: BaseViewHolder, item: GameInfo?) { - helper.setText(R.id.tv_name, item?.name) + helper.setText(R.id.tv_name, item?.name?:"") val iconView = helper.getView(R.id.iv_icon) - iconView.load(item?.pic2) + iconView.load(item?.pic2?:"") } } \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/avroom/dialog/CreateGameRoomDialog.kt b/app/src/main/java/com/chwl/app/avroom/dialog/CreateGameRoomDialog.kt index 705297cf2..d644168ba 100644 --- a/app/src/main/java/com/chwl/app/avroom/dialog/CreateGameRoomDialog.kt +++ b/app/src/main/java/com/chwl/app/avroom/dialog/CreateGameRoomDialog.kt @@ -33,11 +33,15 @@ class CreateGameRoomDialog : BaseDialogFragment() { .build() gameAdapter.setOnItemClickListener { _, _, position -> - dismissAllowingStateLoss() - OpenRoomHelper.openRoom( - requireActivity() as BaseActivity, RoomInfo.ROOMTYPE_GAME, - gameAdapter.data[position].mgId.toLong() - ) + try { + dismissAllowingStateLoss() + OpenRoomHelper.openRoom( + requireActivity() as BaseActivity, RoomInfo.ROOMTYPE_GAME, + gameAdapter.data[position].mgId.toLong() + ) + }catch (e:Exception){ + + } } binding?.ivClose?.setOnClickListener { diff --git a/app/src/main/java/com/chwl/app/avroom/dialog/RoomGameListDialog.kt b/app/src/main/java/com/chwl/app/avroom/dialog/RoomGameListDialog.kt index 28b5a5742..e69ca05ce 100644 --- a/app/src/main/java/com/chwl/app/avroom/dialog/RoomGameListDialog.kt +++ b/app/src/main/java/com/chwl/app/avroom/dialog/RoomGameListDialog.kt @@ -55,7 +55,7 @@ class RoomGameListDialog : private var mStatus = -1 private var mGameData = arrayListOf() - var listener: RoomGameplayDialog.GameplayDialogListener? = null + var listener: GameplayDialogListener? = null override fun getTheme(): Int { return R.style.ErbanBottomSheetDialogDimFalse } @@ -102,8 +102,10 @@ class RoomGameListDialog : private fun initView() { adapter.setOnItemClickListener { _, view, position -> - val item = adapter.getItem(position) as GameInfo - switchGame(item) + val item = adapter.data.getOrNull(position) + if (item != null) { + switchGame(item) + } } binding?.recyclerView?.adapter = adapter } @@ -176,13 +178,23 @@ class RoomGameListDialog : private fun roomIconToGameInfo(list : List): ArrayList { val newData = arrayListOf() list.forEachIndexed { index, roomIcon -> - if (roomIcon.isBaiShunGame()) { - newData.add(GameInfo(name = roomIcon.name?:"", pic = roomIcon.icon?:"" , pic2 = roomIcon.icon?:"", skipContent = roomIcon.skipContent?:"", ruleValue = roomIcon.ruleValue?:"")) - }else if(roomIcon.isFindLove()){ - newData.add(GameInfo(name = roomIcon.name?:"", pic = roomIcon.icon?:"" , pic2 = roomIcon.icon?:"", skipContent = roomIcon.skipContent?:"", ruleValue = roomIcon.ruleValue?:"", code = roomIcon.code)) - }else if(roomIcon.isLeadercc()){ - newData.add(GameInfo(name = roomIcon.name?:"", pic = roomIcon.icon?:"" , pic2 = roomIcon.icon?:"", skipContent = roomIcon.skipContent?:"", ruleValue = roomIcon.ruleValue?:"", code = roomIcon.code)) +// if (roomIcon.isBaiShunGame()) { +// newData.add(GameInfo(name = roomIcon.name?:"", pic = roomIcon.icon?:"" , pic2 = roomIcon.icon?:"", skipContent = roomIcon.skipContent?:"", ruleValue = roomIcon.ruleValue?:"",code = roomIcon.code)) +// }else if(roomIcon.isFindLove()){ +// newData.add(GameInfo(name = roomIcon.name?:"", pic = roomIcon.icon?:"" , pic2 = roomIcon.icon?:"", skipContent = roomIcon.skipContent?:"", ruleValue = roomIcon.ruleValue?:"", code = roomIcon.code)) +// }else if(roomIcon.isLeadercc()){ +// newData.add(GameInfo(name = roomIcon.name?:"", pic = roomIcon.icon?:"" , pic2 = roomIcon.icon?:"", skipContent = roomIcon.skipContent?:"", ruleValue = roomIcon.ruleValue?:"", code = roomIcon.code)) +// } + val gameInfo = GameInfo().apply { + name = roomIcon.name ?: "" + pic = roomIcon.icon ?: "" + pic2 = roomIcon.icon ?: "" + skipContent = roomIcon.skipContent ?: "" + ruleValue = roomIcon.ruleValue ?: "" + code = roomIcon.code ?: "" + showType = roomIcon.showType ?: 0 } + newData.add(gameInfo) } return newData } @@ -251,7 +263,11 @@ class RoomGameListDialog : getString(R.string.room_switch_game_tips) ) { - if (gameInfo.mgId.isNotEmpty()) { + if (gameInfo.isFindLove()) { + jumpFindLove() + }else if (gameInfo.isLeadercc()) { + jumpLeaderccGame(gameInfo) + } else if (gameInfo.mgId?.isNotEmpty() == true) { if (gameInfo.isStandardRoom()) { OpenRoomHelper.updateRoomInfo( activity as BaseActivity, @@ -269,18 +285,39 @@ class RoomGameListDialog : false ) } - }else if(!gameInfo.skipContent.isNullOrEmpty() || !gameInfo.ruleValue.isNullOrEmpty()){ - if (gameInfo.isFindLove()) { - jumpFindLove() - } else { - jumpBaiShunGame(gameInfo) - } + }else { + jumpBaiShunGame(gameInfo) } dismissAllowingStateLoss() } } + private fun jumpLeaderccGame(data: GameInfo) { + try { + val url = data.skipContent + val ruleValue = Gson().fromJson( + data.ruleValue, + RoomIcon.RuleValueBean::class.java + ) + val config = Gson().fromJson( + ruleValue.RESERVE, + BaiShunGameConfig::class.java + ) + + if (config != null && url != null) { + config.reloadDynamicParams() + config.showType = data.showType + listener?.onShowLeaderccGame(url, config) + } else { + SingleToastUtil.showToast(R.string.manager_trtc_trtcengineadapter_042) + } + + } catch (e: Exception) { + e.printStackTrace() + } + } + private fun jumpBaiShunGame(data: GameInfo) { try { val url = data.skipContent @@ -341,5 +378,6 @@ class RoomGameListDialog : interface GameplayDialogListener { fun onShowBaiShunGame(url: String, config: BaiShunGameConfig) + fun onShowLeaderccGame(url: String, config: BaiShunGameConfig) } } \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/avroom/fragment/BaseRoomFragment.kt b/app/src/main/java/com/chwl/app/avroom/fragment/BaseRoomFragment.kt index 7ed4fe4d6..3c17f5344 100644 --- a/app/src/main/java/com/chwl/app/avroom/fragment/BaseRoomFragment.kt +++ b/app/src/main/java/com/chwl/app/avroom/fragment/BaseRoomFragment.kt @@ -837,10 +837,14 @@ open class BaseRoomFragment?> : R.id.iv_game -> { val dialog = RoomGameListDialog(); dialog.code = hashCode() - dialog.listener = object : RoomGameplayDialog.GameplayDialogListener { + dialog.listener = object : RoomGameListDialog.GameplayDialogListener { override fun onShowBaiShunGame(url: String, config: BaiShunGameConfig) { (activity as? AVRoomActivity)?.showBaiShunGame(url, config) } + + override fun onShowLeaderccGame(url: String, config: BaiShunGameConfig) { + (activity as? AVRoomActivity)?.showLeaderccGame(url, config) + } } dialog.show(childFragmentManager, "GAME_LIST") } @@ -1686,7 +1690,7 @@ open class BaseRoomFragment?> : } if (configModel.icon2Url != null) { - ImageLoadUtils.loadAvatar(configModel.icon2Url, btnIvgame) + ImageLoadUtils.loadImage( btnIvgame,configModel.icon2Url) } } diff --git a/app/src/main/java/com/chwl/app/home/adapter/MeGameAdapter.kt b/app/src/main/java/com/chwl/app/home/adapter/MeGameAdapter.kt index 9a7c07a98..eb9e5b9e9 100644 --- a/app/src/main/java/com/chwl/app/home/adapter/MeGameAdapter.kt +++ b/app/src/main/java/com/chwl/app/home/adapter/MeGameAdapter.kt @@ -12,8 +12,8 @@ class MeGameAdapter : BaseQuickAdapter(R.layout.item_me_game) { override fun convert(helper: BaseViewHolder, item: GameInfo) { - helper.getView(R.id.iv_pic).load(item.pic) - helper.setText(R.id.tv_name, item.name) + helper.getView(R.id.iv_pic).load(item.pic?:"") + helper.setText(R.id.tv_name, item.name?:"") } } \ No newline at end of file diff --git a/app/src/main/java/com/chwl/app/ui/im/RouterHandler.java b/app/src/main/java/com/chwl/app/ui/im/RouterHandler.java index dddf6fbc2..d0ab0cbee 100644 --- a/app/src/main/java/com/chwl/app/ui/im/RouterHandler.java +++ b/app/src/main/java/com/chwl/app/ui/im/RouterHandler.java @@ -289,9 +289,6 @@ public class RouterHandler { case RouterType.MY_SET: UIHelper.showSettingAct(context); break; - case RouterType.MY_VIP_SET: - VipSetActivity.Companion.start(context); - break; case RouterType.MY_REVENUE: EarnRecordActivity.start(context); break; diff --git a/app/src/main/java/com/chwl/app/ui/setting/SettingActivity.kt b/app/src/main/java/com/chwl/app/ui/setting/SettingActivity.kt index 4fdf08dbc..36c059ce3 100644 --- a/app/src/main/java/com/chwl/app/ui/setting/SettingActivity.kt +++ b/app/src/main/java/com/chwl/app/ui/setting/SettingActivity.kt @@ -80,6 +80,7 @@ class SettingActivity : BaseViewBindingActivity(), View. binding.tvCommunityNorms.setOnClickListener(this) binding.rlyClearCache.setOnClickListener(this) binding.tvNoticeSetting.setOnClickListener(this) + binding.tvVipSetting.setOnClickListener(this) binding.tvShieldManager.setOnClickListener(this) binding.rlyPermission.setOnClickListener(this) binding.tvLanugage.setOnClickListener(this) @@ -174,7 +175,7 @@ class SettingActivity : BaseViewBindingActivity(), View. clearCache() } }) - + R.id.tv_vip_setting -> VipSetActivity.start(context); R.id.tv_notice_setting -> NoticeSettingActivity.start(context) R.id.tv_shield_manager -> ShieldManageActivity.start(context) R.id.rly_permission -> PermissionGuideActivity.start(context) diff --git a/app/src/main/java/com/chwl/app/ui/setting/VipSetActivity.kt b/app/src/main/java/com/chwl/app/ui/setting/VipSetActivity.kt index d232ca157..8c7b0acac 100644 --- a/app/src/main/java/com/chwl/app/ui/setting/VipSetActivity.kt +++ b/app/src/main/java/com/chwl/app/ui/setting/VipSetActivity.kt @@ -22,6 +22,7 @@ import com.chwl.library.utils.SingleToastUtil import com.example.lib_utils.ktx.getDimension import com.example.lib_utils.log.ILog import com.google.gson.JsonElement +import com.hjq.toast.ToastUtils import com.netease.nim.uikit.StatusBarUtil import io.reactivex.Single import retrofit2.http.GET @@ -43,26 +44,26 @@ class VipSetActivity : BaseViewBindingActivity(), ILog, V initTitleBar(ResUtil.getString(R.string.vipSetTitle)) initVipIcons(binding.vipSetIcons1 - , R.drawable.vip_center_identification_vipidentity_lv5 - , R.drawable.vip_center_identification_vipidentity_lv6 - , R.drawable.vip_center_identification_vipidentity_lv7 - , R.drawable.vip_center_identification_vipidentity_lv8 - , R.drawable.vip_center_identification_vipidentity_lv9 + , R.drawable.vip_icon_lv5 + , R.drawable.vip_icon_lv6 + , R.drawable.vip_icon_lv7 + , R.drawable.vip_icon_lv8 + , R.drawable.vip_icon_lv9 ) initVipIcons(binding.vipSetIcons2 - , R.drawable.vip_center_identification_vipidentity_lv6 - , R.drawable.vip_center_identification_vipidentity_lv7 - , R.drawable.vip_center_identification_vipidentity_lv8 - , R.drawable.vip_center_identification_vipidentity_lv9 + , R.drawable.vip_icon_lv6 + , R.drawable.vip_icon_lv7 + , R.drawable.vip_icon_lv8 + , R.drawable.vip_icon_lv9 ) initVipIcons(binding.vipSetIcons3 - , R.drawable.vip_center_identification_vipidentity_lv7 - , R.drawable.vip_center_identification_vipidentity_lv8 - , R.drawable.vip_center_identification_vipidentity_lv9 + , R.drawable.vip_icon_lv7 + , R.drawable.vip_icon_lv8 + , R.drawable.vip_icon_lv9 ) initVipIcons(binding.vipSetIcons4 - , R.drawable.vip_center_identification_vipidentity_lv8 - , R.drawable.vip_center_identification_vipidentity_lv9 + , R.drawable.vip_icon_lv8 + , R.drawable.vip_icon_lv9 ) UserModel.get().getUserInfo(AuthModel.get().currentUid) @@ -110,7 +111,9 @@ class VipSetActivity : BaseViewBindingActivity(), ILog, V setSwitchView(view,!value) } .doOnError { - + it?.message?.let { + ToastUtils.show(it) + } } .compose(bindToLifecycle()) .subscribe() diff --git a/app/src/main/java/com/chwl/app/ui/webview/CommonWebViewActivity.java b/app/src/main/java/com/chwl/app/ui/webview/CommonWebViewActivity.java index 601283fc2..f268015f3 100644 --- a/app/src/main/java/com/chwl/app/ui/webview/CommonWebViewActivity.java +++ b/app/src/main/java/com/chwl/app/ui/webview/CommonWebViewActivity.java @@ -190,9 +190,6 @@ public class CommonWebViewActivity extends BaseActivity { webView.getSettings().setUseWideViewPort(true); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setDomStorageEnabled(true); - webView.getSettings().setDatabaseEnabled(true); //新接入h5游戏需要的设置 - webView.getSettings().setMediaPlaybackRequiresUserGesture(false); //新接入h5游戏需要的设置 - webView.setLayerType(View.LAYER_TYPE_HARDWARE, null); //新接入h5游戏需要的设置 // 设置 WebView 可以在 HTTPS 通道上加载 HTTP 资源,Android 4.4 后的暗坑 // 因为 Android 4.4 后默认不允许在 HTTPS 通道上加载 HTTP 资源 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { diff --git a/app/src/main/java/com/chwl/app/ui/webview/baishun/LeaderccGameWebFragment.kt b/app/src/main/java/com/chwl/app/ui/webview/baishun/LeaderccGameWebFragment.kt new file mode 100644 index 000000000..ce0c48bf9 --- /dev/null +++ b/app/src/main/java/com/chwl/app/ui/webview/baishun/LeaderccGameWebFragment.kt @@ -0,0 +1,287 @@ +package com.chwl.app.ui.webview.baishun + +import android.annotation.SuppressLint +import android.app.Activity +import android.graphics.Bitmap +import android.net.http.SslError +import android.os.Build +import android.os.Bundle +import android.webkit.SslErrorHandler +import android.webkit.WebResourceError +import android.webkit.WebResourceRequest +import android.webkit.WebSettings +import android.webkit.WebView +import android.webkit.WebViewClient +import androidx.appcompat.app.AlertDialog +import androidx.core.view.isInvisible +import androidx.core.view.isVisible +import com.chwl.app.R +import com.chwl.app.base.BaseViewBindingFragment +import com.chwl.app.common.widget.dialog.DialogManager +import com.chwl.app.common.widget.dialog.DialogManager.OkCancelDialogListener +import com.chwl.app.databinding.RoomGameFragmentBinding +import com.chwl.core.auth.AuthModel +import com.chwl.core.pay.event.GetWalletInfoEvent +import com.chwl.core.pay.event.UpdateWalletInfoEvent +import com.chwl.core.room.game.bean.BaiShunGameConfig +import com.chwl.library.common.util.ClickUtils.click +import com.chwl.library.common.util.setViewWH +import com.chwl.library.common.util.setVis +import com.chwl.library.utils.ResUtil +import com.chwl.library.utils.ScreenUtils +import com.google.gson.Gson +import org.greenrobot.eventbus.EventBus +import org.greenrobot.eventbus.Subscribe +import org.greenrobot.eventbus.ThreadMode + +class LeaderccGameWebFragment : BaseViewBindingFragment(), + IBaiShunGameView { + + private var gameConfig: BaiShunGameConfig? = null + + private var gameUrl = "" + + private var isLoadError = false + + private var listener: IBaiShunGameListener? = null + + var leaderccJSBridge : LeaderccJSBridge? = null + + companion object { + fun newInstance( + url: String, + config: BaiShunGameConfig + ): LeaderccGameWebFragment { + val bundle = Bundle() + bundle.putString("url", url) + bundle.putSerializable("config", config) + return LeaderccGameWebFragment().apply { + arguments = bundle + } + } + } + + + override fun init() { + val url = arguments?.getString("url") + gameConfig = arguments?.getSerializable("config") as? BaiShunGameConfig + if (url.isNullOrEmpty() || gameConfig == null) { + toast(R.string.utils_net_beanobserver_05) + return + } + gameUrl = url + initView() + binding.webView.isInvisible = true + binding.webView.loadUrl(url) + } + + private fun initView() { + initWebView() + } + + @SuppressLint("SetJavaScriptEnabled", "JavascriptInterface") + private fun initWebView() { + //防⽌⽤浏览器打开⽹⻚ + binding.webView.webViewClient = object : WebViewClient() { + + override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { + super.onPageStarted(view, url, favicon) + isLoadError = false + if (url == gameUrl) { + dialogManager.showProgressDialog(requireContext()) + } + } + + override fun onReceivedError( + view: WebView?, + errorCode: Int, + description: String?, + failingUrl: String? + ) { + super.onReceivedError(view, errorCode, description, failingUrl) + isLoadError = true + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { + onReceivedError(failingUrl, errorCode, description) + } + } + + override fun onReceivedError( + view: WebView?, + request: WebResourceRequest?, + error: WebResourceError? + ) { + super.onReceivedError(view, request, error) + isLoadError = true + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + onReceivedError(request?.url?.toString(), error?.errorCode, error?.description) + } + } + + override fun onPageFinished(view: WebView?, url: String?) { + super.onPageFinished(view, url) + if (!isLoadError) { + binding.webView.isVisible = true + } + } + + override fun onReceivedSslError( + view: WebView, + handler: SslErrorHandler, + error: SslError? + ) { + // super.onReceivedSslError(view, handler, error); + val builder = AlertDialog.Builder(view.context) + builder.setMessage(ResUtil.getString(R.string.ui_webview_commonwebviewactivity_07)) + builder.setPositiveButton( + ResUtil.getString(R.string.ui_webview_commonwebviewactivity_08) + ) { dialog, which -> + handler.proceed() // 接受https所有网站的证书 + } + builder.setNegativeButton( + ResUtil.getString(R.string.ui_webview_commonwebviewactivity_09) + ) { dialog, which -> handler.cancel() } + val dialog = builder.create() + dialog.show() + } + } + //设置webview背景透明,默认为⽩⾊ + binding.webView.setBackgroundColor(0) + //设置view背景透明,默认为⽩⾊ 可选(单独activity添加webView组件时需要添加) + binding.root.setBackgroundColor(0) + + val settings = binding.webView.settings + //设置⽀持Javascript + settings.javaScriptEnabled = true + //设置默认⽂本编码 + settings.defaultTextEncodingName = "UTF-8" + //设置可访问本地⽂件 + settings.allowFileAccess = true + //设置允许通过file url加载的Javascript读取全部资源(包括⽂件,http,https) + settings.allowUniversalAccessFromFileURLs = true + //设置优先加载缓存 + settings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK + //设置启⽤HTML5 DOM storage + settings.domStorageEnabled = true + //设置开启数据库缓存 + settings.databaseEnabled = true + settings.databasePath = (requireContext().applicationContext.filesDir.absolutePath) + //设置⽀持缩放 + settings.setSupportZoom(true) + //设置⾃适应 + settings.useWideViewPort = true + //设置⾃动播放媒体 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + settings.mediaPlaybackRequiresUserGesture = false + } + //设置5.0以上允许加载http和https混合的⻚⾯ + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + settings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW + } + + //游戏调⽤的类,必须定义为 LingxianAndroid + leaderccJSBridge = LeaderccJSBridge(this) + binding.webView.addJavascriptInterface(leaderccJSBridge!!, "LingxianAndroid") + + if (gameConfig?.showType == 2){ + binding.webView.post { + binding.bg.setVis(true) + binding.bg.click { + leaderccJSBridge?.closeGame() + } + } + } + + binding.webView.postDelayed({ dialogManager?.dismissDialog() }, 2000) + } + + override fun callJs(str: String) { + binding.webView.post { + binding.webView.loadUrl("javascript:$str") + } + } + + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onWalletInfoUpdate(event: UpdateWalletInfoEvent?) { + updateGameWallet() + } + + @Subscribe(threadMode = ThreadMode.MAIN) + fun onGetWalletInfoEvent(event: GetWalletInfoEvent?) { + updateGameWallet() + } + + private fun updateGameWallet() { + try { + //数据只是参考值,需要根据⾃⼰APP进⾏赋值 + val map = HashMap() + map["userId"] = AuthModel.get().currentUid + val str = "walletUpdate" + "(" + Gson().toJson(map) + ")" + this.callJs(str) + } catch (e: Exception) { + e.printStackTrace() + } + } + + override fun getGameConfig() = gameConfig + + override fun getListener(): IBaiShunGameListener? { + return listener + } + + fun setListener(listener: IBaiShunGameListener) { + this.listener = listener + } + + override fun getActivity2(): Activity? { + return activity + } + + override fun onResume() { + super.onResume() + leaderccJSBridge?.updateCoin() + } + + override fun getDialogManager2(): DialogManager { + return super.getDialogManager() + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + EventBus.getDefault().register(this) + } + + override fun onDestroy() { + super.onDestroy() + EventBus.getDefault().unregister(this) + } + + private fun onReceivedError(url: String?, code: Int?, message: CharSequence?) { + if (url == gameUrl) { + binding.webView.isInvisible = true + dialogManager.dismissDialog() + showLoadErrorDialog(message?.toString() ?: "($code)") + } + } + + private fun showLoadErrorDialog(message: String) { + dialogManager.showOkCancelDialog( + getString(R.string.load_failed), + message, + getString(R.string.retry), + getString(R.string.exit_text), + false, false, true, object : OkCancelDialogListener { + override fun onOk() { + binding.webView.reload() + } + + override fun onCancel() { + super.onCancel() + listener?.onGameClose() + } + }, null, false + ) + } + + +} diff --git a/app/src/main/java/com/chwl/app/ui/webview/baishun/LeaderccJSBridge.kt b/app/src/main/java/com/chwl/app/ui/webview/baishun/LeaderccJSBridge.kt new file mode 100644 index 000000000..e5d7cb406 --- /dev/null +++ b/app/src/main/java/com/chwl/app/ui/webview/baishun/LeaderccJSBridge.kt @@ -0,0 +1,74 @@ +package com.chwl.app.ui.webview.baishun + +import android.webkit.JavascriptInterface +import androidx.annotation.Keep +import com.chwl.app.R +import com.chwl.app.common.widget.dialog.DialogManager.OkCancelDialogListener +import com.chwl.app.common.widget.dialog.DialogUiHelper +import com.chwl.app.ui.pay.ChargeActivity +import com.example.lib_utils.ktx.getString +import com.example.lib_utils.log.ILog +import com.google.gson.Gson +import org.json.JSONObject + + +@Keep +class LeaderccJSBridge(var view: IBaiShunGameView) : ILog { + + @JavascriptInterface + public fun updateCoin() { + logD("游戏调⽤ updateCoin()") + try { +// val obj = JSONObject() +// val jsFunName = obj.optString("updateCoin") +// val config = view.getGameConfig() +// val str = (jsFunName + "(" + Gson().toJson(config) + ")") +// callJs(str) + + val obj = JSONObject() + val jsFunName = obj.optString("updateCoin()") + callJs(jsFunName) + } catch (ex: Exception) { + ex.printStackTrace() + } + } + + @JavascriptInterface + public fun closeGame() { + logD("游戏调⽤ closeGame") + view.getActivity2()?.runOnUiThread { + showExitDialog() + } + } + + @JavascriptInterface + public fun pay() { + logD("游戏调⽤ pay") + view.getActivity2()?.runOnUiThread { + DialogUiHelper.showNeedCharge(view.getActivity2(), view.getDialogManager2()) + } + } + + @JavascriptInterface + private fun callJs(str: String) { + view.callJs(str) + } + + private fun showExitDialog() { + view.getDialogManager2().showOkCancelDialog( + R.string.tip_tips.getString(), + R.string.home_refresh_fungameview_01.getString(), + R.string.exit_text.getString(), + R.string.cancel.getString(), + false, false, true, object : OkCancelDialogListener { + override fun onOk() { + super.onCancel() + view?.getListener()?.onGameClose() + } + + override fun onCancel() { + } + }, null, false + ) + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-xxhdpi/room_ic_game.webp b/app/src/main/res/drawable-xxhdpi/room_ic_game.webp index 3f558cecf..a780fb55c 100644 Binary files a/app/src/main/res/drawable-xxhdpi/room_ic_game.webp and b/app/src/main/res/drawable-xxhdpi/room_ic_game.webp differ diff --git a/app/src/main/res/drawable-xxhdpi/vip_icon_lv5.png b/app/src/main/res/drawable-xxhdpi/vip_icon_lv5.png new file mode 100644 index 000000000..55d68ecf3 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/vip_icon_lv5.png differ diff --git a/app/src/main/res/drawable-xxhdpi/vip_icon_lv6.png b/app/src/main/res/drawable-xxhdpi/vip_icon_lv6.png new file mode 100644 index 000000000..2bcb20f76 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/vip_icon_lv6.png differ diff --git a/app/src/main/res/drawable-xxhdpi/vip_icon_lv7.png b/app/src/main/res/drawable-xxhdpi/vip_icon_lv7.png new file mode 100644 index 000000000..9b9bad675 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/vip_icon_lv7.png differ diff --git a/app/src/main/res/drawable-xxhdpi/vip_icon_lv8.png b/app/src/main/res/drawable-xxhdpi/vip_icon_lv8.png new file mode 100644 index 000000000..486878aa1 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/vip_icon_lv8.png differ diff --git a/app/src/main/res/drawable-xxhdpi/vip_icon_lv9.png b/app/src/main/res/drawable-xxhdpi/vip_icon_lv9.png new file mode 100644 index 000000000..d6fc358d3 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/vip_icon_lv9.png differ diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml index ad750baf5..c3398f0ff 100644 --- a/app/src/main/res/layout/activity_setting.xml +++ b/app/src/main/res/layout/activity_setting.xml @@ -138,6 +138,23 @@ android:layout_marginEnd="15dp" android:background="@color/line_353548" /> + + - + - \ No newline at end of file + android:layout_height="0dp" + android:layout_weight="2"/> + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 235cf6999..812141f24 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5400,6 +5400,8 @@ You cannot join again within 24 hours after leaving 静态头像 GIF头像 + Vip设置 + diff --git a/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_bg.png b/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_bg.png index 1dcbfd418..0689303e7 100644 Binary files a/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_bg.png and b/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_bg.png differ diff --git a/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_buy_bg.png b/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_buy_bg.png index 788789238..dad853856 100644 Binary files a/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_buy_bg.png and b/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_buy_bg.png differ diff --git a/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_buy_bg_buy.png b/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_buy_bg_buy.png index 8ddf8bdb3..6697053a7 100644 Binary files a/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_buy_bg_buy.png and b/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_buy_bg_buy.png differ diff --git a/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_buy_multi_bg.png b/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_buy_multi_bg.png index 6e06be12d..dad853856 100644 Binary files a/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_buy_multi_bg.png and b/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_buy_multi_bg.png differ diff --git a/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_buy_success_bg.png b/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_buy_success_bg.png index 4aa33cf89..27e617304 100644 Binary files a/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_buy_success_bg.png and b/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_buy_success_bg.png differ diff --git a/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_ic_rank.png b/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_ic_rank.png index 8e9f9c8a0..40b7b0a85 100644 Binary files a/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_ic_rank.png and b/app/src/module_treasure_box/res/drawable-xxhdpi/smash_eggs_ic_rank.png differ diff --git a/core/src/main/java/com/chwl/core/home/bean/BannerInfo.java b/core/src/main/java/com/chwl/core/home/bean/BannerInfo.java index c17abbe45..2fb8de438 100644 --- a/core/src/main/java/com/chwl/core/home/bean/BannerInfo.java +++ b/core/src/main/java/com/chwl/core/home/bean/BannerInfo.java @@ -12,6 +12,7 @@ import lombok.ToString; /** * Created by Administrator on 2017/8/7. + * banner跳转type */ @ToString @Data diff --git a/core/src/main/java/com/chwl/core/im/custom/bean/RouterType.java b/core/src/main/java/com/chwl/core/im/custom/bean/RouterType.java index 90010af4b..43c166c03 100644 --- a/core/src/main/java/com/chwl/core/im/custom/bean/RouterType.java +++ b/core/src/main/java/com/chwl/core/im/custom/bean/RouterType.java @@ -2,6 +2,7 @@ package com.chwl.core.im.custom.bean; /** * Created by MadisonRong on 08/06/2018. + * MeFragment跳转type */ public class RouterType { @@ -229,10 +230,6 @@ public class RouterType { */ public static final int MY_DRESS_ITEM = 79; - /** - * - Vip设置 todo do 等恒哥给 正式 type - */ - public static final int MY_VIP_SET = 80; /** diff --git a/core/src/main/java/com/chwl/core/room/game/bean/BaiShunGameConfig.kt b/core/src/main/java/com/chwl/core/room/game/bean/BaiShunGameConfig.kt index 83bf9caf5..9ed60016b 100644 --- a/core/src/main/java/com/chwl/core/room/game/bean/BaiShunGameConfig.kt +++ b/core/src/main/java/com/chwl/core/room/game/bean/BaiShunGameConfig.kt @@ -20,6 +20,7 @@ class BaiShunGameConfig : Serializable { var language: String? = null val gameConfig: Config? = null val gsp: Int? = null + var showType: Int? = null @Keep class Config : Serializable { diff --git a/core/src/main/java/com/chwl/core/room/game/bean/GameInfo.java b/core/src/main/java/com/chwl/core/room/game/bean/GameInfo.java new file mode 100644 index 000000000..25a37618d --- /dev/null +++ b/core/src/main/java/com/chwl/core/room/game/bean/GameInfo.java @@ -0,0 +1,49 @@ +package com.chwl.core.room.game.bean; + +public class GameInfo { + + public boolean isShow; + public String mgId=""; + public String name=""; + public String pic=""; + public String pic2=""; + public String remark=""; + public int seq; + public int showType; + public boolean isSelect; + public String skipContent=""; + public String ruleValue=""; + public boolean isStandardRoom;// 本地自己维护的,为了区分普通房 + public String code=""; + + + public boolean isStandardRoom() { + return this.isStandardRoom; + } + + + public boolean isFirstCharge() { + return code.equals("FIRST_CHARGE"); + } + + public boolean isSeizeTreasure() { + return code.equals("SEIZE_TREASURE"); + } + + public boolean isFindLove() { + return code.equals("FIND_LOVE"); + } + + public boolean isLeadercc() { + return code.equals("LEADERCC"); + } + + public boolean isNauticalAdventure() { + return code.equals("NAUTICAL_ADVENTURE"); + } + + public boolean isBaiShunGame() { + return code.equals("BAISHUN"); + } + +} diff --git a/core/src/main/java/com/chwl/core/room/game/bean/GameInfo.kt b/core/src/main/java/com/chwl/core/room/game/bean/GameInfo.kt deleted file mode 100644 index b38604218..000000000 --- a/core/src/main/java/com/chwl/core/room/game/bean/GameInfo.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.chwl.core.room.game.bean - -import java.io.Serializable - -data class GameInfo( - val isShow: Boolean = false, - val mgId: String = "", - var name: String = "", - val pic: String = "", - val pic2: String? = null, - val remark: String = "", - val seq: Int = 0, - var isSelect: Boolean = false, - val skipContent : String = "", - val ruleValue : String = "", - // 本地自己维护的,为了区分普通房 - private var isStandardRoom: Boolean? = null, - var code: String? = "", -) : Serializable { - fun isStandardRoom() = isStandardRoom == true - - fun asStandardRoom() { - isStandardRoom = true - } - - override fun toString(): String { - return "GameInfo(isShow=$isShow, mgId='$mgId', name='$name', pic='$pic', pic2=$pic2, remark='$remark', seq=$seq, isSelect=$isSelect, skipContent='$skipContent', ruleValue='$ruleValue', isStandardRoom=$isStandardRoom)" - } - - - fun isFirstCharge(): Boolean = code == "FIRST_CHARGE" - fun isSeizeTreasure(): Boolean = code == "SEIZE_TREASURE" - fun isFindLove(): Boolean = code == "FIND_LOVE" - fun isLeadercc(): Boolean = code == "LEADERCC" - fun isNauticalAdventure(): Boolean = code == "NAUTICAL_ADVENTURE" - fun isBaiShunGame() = code == "BAISHUN" -} \ No newline at end of file diff --git a/library/src/main/java/com/chwl/library/language/LanguageHelper.kt b/library/src/main/java/com/chwl/library/language/LanguageHelper.kt index a44a7fd7b..773956098 100644 --- a/library/src/main/java/com/chwl/library/language/LanguageHelper.kt +++ b/library/src/main/java/com/chwl/library/language/LanguageHelper.kt @@ -64,6 +64,19 @@ object LanguageHelper : ILog { } } + fun getH5GameLeaderccLan(): String { + val locale = getCurrentLanguage() + return if (locale == Locale.ENGLISH) { + "en-Us" + } else if (locale == Locale.TRADITIONAL_CHINESE) { + "zh-Tw" + } else if (locale.language.equals("ar", true)) { + return "ar-EG" + } else { + "en-Us" + } + } + /** * 获取Locale * @param language (四端一致的类型) diff --git a/mode.json b/mode.json index 77e9034ea..1f0701100 100644 --- a/mode.json +++ b/mode.json @@ -1,92 +1,80 @@ -{ - "contents": [ - { - "height": 20, - "image": "https://img.molistar.xyz/default_avatar_molistar.png", - "key": "avatar", - "type": "IMAGE", - "width": 20 - }, - { - "key": "nick", - "text": { - "ar": "英文区", - "en": "英文区", - "zh": "英文区" +[ + { + "baiShunGame": true, + "code": "BAISHUN", + "createTime": "2024-07-29 15:14:21", + "findLove": false, + "firstCharge": false, + "icon": "https://image.pekolive.com/DragonTiger.png", + "id": 120, + "leadercc": false, + "name": "DragonTiger", + "nauticalAdventure": false, + "ruleValue": { + "PLATFORM": "", + "IOS_LOW_VERSION": "", + "ANDROID_LOW_VERSION": "", + "USER_PHONE": "", + "RESERVE": { + "appChannel": "molistar", + "appId": 9498014797, + "code": "5f41ff10-af28-4b2b-a649-07fc3b239a3b", + "gameConfig": { + "currencyIcon": "https://image.molistar.xyz/ic_gold.png", + "sceneMode": 1 + }, + "gameMode": "2", + "gsp": 101 }, - "textColor": "#FEF23E", - "type": "TEXT" + "NOT_CHANNELS": "", + "ANDROID_HIGH_VERSION": "", + "IOS_HIGH_VERSION": "", + "USER_LEVEL": "" }, - { - "height": 20, - "image": "https://image.pekolive.com/Lucky77.png", - "key": "gameIcon", - "type": "IMAGE", - "width": 20 - }, - { - "key": "diamondNum", - "text": { - "ar": "60000", - "en": "60000", - "zh": "60000" - }, - "textColor": "#00EAFF", - "type": "TEXT" - } - ], - "dimensionRatio": "375:60", - "fontSize": 12, - "nodeList": [ - { - "content": { - "$ref": "$.contents[2]" - } - }, - { - "text": " ", - "textColor": "#FFFFFF" - }, - { - "content": { - "$ref": "$.contents[0]" - } - }, - { - "text": " ", - "textColor": "#FFFFFF" - }, - { - "content": { - "$ref": "$.contents[1]" - } - }, - { - "text": " Win ", - "textColor": "#FFFFFF" - }, - { - "content": { - "$ref": "$.contents[3]" - } - }, - { - "text": " Coins", - "textColor": "#FFFFFF" - } - ], - "partitionId": 1, - "resourceContent": "https://image.molistar.xyz/mini_game_floating_2.svga", - "resourceHeight": 60, - "resourceType": "SVGA", - "resourceWidth": 375, - "skipContent": "136", - "skipType": 7, - "svgaTextKey": "noble_text_tx", - "template": { - "ar": "{gameIcon} {avatar} {nick} Win {diamondNum} Coins", - "en": "{gameIcon} {avatar} {nick} Win {diamondNum} Coins", - "zh": "{gameIcon} {avatar} {nick} Win {diamondNum} Coins" + "seizeTreasure": false, + "seqNo": 0, + "showType": 2, + "skipContent": "https://game-center-test.jieyou.shop/game-packages/common-web/dragon-tiger/1.0.3/web-mobile/index.html", + "skipType": 3, + "skipUri": "https://game-center-test.jieyou.shop/game-packages/common-web/dragon-tiger/1.0.3/web-mobile/index.html", + "type": 3, + "updateTime": "2024-07-29 16:09:39" }, - "textColor": "#FFFFFF" -} \ No newline at end of file + { + "baiShunGame": false, + "code": "LEADERCC", + "createTime": "2024-10-21 15:21:06", + "endTime": "2025-10-30 00:00:00", + "findLove": false, + "firstCharge": false, + "icon": "https://image.pekolive.com/luck5y.png", + "id": 138, + "leadercc": true, + "name": "Lucky Wheel", + "nauticalAdventure": false, + "ruleValue": { + "PLATFORM": "", + "IOS_LOW_VERSION": "", + "ANDROID_LOW_VERSION": "", + "USER_PHONE": "", + "RESERVE": { + "appChannel": "molistar", + "appId": 123456, + "code": "c5f9a679-a180-488d-8ea7-827eaee08396" + }, + "NOT_CHANNELS": "", + "ANDROID_HIGH_VERSION": "", + "IOS_HIGH_VERSION": "", + "USER_LEVEL": "" + }, + "seizeTreasure": false, + "seqNo": 1, + "showType": 2, + "skipContent": "https://gztest.leadercc.com/molistar_games/wheel_medium/index.html?pl=molistar", + "skipType": 3, + "skipUri": "https://gztest.leadercc.com/molistar_games/wheel_medium/index.html?pl=molistar", + "startTime": "2024-10-20 00:00:00", + "type": 3, + "updateTime": "2024-10-22 16:05:25" + } +]