namespace RainOpsMini.Models { public class PlayerInfo { public int Id { get; set; } public string Name { get; set; } = string.Empty; public string SteamId { get; set; } = string.Empty; public string EosId { get; set; } = string.Empty; public int TeamId { get; set; } public int? SquadId { get; set; } public bool IsLeader { get; set; } public string Role { get; set; } = string.Empty; // Stats from Logs public int Kills { get; set; } public int Deaths { get; set; } } public class SquadInfo { public int Id { get; set; } public string Name { get; set; } = string.Empty; public int Size { get; set; } public bool Locked { get; set; } public int TeamId { get; set; } public string CreatorName { get; set; } = string.Empty; public string CreatorSteamId { get; set; } = string.Empty; public string CreatorEosId { get; set; } = string.Empty; public string LastCreatedTime { get; set; } = string.Empty; // Formatted time or empty } public class ServerData { public ServerInfoResponse? ServerInfo { get; set; } public List Players { get; set; } = new List(); public List Squads { get; set; } = new List(); } public class ServerInfoResponse { public int MaxPlayers { get; set; } public string GameMode_s { get; set; } = string.Empty; public string MapName_s { get; set; } = string.Empty; public string GameVersion_s { get; set; } = string.Empty; public string PlayerCount_I { get; set; } = "0"; public string ServerName_s { get; set; } = string.Empty; public string TeamOne_s { get; set; } = string.Empty; public string TeamTwo_s { get; set; } = string.Empty; public string NextLayer_s { get; set; } = string.Empty; public double MatchTimeout_d { get; set; } public int PlayTime_I { get; set; } // Current match duration in seconds } public class VipMember { public string SteamId { get; set; } = string.Empty; public string Name { get; set; } = string.Empty; // 玩家名称/备注 public string Group { get; set; } = "VIP_RainOpsMini"; // VIP_RainOpsMini 或 SVIP_RainOpsMini public DateTime ExpiryDate { get; set; } public DateTime? VipExpiryDate { get; set; } // VIP 独立到期时间 public DateTime? SvipExpiryDate { get; set; } // SVIP 独立到期时间 public string Remark { get; set; } = string.Empty; // 原因/备注 public string WelcomeMessage { get; set; } = string.Empty; // 自定义欢迎语 public DateTime CreatedAt { get; set; } = DateTime.Now; } }