using Newtonsoft.Json; namespace TableturfBattleServer.DTO; internal class WebSocketPayload { [JsonProperty("event")] public string EventName; [JsonProperty("data")] public T Payload; public WebSocketPayload(string eventName, T payload) { this.EventName = eventName ?? throw new ArgumentNullException(nameof(eventName)); this.Payload = payload; } } internal class WebSocketPayloadWithPlayerData : WebSocketPayload { [JsonProperty("playerData")] public PlayerData? PlayerData; public WebSocketPayloadWithPlayerData(string eventName, T payload, PlayerData? playerData) : base(eventName, payload) => this.PlayerData = playerData; } public class PlayerData { [JsonProperty("playerIndex")] public int PlayerIndex; [JsonProperty("hand")] public Card[]? Hand; [JsonProperty("deck")] public Card[]? Deck; [JsonProperty("move")] public Move? Move; [JsonProperty("cardsUsed")] public List? CardsUsed; public PlayerData(int playerIndex, Card[]? hand, Card[]? deck, Move? move, List? cardsUsed) { this.PlayerIndex = playerIndex; this.Hand = hand; this.Deck = deck; this.Move = move; this.CardsUsed = cardsUsed; } public PlayerData(int playerIndex, Player player) : this(playerIndex, player.Hand, player.CurrentGameData.Deck, player.Move, player.CardsUsed) { } }