using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json.Serialization; using RadicadeServer.RecNet.Enums; using RadicadeServer.RecNet.Enums.Players.Avatar; using RadicadeServer.RecNet.Enums.Rooms; using RadicadeServer.RecNet.Enums.Store; using RadicadeServer.Radicade.Gifts.Enums; namespace RadicadeServer.RecNet.Rooms { public class RoomData { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public long RoomId { get; set; } public string Tags { get; set; } = string.Empty; public bool IsDorm { get; set; } = false; public int MaxPlayers { get; set; } = 10; public MaxPlayerMode MaxPlayerCalculationMode { get; set; } = MaxPlayerMode.OnlyEntrySubrooms; public bool CloningAllowed { get; set; } = false; public bool DisableMicAutoMute { get; set; } = false; public bool DisableRoomComments { get; set; } = false; public bool EncryptVoiceChat { get; set; } = false; public string Name { get; set; } = ""; public string? Description { get; set; } = ""; public string ImageName { get; set; } = "default.png"; public WarningMask WarningMask { get; set; } public string? CustomWarning { get; set; } = null; public long CreatorAccountId { get; set; } = 1; public RoomState State { get; set; } = RoomState.Active; public Accessibility Accessibility { get; set; } = Accessibility.Private; public bool SupportsLevelVoting { get; set; } = false; public bool IsRRO { get; set; } = false; public bool IsDeveloperOwned { get; set; } = false; public bool SupportsScreens { get; set; } = true; public bool SupportsWalkVR { get; set; } = true; public bool SupportsTeleportVR { get; set; } = true; public bool SupportsVRLow { get; set; } = true; public bool SupportsQuest2 { get; set; } = true; public bool SupportsMobile { get; set; } = true; public bool SupportsJuniors { get; set; } = true; public int MinLevel { get; set; } = 0; public DateTime CreatedAt { get; set; } = DateTime.MinValue; [JsonIgnore] public DateTime PublishedAt { get; set; } = DateTime.Now; [JsonIgnore] public bool WasPublished = false; public string loadScreen { get; set; } = "[]"; public int Version { get; set; } = 1; public bool JoinGiftEnabled { get; set; } = false; public bool JoinGiftOncePerPlayer { get; set; } = true; public int JoinGiftVersion { get; set; } = 1; public string JoinGiftTitle { get; set; } = "Room Visit Gift"; public string JoinGiftMessage { get; set; } = "Thanks for visiting!"; public string JoinGiftAvatarItem { get; set; } = ""; public string JoinGiftEquipmentItem { get; set; } = ""; public string JoinGiftConsumableItem { get; set; } = ""; public int JoinGiftCurrencyAmount { get; set; } = 0; public CurrencyType JoinGiftCurrencyType { get; set; } = CurrencyType.RecCenterTokens; public int JoinGiftXp { get; set; } = 0; public GiftContext JoinGiftContext { get; set; } = GiftContext.Game_Drop; public Rarity JoinGiftRarity { get; set; } = Rarity.Common; public AvatarItemType JoinGiftAvatarItemType { get; set; } = AvatarItemType.Outfit; public string JoinGiftEquipmentModificationGuid { get; set; } = ""; /// /// The account the join box is from, which the client shows on the box and reads off /// RecNet's Gift.FromPlayerId. Zero means the room names no sender, as it did before this /// was configurable. /// public long JoinGiftFromPlayerId { get; set; } = 0; } }