void SendLobby(PacketFlags flags) { List <SelectObj> selectObjs = new List <SelectObj>(); foreach (GameClient gameClient in peers.Values) { selectObjs.Add(new SelectObj() { Type = gameClient.Type, Name = gameClient.Name, Team = gameClient.Team, Ready = gameClient.Ready }); } LobbyObj lobbyObj = new LobbyObj() { State = (byte)state, Timer = timer, SelectObjs = selectObjs.ToArray() }; foreach (var keyValue in peers) { if (state == NetworkState.Battle && keyValue.Value.Ready) { continue; } lobbyObj.PeerSelectObj = new SelectObj() { Type = keyValue.Value.Type, Name = keyValue.Value.Name, Team = keyValue.Value.Team, Ready = keyValue.Value.Ready }; Send(MessageType.Lobby, keyValue.Key, MessagePackSerializer.Serialize(lobbyObj), flags); } }
void LobbyHandler(byte[] data) { LobbyObj lobbyObj = MessagePackSerializer.Deserialize <LobbyObj>(data); if (!applyPlayerSelectObj && playerSelectObj == null) { playerSelectObj = lobbyObj.PeerSelectObj; if (state == SceneState.Lobby) { type = playerSelectObj.Type; SetUnitTypeIcon(type); _name = playerSelectObj.Name; nameInputField.text = playerSelectObj.Name; _team = playerSelectObj.Team; SetTeamButtonColor(_team); _ready = playerSelectObj.Ready; SetReadyButtonColor(_ready); applyPlayerSelectObj = true; playerSelectObj = null; } } if (state == SceneState.Lobby) { if (lobbyObj.State == 0) { lobbyTitle.text = "Before Battle"; } else if (lobbyObj.State == 1) { lobbyTitle.text = lobbyObj.Timer.ToString("F0"); } else { lobbyTitle.text = "In Battle"; } bluePlayerNodeInstances.ForEach(x => Destroy(x)); bluePlayerNodeInstances.Clear(); redPlayerNodeInstances.ForEach(x => Destroy(x)); redPlayerNodeInstances.Clear(); foreach (SelectObj selectObj in lobbyObj.SelectObjs) { if (selectObj.Team == Team.Blue) { GameObject instance = Instantiate(playerNodePrefab, blueContentRectTransform); instance.GetComponent <PlayerNode>().SetData(selectObj.Type, selectObj.Team, selectObj.Name, selectObj.Ready); bluePlayerNodeInstances.Add(instance); } else { GameObject instance = Instantiate(playerNodePrefab, redContentRectTransform); instance.GetComponent <PlayerNode>().SetData(selectObj.Type, selectObj.Team, selectObj.Name, selectObj.Ready); redPlayerNodeInstances.Add(instance); } } } else if (state == SceneState.Main) { SceneManager.LoadScene("Lobby"); } }