private static void OnGetRoomInfo(MsgBase msgBase) { MsgGetRoomInfo msg = (MsgGetRoomInfo)msgBase; RoomDetailScence roomDetailScence = ContainerBuilder.Resolve <RoomDetailScence>(); roomDetailScence.Room = JsonConvert.DeserializeObject <Room>(msg.result); }
//生成MsgGetRoomInfo协议 public MsgBase ToMsg() { MsgGetRoomInfo msg = new MsgGetRoomInfo(); int count = playerIds.Count; msg.players = new PlayerInfo[count]; //players int i = 0; foreach (string id in playerIds.Keys) { Player player = PlayerManager.GetPlayer(id); PlayerInfo playerInfo = new PlayerInfo(); //赋值 playerInfo.id = player.id; playerInfo.camp = player.camp; playerInfo.win = player.data.win; playerInfo.lost = player.data.lost; playerInfo.isOwner = 0; if (isOwner(player)) { playerInfo.isOwner = 1; } msg.players[i] = playerInfo; i++; } return(msg); }
//generate MsgGetRoomInfo protocol public MsgBase ToMsg() { MsgGetRoomInfo msg = new MsgGetRoomInfo(); int count = playerDic.Count; msg.players = new PlayerInfo[count]; //players int i = 0; foreach (string id in playerDic.Keys) { Player player = PlayerManager.GetPlayer(id); if (player == null) { continue; } PlayerInfo playerInfo = new PlayerInfo { id = player.id, camp = player.camp, isOwner = 0 }; if (IsOwner(player)) { playerInfo.isOwner = 1; } msg.players[i] = playerInfo; i++; } return(msg); }
//收到玩家列表协议 public void OnMsgGetRoomInfo(MsgBase msgBase) { MsgGetRoomInfo msg = (MsgGetRoomInfo)msgBase; //清除玩家列表 for (int i = content1.childCount - 1; i >= 0; i--) { GameObject o = content1.GetChild(i).gameObject; Destroy(o); } for (int i = content2.childCount - 1; i >= 0; i--) { GameObject o = content2.GetChild(i).gameObject; Destroy(o); } //重新生成列表 if (msg.players == null) { return; } for (int i = 0; i < msg.players.Length; i++) { GeneratePlayerInfo(msg.players[i]); } }
public static void MsgGetRoomInfo(ClientState c, MsgBase msgBase) { MsgGetRoomInfo msg = (MsgGetRoomInfo)msgBase; User user = c.user; if (user == null) { msg.code = HttpStatusCode.Unauthorized; msg.result = "请先登录"; NetManager.Send(c, msg); return; } Room room = RoomManager.GetRoom(user.RoomId); if (room == null) { msg.code = HttpStatusCode.NotFound; msg.result = "房间不存在"; return; } //获取玩家列表 msg.code = HttpStatusCode.OK; msg.result = JsonConvert.SerializeObject(room); NetManager.Send(c, msg); }
//收到玩家列表协议 public void OnMsgGetRoomInfo(MsgBase msgBase) { MsgGetRoomInfo msg = (MsgGetRoomInfo)msgBase; //清除玩家列表 for (int i = content.childCount - 1; i >= 0; i--) { GameObject o = content.GetChild(i).gameObject; Destroy(o); } //重新生成列表 if (msg.players == null) { return; } for (int i = 0; i < msg.players.Length; i++) { string id = msg.players[i].id; if (id == GameMain.id) { if (msg.players[i].isOwner == 1) { startButton.interactable = true; } else { startButton.interactable = false; } } GeneratePlayerInfo(msg.players[i]); } }
//显示 public override void OnShow(params object[] args) { //寻找组件 startButton = skin.transform.Find("CtrlPanel/StartButton").GetComponent <Button>(); closeButton = skin.transform.Find("CtrlPanel/CloseButton").GetComponent <Button>(); content = skin.transform.Find("ListPanel/Scroll View/Viewport/Content"); playerObj = skin.transform.Find("Player").gameObject; //不激活玩家信息 playerObj.SetActive(false); //按钮事件 startButton.onClick.AddListener(OnStartClick); closeButton.onClick.AddListener(OnCloseClick); startButton.onClick.AddListener(Audio.ButtonClick); closeButton.onClick.AddListener(Audio.ButtonClick); //协议监听 NetManager.AddMsgListener("MsgGetRoomInfo", OnMsgGetRoomInfo); NetManager.AddMsgListener("MsgLeaveRoom", OnMsgLeaveRoom); NetManager.AddMsgListener("MsgStartBattle", OnMsgStartBattle); NetManager.AddMsgListener("MsgInitData", OnMsgInitData); //发送查询 MsgGetRoomInfo msg = new MsgGetRoomInfo(); NetManager.Send(msg); Audio.PlayLoop(Audio.bgRoomPanel); }
// public static void MsgEnterRoom(ClientState c, MsgBase msgBase){ // MsgEnterRoom msg = (MsgEnterRoom)msgBase; // Player player = c.player; // if(player == null) return; // //已经在房间里 // if(player.roomId >=0 ){ // msg.result = 1; // player.Send(msg); // return; // } // //获取房间 // Room room = RoomManager.GetRoom(msg.id); // if(room == null){ // msg.result = 1; // player.Send(msg); // return; // } // //进入 // if(!room.AddPlayer(player.id)){ // msg.result = 1; // player.Send(msg); // return; // } // //返回协议 // msg.result = 0; // player.Send(msg); // } //获取房间信息 public static void MsgGetRoomInfo(ClientState c, MsgBase msgBase){ MsgGetRoomInfo msg = (MsgGetRoomInfo)msgBase; Player player = c.player; if(player == null) return; Room room = RoomManager.GetRoom(player.roomId); if(room == null){ player.Send(msg); return; } player.Send(room.ToMsg()); }