网上演练贵港万达广场(人员密集)
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

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