using System.Collections; using System.Collections.Generic; using UnityEngine; using AX.Serialization; using AX.NetworkSystem; using AX.Network.Protocols; using System; using UnityEngine.SceneManagement; public class ROOM_LEAVE_SYNC : NetworkMessageBehaviour { protected override void Execute(BinaryMessage message) { var info = message.Body.Deserialize(); if (CurrentUserInfo.room!=null&& info.RoomId == CurrentUserInfo.room.Id) { if (CurrentUserInfo.mySelf.Id == info.UserData.UserInfo.Id) {//返回本人处理 EntitiesManager.Instance.Reset();//跳转场景时要清空实体管理器中的对象 //准备状态下的用户离开时需要初始化准备状态,避免再进入房间直接就是准备状态 UserData user = CurrentUserInfo.room.FindUserById(CurrentUserInfo.mySelf.Id); user.IsReady = false; if (CurrentUserInfo.role==Role.导调组&&GameSettings.othersSettings.isStartDrill) {//如果是导调组退出房间并且演练已经开始 GameSettings.othersSettings.isStartDrill = false; } if (info.TargetScene.ToString() == "Lobby") {//从房间返回大厅 CurrentUserInfo.room = null; NetworkManager.Default.SendAsync("LOBBY_ENTER_SYNC", user); } else { if (info.TargetScene == GoTo.Menu) {//从房间返回主菜单 CurrentUserInfo.room = null; CurrentUserInfo.role = Role.None; SceneManager.LoadScene(info.TargetScene.ToString()); } else {//从房间返回登陆 NetworkManager.Default.SendAsync("LOGOUT_SYNC", info.UserData); } } } else {//通知其他人,有人触发返回操作导致的离开房间 if (GetComponentsInChildren().Length<1) { //如果不是在房间等待界面有人离开房间。 UserData remove = CurrentUserInfo.room.FindUserById(info.UserData.UserInfo.Id); CurrentUserInfo.room.UserList.Remove(remove); return; } RoleItem[] roleitem = GetComponentsInChildren(); for (int i = 0; i < roleitem.Length; i++) { if (CurrentUserInfo.mySelf.Id != info.UserData.UserInfo.Id) { UserData remove = CurrentUserInfo.room.FindUserById(info.UserData.UserInfo.Id); CurrentUserInfo.room.UserList.Remove(remove); if (roleitem[i].userData.UserInfo.Id == info.UserData.UserInfo.Id) { Destroy(roleitem[i].gameObject); } GetComponent().hideuselessPanel(CurrentUserInfo.room.UserList); //刷新房间信息 //FindObjectOfType().SetRoomInfo(); transform.parent.Find("RoomInfoPanel").GetComponent().SetRoomInfo(); } } } } } }