private void OnMessageRecieved(MessageType messageType, string message) { switch (messageType) { case MessageType.StartGame: { GameStarted?.Invoke(); break; } case MessageType.PlayerType: { PlayerType playerType = (PlayerType)Enum.Parse(typeof(PlayerType), message); PlayerTypeRecieved?.Invoke(playerType); break; } case MessageType.Step: { string[] moves = message.Split(','); BoardIndex from = BoardIndex.Parse(moves[0]); BoardIndex to = BoardIndex.Parse(moves[1]); MoveRecieved?.Invoke(from, to); break; } case MessageType.TurnEnd: { TurnEnded?.Invoke(); break; } case MessageType.StartTurn: { PlayerType playerType = (PlayerType)Enum.Parse(typeof(PlayerType), message); TurnStarted?.Invoke(playerType); break; } case MessageType.QueenAppeared: { BoardIndex where = BoardIndex.Parse(message); QueenAppeared?.Invoke(where); break; } case MessageType.Result: { PlayerType winner = (PlayerType)Enum.Parse(typeof(PlayerType), message); ResultRecieved?.Invoke(winner); break; } case MessageType.Name: { OpponentName?.Invoke(message); break; } case MessageType.TextMessage: { TextMessageRecieved?.Invoke(message); break; } } }