游戏开始和结束回调修改

This commit is contained in:
huangjian
2021-12-16 18:57:23 +08:00
parent 781368ca6c
commit 5b406e1f48
5 changed files with 79 additions and 66 deletions

View File

@@ -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);
}
}
}

View File

@@ -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) {

View File

@@ -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 通用状态-玩家

View File

@@ -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);
}

View File

@@ -196,7 +196,7 @@ public class HomeTabHomeFragment extends BaseFragment {
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRefreshHomeDataEvent(RefreshHomeDataEvent event) {
getData();
if (isResumed()) getData();
}
}