Exemple #1
0
        // 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;
                }
                }
            }
        }
Exemple #2
0
        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;
                }
                }
            }
        }