using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; using RadicadeServer.RecNet.Enums.Rooms; namespace RadicadeServer.RecNet.Rooms { public class RoomInstance { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public long roomInstanceId { get; set; } public long roomId { get; set; } = 1; public long subRoomId { get; set; } = 1; public RoomInstanceType roomInstanceType { get; set; } = RoomInstanceType.Dormroom; public string? location { get; set; } = ""; public string dataBlob { get; set; } = ""; public long? eventId { get; set; } = 0; public long? clubId { get; set; } = 0; public string? roomCode { get; set; } = ""; [NotMapped] public string photonRegion { get; set; } = "us"; public string photonRegionId { get; set; } = "us"; public string photonRoomId { get; set; } = $"Radicade{Random.Shared.Next(232)}-{Guid.NewGuid().ToString().Replace("-", "")}"; public string name { get; set; } = "DormRoom"; public int maxCapacity { get; set; } = 4; public bool isFull { get; set; } = false; public bool isPrivate { get; set; } = false; public bool isInProgress { get; set; } = false; public bool EncryptVoiceChat { get; set; } = false; public RoomInstance Copy() => (RoomInstance)MemberwiseClone(); } public class FullRoomInstance : RoomInstance { public List playerIds { get; set; } = new(); } }