From 5b406e1f48bf643218c1726674fcb090239a8c60 Mon Sep 17 00:00:00 2001 From: huangjian Date: Thu, 16 Dec 2021 18:57:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=B8=E6=88=8F=E5=BC=80=E5=A7=8B=E5=92=8C?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E5=9B=9E=E8=B0=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../avroom/fragment/HomePartyFragment.java | 116 +++++++++--------- .../yizhuan/erban/avroom/game/GameDelegate.kt | 17 ++- .../erban/avroom/game/SudMGPMGState.java | 6 + .../erban/home/fragment/HomePlayFragment.java | 4 +- .../home/fragment/HomeTabHomeFragment.java | 2 +- 5 files changed, 79 insertions(+), 66 deletions(-) diff --git a/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyFragment.java b/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyFragment.java index 19288cb2c..03da337c9 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyFragment.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/fragment/HomePartyFragment.java @@ -224,65 +224,61 @@ public class HomePartyFragment extends AbsRoomFragment implements View.OnClickLi if (!AvRoomDataManager.get().haveSelfChange) { AvRoomDataManager.get().mIsNeedGiftEffect = AvRoomDataManager.get().mCurrentRoomInfo.isHasAnimationEffect(); } + } - if (AvRoomDataManager.get().isRoomOwner() && - roomInfo.getIsPermitRoom() != 1 && - roomInfo.getRoomModeType() == RoomModeType.NORMAL_MODE) { - gameMainBinding.llChangeGame.setVisibility(View.VISIBLE); - gameMainBinding.rvGame.setLayoutManager(new LinearLayoutManager(mContext)); - gameMainBinding.rvGame.setAdapter(gameAdapter = new SelectGameAdapter()); - gameMainBinding.tvCurrGame.setOnClickListener(v -> { - if (gameMainBinding.rvGame.getVisibility() == View.VISIBLE) { - gameMainBinding.rvGame.setVisibility(View.GONE); - gameMainBinding.ivChangeGameArrow.setImageResource(R.drawable.ic_room_arrow_type_below); - } else { - if (roomInfo.getRoomModeType() != RoomModeType.NORMAL_MODE) { - SingleToastUtil.showToast("请关闭其他模式再切换游戏!"); - return; - } - if (AvRoomDataManager.get().isGamePlaying()) { - SingleToastUtil.showToast("游戏中不可以切换游戏或玩法!"); - } else { - gameMainBinding.rvGame.setVisibility(View.VISIBLE); - gameMainBinding.ivChangeGameArrow.setImageResource(R.drawable.ic_room_arrow_type); - } - } - }); - - gameAdapter.setOnItemClickListener((adapter, view, position) -> { - if (AvRoomDataManager.get().isGamePlaying()) { - SingleToastUtil.showToast("游戏中不可以切换游戏或玩法!"); - } - + private void initRvGame() { + RoomInfo roomInfo = AvRoomDataManager.get().mCurrentRoomInfo; + if (roomInfo == null || gameAdapter != null) return; + gameMainBinding.rvGame.setLayoutManager(new LinearLayoutManager(mContext)); + gameMainBinding.rvGame.setAdapter(gameAdapter = new SelectGameAdapter()); + gameMainBinding.tvCurrGame.setOnClickListener(v -> { + if (gameMainBinding.rvGame.getVisibility() == View.VISIBLE) { + gameMainBinding.rvGame.setVisibility(View.GONE); + gameMainBinding.ivChangeGameArrow.setImageResource(R.drawable.ic_room_arrow_type_below); + } else { if (roomInfo.getRoomModeType() != RoomModeType.NORMAL_MODE) { SingleToastUtil.showToast("请关闭其他模式再切换游戏!"); return; } - - GameInfo gameInfo = gameAdapter.getItem(position); - if (gameInfo != null) { - int type; - long mgId = 0; - if (Objects.equals("扩列交友", gameInfo.getName())) { - type = RoomInfo.ROOMTYPE_HOME_PARTY; - } else { - type = RoomInfo.ROOMTYPE_GAME; - mgId = JavaUtil.str2long(gameInfo.getMgId()); - } - gameMainBinding.rvGame.setVisibility(View.GONE); - gameMainBinding.ivChangeGameArrow.setImageResource(R.drawable.ic_room_arrow_type_below); - OpenRoomHelper.updateRoomInfo( - getBaseActivity(), - AvRoomDataManager.get().mCurrentRoomInfo, - type, - mgId, - false); + if (AvRoomDataManager.get().isGamePlaying()) { + SingleToastUtil.showToast("游戏中不可以切换游戏或玩法!"); + } else { + gameMainBinding.rvGame.setVisibility(View.VISIBLE); + gameMainBinding.ivChangeGameArrow.setImageResource(R.drawable.ic_room_arrow_type); } - }); - } else { - gameMainBinding.llChangeGame.setVisibility(View.GONE); - } + } + }); + gameAdapter.setOnItemClickListener((adapter, view, position) -> { + if (AvRoomDataManager.get().isGamePlaying()) { + SingleToastUtil.showToast("游戏中不可以切换游戏或玩法!"); + } + + if (roomInfo.getRoomModeType() != RoomModeType.NORMAL_MODE) { + SingleToastUtil.showToast("请关闭其他模式再切换游戏!"); + return; + } + + GameInfo gameInfo = gameAdapter.getItem(position); + if (gameInfo != null) { + int type; + long mgId = 0; + if (Objects.equals("扩列交友", gameInfo.getName())) { + type = RoomInfo.ROOMTYPE_HOME_PARTY; + } else { + type = RoomInfo.ROOMTYPE_GAME; + mgId = JavaUtil.str2long(gameInfo.getMgId()); + } + gameMainBinding.rvGame.setVisibility(View.GONE); + gameMainBinding.ivChangeGameArrow.setImageResource(R.drawable.ic_room_arrow_type_below); + OpenRoomHelper.updateRoomInfo( + getBaseActivity(), + AvRoomDataManager.get().mCurrentRoomInfo, + type, + mgId, + false); + } + }); } @@ -403,14 +399,6 @@ public class HomePartyFragment extends AbsRoomFragment implements View.OnClickLi .beginTransaction() .replace(R.id.container, roomFragment) .commitAllowingStateLoss(); - - if (AvRoomDataManager.get().isRoomOwner() && - currentRoomInfo.getIsPermitRoom() != 1 - && currentRoomInfo.getRoomModeType() == RoomModeType.NORMAL_MODE) { - gameMainBinding.llChangeGame.setVisibility(View.VISIBLE); - } else { - gameMainBinding.llChangeGame.setVisibility(View.GONE); - } gameMainBinding.setRoomInfo(currentRoomInfo); updateHasAnimationEffect(); roomTitle.setText(RegexUtil.getPrintableString(currentRoomInfo.getTitle())); @@ -428,7 +416,11 @@ public class HomePartyFragment extends AbsRoomFragment implements View.OnClickLi tvFollowRoom.setBackgroundResource(AvRoomDataManager.get().isRoomFans ? R.drawable.bg_room_follow_room_collected : R.drawable.bg_room_follow_room); setIdOnlineData(); - if (AvRoomDataManager.get().isRoomOwner()) { + if (AvRoomDataManager.get().isRoomOwner() && + currentRoomInfo.getIsPermitRoom() != 1 + && currentRoomInfo.getRoomModeType() == RoomModeType.NORMAL_MODE) { + initRvGame(); + gameMainBinding.llChangeGame.setVisibility(View.VISIBLE); if (AvRoomDataManager.get().isOpenGame()) { gameMainBinding.tvCurrGame.setText(currentRoomInfo.getMgName()); } else { @@ -451,6 +443,8 @@ public class HomePartyFragment extends AbsRoomFragment implements View.OnClickLi } gameAdapter.setNewData(gameInfos); }); + } else { + gameMainBinding.llChangeGame.setVisibility(View.GONE); } } } diff --git a/app/src/main/java/com/yizhuan/erban/avroom/game/GameDelegate.kt b/app/src/main/java/com/yizhuan/erban/avroom/game/GameDelegate.kt index 905fab57c..cc67999a9 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/game/GameDelegate.kt +++ b/app/src/main/java/com/yizhuan/erban/avroom/game/GameDelegate.kt @@ -371,6 +371,7 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId: SudMGPMGState.APP_COMMON_SELF_CLICK_START_BTN -> { notifySelfPlayingState(true) } + SudMGPMGState.MG_COMMON_GAME_STATE -> handleGameState(dataJson) } } @@ -492,6 +493,20 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId: } } + private fun handleGameState(dataJson: String) { + try { + val jsonObject = JSONObject(dataJson) + val gameState = jsonObject.getInt("gameState") + if (gameState == 0) { + onGameStatusChangeListener?.onGameEnd() + } else if (gameState == 2) { + onGameStatusChangeListener?.onGameStart() + } + } catch (e: Exception) { + e.printStackTrace() + } + } + private fun handlePlayerPlaying(userId: String, dataJson: String) { if (userId != mUid) return try { @@ -502,10 +517,8 @@ class GameDelegate(val activity: Activity, val container: FrameLayout, var mgId: } val isPlaying = jsonObject.getBoolean("isPlaying") if (isPlaying) { - onGameStatusChangeListener?.onGameStart() updateMyMicQueue(GameStatus.STATUS_PLAYING) } else { - onGameStatusChangeListener?.onGameEnd() updateMyMicQueue(GameStatus.STATUS_NOT_READY) } } catch (e: Exception) { diff --git a/app/src/main/java/com/yizhuan/erban/avroom/game/SudMGPMGState.java b/app/src/main/java/com/yizhuan/erban/avroom/game/SudMGPMGState.java index 95fbf9973..7421af13e 100644 --- a/app/src/main/java/com/yizhuan/erban/avroom/game/SudMGPMGState.java +++ b/app/src/main/java/com/yizhuan/erban/avroom/game/SudMGPMGState.java @@ -52,6 +52,12 @@ public class SudMGPMGState { */ public static final String MG_COMMON_PLAYER_PLAYING = "mg_common_player_playing"; + /** + * 游戏状态(已修改) + * 最低版本: v1.1.30.xx + */ + public static final String MG_COMMON_GAME_STATE = "mg_common_game_state"; + // endregion 通用状态-玩家 diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/HomePlayFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/HomePlayFragment.java index 98b511a82..5668f6cef 100644 --- a/app/src/main/java/com/yizhuan/erban/home/fragment/HomePlayFragment.java +++ b/app/src/main/java/com/yizhuan/erban/home/fragment/HomePlayFragment.java @@ -88,12 +88,12 @@ public class HomePlayFragment extends BaseFragment { @Subscribe(threadMode = ThreadMode.MAIN) public void onLoadLoginUserInfoEvent(LoadLoginUserInfoEvent event) { - loadData(true); + if (isResumed()) loadData(true); } @Subscribe(threadMode = ThreadMode.MAIN) public void onRefreshHomeDataEvent(RefreshHomeDataEvent event) { - loadData(true); + if (isResumed()) loadData(true); } diff --git a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java index 907ea2386..bc664bb46 100644 --- a/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java +++ b/app/src/main/java/com/yizhuan/erban/home/fragment/HomeTabHomeFragment.java @@ -196,7 +196,7 @@ public class HomeTabHomeFragment extends BaseFragment { @Subscribe(threadMode = ThreadMode.MAIN) public void onRefreshHomeDataEvent(RefreshHomeDataEvent event) { - getData(); + if (isResumed()) getData(); } }