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