// GameServerOnDataReceived: The event to fire when GameSettingsReceivedEvent is triggered private static void GameServerOnDataReceived(object sender, DataReceivedEvent e) { var token = e.Data.Split(new[] { GameServer.PacketSplitter }, StringSplitOptions.RemoveEmptyEntries); foreach (var messageToken in token) { ProtocolModel.Base baseMessage = JsonConvert.DeserializeObject <ProtocolModel.Base>(messageToken); switch (baseMessage.Type) { // ResponsePlayers: If received, Clear and Re-Set the Players array with the json data received case ProtocolModel.MessageType.ResponsePlayers: { Players.Clear(); foreach (var item in JsonConvert.DeserializeObject <ProtocolModel.PlayerList>(baseMessage.Data.ToString()).Players) { Players.Add(item); } break; } // LobbyMessage: If received, parse the json data into a displayable format and add it to the Message array (Where CollectionChanged will fire) case ProtocolModel.MessageType.LobbyMessage: { ProtocolModel.LobbyMessage message = JsonConvert.DeserializeObject <ProtocolModel.LobbyMessage>(baseMessage.Data.ToString()); Messages.Add($"({baseMessage.DateTime}) {message.Player}{(message.Player != "" ? " => " : "")}{message.Message}"); break; } // RequestGameSettings: If received, fire a GameSettingsReceivedEvent containing the json data to be received by any active callbacks to the event case ProtocolModel.MessageType.RequestGameSettings: { OnGameSettingsReceivedEvent?.Invoke(null, new GameSettingsReceivedEvent(baseMessage.Data.ToString())); break; } // ResponseShapes: If received, Clear and Re-Set the PanelShapes array with the json data provided (Exact same workings as ResponsePlayers) case ProtocolModel.MessageType.ResponseShapes: { PanelShapes.Clear(); foreach (var item in JsonConvert.DeserializeObject <List <ProtocolModel.Shape> >(baseMessage.Data.ToString())) { PanelShapes.Add(item); } break; } } } }
private static void GameServerOnDataReceived(object sender, DataReceivedEvent e) { var token = e.Data.Split(new[] { "\\;omansak;\\" }, StringSplitOptions.RemoveEmptyEntries); foreach (var messageToken in token) { ProtocolModel.Base baseMessage = JsonConvert.DeserializeObject <ProtocolModel.Base>(messageToken); switch (baseMessage.Type) { // Get PlayerList case ProtocolModel.MessageType.ResponsePlayers: { Players.Clear(); foreach (var item in JsonConvert.DeserializeObject <ProtocolModel.PlayerList>(baseMessage.Data.ToString()).Players) { Players.Add(item); } break; } case ProtocolModel.MessageType.LobbyMessage: { ProtocolModel.LobbyMessage message = JsonConvert.DeserializeObject <ProtocolModel.LobbyMessage>(baseMessage.Data.ToString()); Messages.Add($"({baseMessage.DateTime}) {message.Player} : {message.Message}"); break; } case ProtocolModel.MessageType.RequestGameSettings: { OnGameSettingsReceivedEvent?.Invoke(null, new GameSettingsReceivedEvent(baseMessage.Data.ToString())); break; } case ProtocolModel.MessageType.ResponseShapes: { PanelShapes.Clear(); foreach (var item in JsonConvert.DeserializeObject <List <ProtocolModel.Shapes> >(baseMessage.Data.ToString())) { PanelShapes.Add(item); } break; } } } }