You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
3.5 KiB
80 lines
3.5 KiB
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<EnterRoomPair>(); |
|
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<RoleItem>().Length<1) |
|
{ |
|
//如果不是在房间等待界面有人离开房间。 |
|
UserData remove = CurrentUserInfo.room.FindUserById(info.UserData.UserInfo.Id); |
|
CurrentUserInfo.room.UserList.Remove(remove); |
|
return; |
|
} |
|
|
|
RoleItem[] roleitem = GetComponentsInChildren<RoleItem>(); |
|
|
|
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<MainPanel>().hideuselessPanel(CurrentUserInfo.room.UserList); |
|
//刷新房间信息 |
|
//FindObjectOfType<RoomInfoPanel>().SetRoomInfo(); |
|
transform.parent.Find("RoomInfoPanel").GetComponent<RoomInfoPanel>().SetRoomInfo(); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
}
|
|
|