This commit is contained in:
skidfire
2026-09-06 19:59:27 -04:00
parent 55d8e11a5d
commit fe3468c65d
247 changed files with 338183 additions and 0 deletions
@@ -0,0 +1,52 @@
using System;
using LiteDB;
using static Vanadium.Classes.DBs.DBClasses.PlayerDBClasses;
namespace Vanadium.Classes.DBs.DBClasses
{
public class AnnoucementDBClasses
{
// from game dump :3
public class Announcement
{
[BsonId]
public long AnnouncementId { get; set; }
public AnnouncementType AnnouncementType { get; set; }
public string? Title { get; set; }
public string? Body { get; set; }
public string? ImageName { get; set; }
public LinkType LinkType { get; set; }
public string? LinkName { get; set; }
public string? LinkButtonLabel { get; set; }
public string? LinkUri { get; set; }
public Platforms Platform { get; set; } = Platforms.All;
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
public class DirectorAnnouncementRequest : Announcement { public bool Clear { get; set; } = false; }
public enum AnnouncementType
{
Update,
Contest,
Store,
Event,
Warning,
Item
}
public enum LinkType
{
Url,
AccountId,
EventId,
RoomName,
Storefront,
[Obsolete] // game said not to use ts?
ActionCode,
Item,
CustomAvatarItem,
AuthorizedRecNetUrl
}
}
}
@@ -0,0 +1,24 @@
using System;
using LiteDB;
namespace Vanadium.Classes.DBs.DBClasses
{
public static class AntiCheatDBClasses
{
public class Detection
{
[BsonId]
public ObjectId Id { get; set; }
public long PlayerId { get; set; }
public string Username { get; set; }
public ulong SteamId { get; set; }
public string Type { get; set; } // "cheat" | "injection"
public string Reason { get; set; }
public string ModVersion { get; set; }
public long? RoomId { get; set; }
public DateTime DetectedAt { get; set; }
public DateTime LastSeen { get; set; }
public int Count { get; set; } = 1;
}
}
}
+82
View File
@@ -0,0 +1,82 @@
using LiteDB;
using Newtonsoft.Json;
namespace Vanadium.Classes.DBs.DBClasses
{
public class ChatDBClasses
{
public class ChatThread
{
public List<ChatMessage> Messages { get; set; }
public long ChatThreadId { get; set; }
public List<long> PlayerIds { get; set; }
public long LastReadMessageId { get; set; }
[JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
public Dictionary<long, long> PlayerReadStates { get; set; } = new();
public string ChatThreadName { get; set; }
public DateTime? SnoozedUntil { get; set; }
public bool IsFavorited { get; set; }
}
public class ChatMessage
{
public long ChatMessageId { get; set; }
public long ChatThreadId { get; set; }
public int SenderPlayerId { get; set; }
public DateTime TimeSent { get; set; }
public string Contents { get; set; }
public int ModerationState { get; set; }
}
public class MessageJson
{
public MessageContentType Type { get; set; }
public int Version { get; set; }
public string Data { get; set; }
}
public struct SendMessageResponse
{
public ChatResults ChatResult { get; set; }
public ChatThread ChatThread { get; set; }
}
public enum ChatResults
{
Success,
InvalidArguments,
ThreadNotFound,
MembershipNotFound,
PlayerAlreadyOnThread,
CannotMessagePlayer,
InvalidCharacters,
RecentlyLeftThread,
ThreadTooLarge
}
public enum ModerationState : byte
{
Active,
Junior_Pending = 11,
Moderation_Pending = 100,
Moderation_Closed,
Moderation_Banned,
MarkedForDelete = 255
}
public enum QueryMode
{
Latest,
NewerThan,
OlderThan
}
public enum MessageContentType
{
Text,
PartyInvite,
Photo
}
}
}
+209
View File
@@ -0,0 +1,209 @@
using System;
using System.Collections.Generic;
using LiteDB;
namespace Vanadium.Classes.DBs.DBClasses
{
public class ClubsDBClasses
{
public class Club
{
[BsonId]
public long ClubId { get; set; }
public string Name { get; set; } = "";
public string? Description { get; set; }
public string Category { get; set; } = "Social";
public int Joinability { get; set; } = 0;
public int Visibility { get; set; } = 1;
public bool AllowJuniors { get; set; } = true;
public int MinLevel { get; set; } = 0;
public ClubType ClubType { get; set; } = ClubType.Generic;
public bool IsRRO { get; set; } = false;
public int State { get; set; } = 0;
public long CreatorAccountId { get; set; }
public long? ClubhouseRoomId { get; set; }
public string MainImageName { get; set; } = "DefaultRoomImage.png";
public int MemberCount { get; set; } = 1;
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public List<ClubMember> Members { get; set; } = new();
public List<ClubAdditionalImage> AdditionalImages { get; set; } = new();
public List<string> CustomTags { get; set; } = new();
public List<ClubPermissions> Permissions { get; set; } = new();
public List<long> BannedMemberIds { get; set; } = new();
public bool IsDeleted { get; set; } = false;
}
public class ClubMember
{
public long MemberId { get; set; }
public long AccountId { get; set; }
public int MemberType { get; set; } = 10;
public DateTime JoinedAt { get; set; } = DateTime.UtcNow;
public bool IsPendingApproval { get; set; } = false;
}
public class ClubAdditionalImage
{
public int Index { get; set; }
public string ImageName { get; set; } = "";
}
public class ClubPermissions
{
[BsonId]
public long ClubPermissionsId { get; set; }
public long ClubId { get; set; }
public int Type { get; set; }
public bool ApproveMember { get; set; }
public bool BanUnban { get; set; }
public bool CreateEvent { get; set; }
public bool EditDetails { get; set; }
public bool EditPermissionSettings { get; set; }
public bool PostAnnouncement { get; set; }
}
public class ClubDbCounters
{
[BsonId]
public string Key { get; set; } = "";
public long Value { get; set; }
}
public class ClubAnnouncement
{
[BsonId]
public long AnnouncementId { get; set; }
public long ClubId { get; set; }
public long CreatorAccountId { get; set; }
public string Title { get; set; } = "";
public string Body { get; set; } = "";
public string? ImageName { get; set; }
public string? Meta { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public Dictionary<long, long> LastReadAnnouncementIdByAccount { get; set; } = new();
}
public class ClubAnnouncementDTO
{
public long AnnouncementId { get; set; }
public long ClubId { get; set; }
public long CreatorAccountId { get; set; }
public string Title { get; set; } = "";
public string Body { get; set; } = "";
public string? ImageName { get; set; }
public string? Meta { get; set; }
public DateTime CreatedAt { get; set; }
}
public class ClubAnnouncementListDTO
{
public long ClubId { get; set; }
public List<ClubAnnouncementDTO> Announcements { get; set; } = new();
public long? LastAnnouncementId { get; set; }
public long LastReadAnnouncementId { get; set; }
}
public class ClubSummaryDTO
{
public long ClubId { get; set; }
public string Name { get; set; } = "";
public string? Description { get; set; }
public string Category { get; set; } = "Social";
public int Joinability { get; set; }
public int Visibility { get; set; }
public bool AllowJuniors { get; set; }
public int MinLevel { get; set; }
public ClubType ClubType { get; set; }
public bool IsRRO { get; set; }
public int State { get; set; }
public long CreatorAccountId { get; set; }
public long? ClubhouseRoomId { get; set; }
public string MainImageName { get; set; } = "";
public int MemberCount { get; set; }
}
public class ClubDetailsDTO
{
public long ClubId { get; set; }
public ClubSummaryDTO Club { get; set; } = new();
public List<ClubAdditionalImage> AdditionalImages { get; set; } = new();
public List<string> CustomTags { get; set; } = new();
public ClubPermissions? CoownerPermissions { get; set; }
public ClubPermissions? ModeratorPermissions { get; set; }
public ClubPermissions? MemberPermissions { get; set; }
public int MyMembershipType { get; set; }
}
public class ClubSearchResult
{
public List<ClubSummaryDTO> Clubs { get; set; } = new();
public string? ContinuationToken { get; set; }
public int TotalClubs { get; set; }
}
public class ClubMemberDTO
{
public long MemberId { get; set; }
public long AccountId { get; set; }
public long ClubId { get; set; }
public int MembershipType { get; set; }
public DateTime CreatedAt { get; set; }
}
public enum ClubVisibility
{
Private = 0,
Public = 1,
Unlisted = 2
}
public enum ClubJoinability
{
Open = 0,
ApprovalRequired = 1,
Closed = 2
}
public enum ClubMemberType
{
Member = 10,
Moderator = 20,
CoOwner = 30,
Owner = 100
}
public enum ClubType
{
Generic,
Creator
}
}
}
@@ -0,0 +1,93 @@
using LiteDB;
namespace Vanadium.Classes.DBs.DBClasses
{
public class CustomClothingDBClasses
{
public class CustomClothingItem
{
[BsonId]
public Guid Id { get; set; } = Guid.NewGuid();
public long CreatorAccountId { get; set; }
public string Name { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public int Price { get; set; }
public bool IsFeatured { get; set; } = false;
public int? BaseAvatarItemId { get; set; }
public string BaseAvatarItemColor { get; set; } = "#FFFFFF";
public string DesignFilename { get; set; } = string.Empty;
public string ThumbnailImageFilename { get; set; } = string.Empty;
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public DateTime ModifiedAt { get; set; } = DateTime.UtcNow;
public ClothingAccessibility Accessibility { get; set; } = ClothingAccessibility.Public;
public ClothingPreviewOrientation PreviewOrientation { get; set; } = ClothingPreviewOrientation.Front;
[BsonIgnore]
public Dictionary<string, object> ToDictionary()
{
var data = new Dictionary<string, object>
{
["CustomAvatarItemId"] = Id.ToString(),
["CreatorAccountId"] = CreatorAccountId,
["Name"] = Name,
["Description"] = Description,
["Price"] = Price,
["Accessibility"] = (int)Accessibility,
["IsFeatured"] = IsFeatured,
["BaseAvatarItemColor"] = BaseAvatarItemColor,
["DesignFilename"] = DesignFilename,
["ThumbnailImageFilename"] = ThumbnailImageFilename,
["CreatedAt"] = CreatedAt.ToString("O"),
["ModifiedAt"] = ModifiedAt.ToString("O"),
["PreviewOrientation"] = (int)PreviewOrientation,
};
if (BaseAvatarItemId.HasValue)
data["BaseAvatarItemId"] = BaseAvatarItemId.Value;
return data;
}
}
public class CustomClothingMetaRequest
{
public required string Name { get; set; }
public required string Description { get; set; }
public required int Price { get; set; }
public int? BaseAvatarItemId { get; set; }
public required string BaseAvatarItemColor { get; set; }
public required ClothingAccessibility Accessibility { get; set; }
//public required ClothingPreviewOrientation PreviewOrientation { get; set; }
}
public class RecNetCustomClothingDto
{
public Guid CustomAvatarItemId { get; set; }
public long CreatorAccountId { get; set; }
public string Name { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public int Price { get; set; }
public ClothingAccessibility Accessibility { get; set; }
public bool IsFeatured { get; set; }
public string BaseAvatarItemColor { get; set; } = string.Empty;
public string DesignFilename { get; set; } = string.Empty;
public string ThumbnailImageFilename { get; set; } = string.Empty;
public DateTime CreatedAt { get; set; }
public DateTime ModifiedAt { get; set; }
public int? BaseAvatarItemId { get; set; }
public ClothingPreviewOrientation PreviewOrientation { get; set; } = ClothingPreviewOrientation.Front;
}
public enum ClothingAccessibility
{
Public = 0,
Private = 1,
JuniorFriendly = 2
}
public enum ClothingPreviewOrientation
{
Front = 0,
Back = 1,
Side = 2
}
}
}
+150
View File
@@ -0,0 +1,150 @@
using System;
using LiteDB;
namespace Vanadium.Classes.DBs.DBClasses
{
public class EventDBClasses
{
public enum PlayerEventAccessibility
{
Private = 0,
Public = 1,
Unlisted = 2
}
public enum PlayerEventResponseType
{
None = -1,
Yes = 0,
Interested = 1,
No = 2,
Pending = 3
}
public class PlayerEventTag
{
[BsonId]
public long Id { get; set; }
public long PlayerEventId { get; set; }
public string Tag { get; set; } = string.Empty;
public int Type { get; set; } = 0;
}
public class PlayerEventRsvp
{
[BsonId]
public long PlayerEventResponseId { get; set; }
public long PlayerEventId { get; set; }
public long PlayerId { get; set; }
public int Type { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
public class PlayerEvent
{
[BsonId]
public long PlayerEventId { get; set; }
public long CreatorPlayerId { get; set; }
public string Name { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public int Accessibility { get; set; } = (int)PlayerEventAccessibility.Public;
public long? ClubId { get; set; }
public long RoomId { get; set; }
public long? SubRoomId { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
public string ImageName { get; set; } = string.Empty;
public int State { get; set; } = 0;
public int AttendeeCount { get; set; } = 0;
public List<PlayerEventTag> Tags { get; set; } = new();
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public int CanRequestBroadcastPermissions { get; set; } = 0;
public int DefaultBroadcastPermissions { get; set; } = 0;
public bool IsMultiInstance { get; set; } = false;
public bool SupportMultiInstanceRoomChat { get; set; } = false;
}
public class LivePlayerEvent
{
public long PlayerEventId { get; set; }
public long CreatorPlayerId { get; set; }
public string Name { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public int Accessibility { get; set; }
public long? ClubId { get; set; }
public long RoomId { get; set; }
public long? SubRoomId { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
public string? ImageName { get; set; }
public int State { get; set; }
public int AttendeeCount { get; set; }
public List<PlayerEventTag> Tags { get; set; } = new();
public bool IsFull { get; set; }
public int PlayerCount { get; set; }
public int CanRequestBroadcastPermissions { get; set; } = 0;
public int DefaultBroadcastPermissions { get; set; } = 0;
public bool IsMultiInstance { get; set; } = false;
public bool SupportMultiInstanceRoomChat { get; set; } = false;
}
public class RespondRequest
{
public long PlayerEventId { get; set; }
public string Type { get; set; } = "Yes";
}
public class PlayerEventRequest
{
public int Accessibility { get; set; } = (int)PlayerEventAccessibility.Public;
public long? ClubId { get; set; }
public string Description { get; set; } = string.Empty;
public string EndTime { get; set; } = string.Empty;
public string ImageName { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public long RoomId { get; set; }
public string StartTime { get; set; } = string.Empty;
public long? SubRoomId { get; set; }
public List<string> Tags { get; set; } = new();
public int CanRequestBroadcastPermissions { get; set; } = 0;
public int DefaultBroadcastPermissions { get; set; } = 0;
public bool IsMultiInstance { get; set; } = false;
public bool SupportMultiInstanceRoomChat { get; set; } = false;
}
public class PlayerEventResponse
{
public PlayerEvent? PlayerEvent { get; set; }
public int Result { get; set; } = 0;
}
public class PlayerEventRespondRequest
{
public long PlayerEventId { get; set; }
public int Type { get; set; }
}
public class PlayerEventRoomRequest
{
public long RoomId { get; set; }
public long? SubRoomId { get; set; }
}
public class PlayerEventTimeRequest
{
public string? StartTime { get; set; }
public string? EndTime { get; set; }
}
public class PlayerEventClubRequest
{
public long? ClubId { get; set; }
}
public class PlayerEventMultiInstanceRequest
{
public bool IsMultiInstance { get; set; }
public bool SupportMultiInstanceRoomChat { get; set; }
}
}
}
+53
View File
@@ -0,0 +1,53 @@
using LiteDB;
namespace Vanadium.Classes.DBs.DBClasses
{
public class FriendsDBClasses
{
public class FriendEntry
{
[BsonId]
public ObjectId? Id { get; set; }
public long PlayerID { get; set; }
public RelationshipDetail Relationship { get; set; } = new RelationshipDetail();
}
public class RelationshipDetail
{
public long Id { get; set; }
public long PlayerID { get; set; }
public long OtherPlayerID { get; set; }
public RelationshipType RelationshipType { get; set; }
public ReciprocalStatus Muted { get; set; }
public ReciprocalStatus Ignored { get; set; }
public ReciprocalStatus Favorited { get; set; }
public int VoiceVolume { get; set; } = 100;
}
public enum RelationshipType
{
None,
Sent,
Received,
Friend,
}
[Flags]
public enum FriendInfo
{
None = 0,
Favorited = 1,
Muted = 2,
Ignored = 4,
Blocked = 5
}
public enum ReciprocalStatus
{
None,
Local,
Remote,
Mutual
}
}
}
+59
View File
@@ -0,0 +1,59 @@
using LiteDB;
namespace Vanadium.Classes.DBs.DBClasses
{
public class GiftsDBClasses
{
public class Gift
{
[BsonId]
public long Id { get; set; }
public long ToPlayerId { get; set; }
public long FromPlayerId { get; set; } = 1;
public string AvatarItemDesc { get; set; } = "";
public int AvatarItemType { get; set; } = 0;
public int BalanceType { get; set; } = -2;
public string ConsumableItemDesc { get; set; } = "";
public int Currency { get; set; } = 0;
public int CurrencyType { get; set; } = 0;
public string EquipmentModificationGuid { get; set; } = "";
public string EquipmentPrefabName { get; set; } = "";
public int GiftContext { get; set; } = 0;
public int GiftRarity { get; set; } = -1;
public int Level { get; set; } = 0;
public string Message { get; set; } = "A gift for you <3";
public int Platform { get; set; } = -1;
public int PlatformsToSpawnOn { get; set; } = -1;
public int Xp { get; set; } = 0;
public bool Consumed { get; set; } = false;
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
public class GiftDTO
{
public string AvatarItemDesc { get; set; } = "";
public int AvatarItemType { get; set; } = 0;
public int BalanceType { get; set; } = -2;
public string ConsumableItemDesc { get; set; } = "";
public int Currency { get; set; } = 0;
public int CurrencyType { get; set; } = 0;
public string EquipmentModificationGuid { get; set; } = "";
public string EquipmentPrefabName { get; set; } = "";
public long FromPlayerId { get; set; } = 1;
public int GiftContext { get; set; } = 0;
public int GiftRarity { get; set; } = -1;
public long Id { get; set; }
public int Level { get; set; } = 0;
public string Message { get; set; } = "A gift for you <3";
public int Platform { get; set; } = -1;
public int PlatformsToSpawnOn { get; set; } = -1;
public int Xp { get; set; } = 0;
}
public class ConsumeGiftRequest
{
public long Id { get; set; }
public int UnlockedLevel { get; set; } = 0;
}
}
}
+50
View File
@@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using LiteDB;
namespace Vanadium.Classes.DBs.DBClasses
{
public static class HwidDBClasses
{
/// <summary>
/// One machine, and every account that has ever reported from it.
/// <para>
/// The ban fields live on the record rather than in a second collection so that a
/// lookup by hwid answers both questions - who is this machine, and is it banned -
/// in a single read, on the path that runs for every client that checks in.
/// </para>
/// </summary>
public class HwidRecord
{
[BsonId]
public string Hwid { get; set; }
public List<long> PlayerIds { get; set; } = new();
public DateTime FirstSeen { get; set; }
public DateTime LastSeen { get; set; }
/// <summary>True while the machine itself is banned, separately from any account.</summary>
public bool IsBanned { get; set; }
/// <summary>Why. Required when banning; a blank reason makes a ban unreviewable.</summary>
public string BanReason { get; set; }
/// <summary>Player id of the moderator who issued it, or a system name.</summary>
public string BannedBy { get; set; }
public DateTime? BannedAt { get; set; }
/// <summary>Null bans permanently.</summary>
public DateTime? BanExpiresAt { get; set; }
/// <summary>
/// Accounts linked to the machine at the moment of the ban. A snapshot: it shows
/// what the moderator was looking at, which is not always what the link table
/// says later.
/// </summary>
public List<long> LinkedAtBan { get; set; } = new();
public bool BanIsActive(DateTime utcNow) =>
IsBanned && (BanExpiresAt == null || BanExpiresAt > utcNow);
}
}
}
@@ -0,0 +1,104 @@
using LiteDB;
public static partial class ImageMetadataDB
{
public class FullSavedImage
{
[BsonId]
public int Id { get; set; }
public ImageAccessibility Accessibility { get; set; }
public bool AccessibilityLocked { get; set; } = false;
public int CheerCount { get; set; } = 0;
public int CommentCount { get; set; } = 0;
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public string? Description { get; set; }
public string ImageName { get; set; }
public ulong PlayerEventId { get; set; }
public ulong PlayerId { get; set; }
public long RoomId { get; set; }
public SavedImageTypeEnum Type { get; set; }
public List<ulong> TaggedPlayerIds { get; set; } = new();
public bool DevLocked { get; set; } = false;
}
public class ImageV6
{
public ImageAccessibility Accessibility { get; set; }
public bool AccessibilityLocked { get; set; } = false;
public int CheerCount { get; set; } = 0;
public int CommentCount { get; set; } = 0;
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public string? Description { get; set; }
public int Id { get; set; }
public string ImageName { get; set; }
public ulong PlayerEventId { get; set; }
public ulong PlayerId { get; set; }
public long RoomId { get; set; }
public List<ulong> TaggedPlayerIds { get; set; } = new();
public SavedImageTypeEnum Type { get; set; }
}
public class ImagesPlayer
{
public ImageAccessibility Accessibility { get; set; }
public bool AccessibilityLocked { get; set; } = false;
public int CheerCount { get; set; } = 0;
public long ClubId { get; set; } = 0;
public int CommentCount { get; set; } = 0;
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public string? Description { get; set; }
public string ImageName { get; set; }
public ulong PlayerEventId { get; set; }
public ulong PlayerId { get; set; }
public long RoomId { get; set; }
public int SavedImageId { get; set; }
public SavedImageTypeEnum SavedImageType { get; set; }
}
public class ImageMetadata
{
public List<ulong> playerIds { get; set; } = new();
public SavedImageTypeEnum savedImageType { get; set; }
public long roomId { get; set; }
public ImageAccessibility accessibility { get; set; }
public string? description { get; set; }
}
public class ModifyDescriptionRequest
{
public string ImageName { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
}
public class Cheer
{
[BsonId]
public int Id { get; set; }
public int SavedImageId { get; set; }
public ulong PlayerId { get; set; }
}
public class CheerRequest
{
public int SavedImageId { get; set; }
public bool Cheer { get; set; }
}
public enum SavedImageTypeEnum
{
None,
ShareCamera,
OutfitThumbnail,
RoomThumbnail,
ProfileThumbnail,
InventionThumbnail,
PlayerEventThumbnail,
RoomLoadScreen
}
public enum ImageAccessibility
{
Private = 0,
Public = 1,
}
}
@@ -0,0 +1,45 @@
using LiteDB;
using static Vanadium.Classes.DBs.DBClasses.PlayerDBClasses;
namespace Vanadium.Classes.DBs.DBClasses
{
public class InstanceDBClasses
{
public class InstanceEntry
{
[BsonId]
public long RoomInstanceId { get; set; }
public long RoomId { get; set; }
public long SubRoomId { get; set; }
public bool IsPrivate { get; set; }
public bool IsFull { get; set; }
public bool IsDeleted { get; set; } = false;
public int MaxCapacity { get; set; }
public string Name { get; set; } = "";
public string Location { get; set; } = "";
public string PhotonRoomId { get; set; } = "";
public string PhotonRegion { get; set; } = "us";
public string PhotonRegionId { get; set; } = "us";
public string DataBlob { get; set; } = "";
public string PhotonRealtimeAppId { get; set; } = "";
public string PhotonVoiceAppId { get; set; } = "";
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public RoomInstance ToRoomInstance() => new RoomInstance
{
roomInstanceId = RoomInstanceId,
roomId = RoomId,
subRoomId = SubRoomId,
isPrivate = IsPrivate,
isFull = IsFull,
maxCapacity = MaxCapacity,
Name = Name,
location = Location,
photonRoomId = PhotonRoomId,
photonRegion = PhotonRegion,
photonRegionId = PhotonRegionId,
dataBlob = DataBlob
};
}
}
}
+234
View File
@@ -0,0 +1,234 @@
using LiteDB;
using static Vanadium.Classes.DBs.DBClasses.RoomDBClasses;
namespace Vanadium.Classes.DBs.DBClasses
{
public class InventionDBClasses
{
public class Invention
{
[BsonId]
public long InventionId { get; set; }
public string ReplicationId { get; set; } = Guid.NewGuid().ToString();
public long CreatorPlayerId { get; set; }
public long CreationRoomId { get; set; } = 1;
public string Name { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public string LongDescription { get; set; } = string.Empty;
public string ImageName { get; set; } = string.Empty;
public int UgcVersion { get; set; } = 1;
public bool ForceCannotPublish { get; set; } = false;
public int CurrentVersionNumber { get; set; } = 1;
public int LatestVersionNumber { get; set; } = 1;
public List<InventionVersion> Versions { get; set; } = new();
public InventionVersion? CurrentVersion { get; set; }
public RoomAccessibility Accessibility { get; set; } = RoomAccessibility.Private;
public bool IsPublished { get; set; } = false;
public bool IsFeatured { get; set; } = false;
public DateTime ModifiedAt { get; set; } = DateTime.UtcNow;
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public DateTime? FirstPublishedAt { get; set; } = DateTime.MinValue;
public int NumPlayersHaveUsedInRoom { get; set; } = 0;
public int NumDownloads { get; set; } = 0;
public int CheerCount { get; set; } = 0;
public int CreatorPermission { get; set; } = 100;
public int GeneralPermission { get; set; } = 100;
public bool IsAGInvention { get; set; } = false;
public bool IsCertifiedInvention { get; set; } = false;
public bool IsRecRoomApproved { get; set; } = false;
public int Price { get; set; } = 0;
public bool AllowTrial { get; set; } = false;
public bool HideFromPlayer { get; set; } = false;
public string DisplayMetadataJson { get; set; } = string.Empty;
public int inkCost { get; set; } = 1;
public List<InventionTag> Tags { get; set; } = new();
public List<long> CheeredIds { get; set; } = new();
public List<long> DownloadIds { get; set; } = new();
public List<long> ReferencedInventions { get; set; } = new();
}
public class InventionVersion
{
public long InventionId { get; set; }
public string ReplicationId { get; set; } = Guid.NewGuid().ToString();
public int VersionNumber { get; set; } = 1;
public string BlobName { get; set; } = string.Empty;
public string BlobHash { get; set; } = string.Empty;
public int InstantiationCost { get; set; }
public int LightsCost { get; set; }
public int ChipsCost { get; set; }
public int CloudVariablesCost { get; set; }
public int AICost { get; set; }
public int inkCost { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
public class InventionData
{
public bool AllowTrial { get; set; }
public int CheerCount { get; set; }
public string CreatedAt { get; set; } = string.Empty;
public int CreatorPermission { get; set; }
public long CreatorPlayerId { get; set; }
public int CurrentVersionNumber { get; set; }
public string Description { get; set; } = string.Empty;
public string LongDescription { get; set; } = string.Empty;
public int GeneralPermission { get; set; }
public bool HideFromPlayer { get; set; }
public string ImageName { get; set; } = string.Empty;
public long InventionId { get; set; }
public bool IsAGInvention { get; set; }
public bool IsCertifiedInvention { get; set; }
public bool IsPublished { get; set; }
public bool IsFeatured { get; set; }
public bool IsRecRoomApproved { get; set; }
public string ModifiedAt { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public int NumDownloads { get; set; }
public int NumPlayersHaveUsedInRoom { get; set; }
public int Price { get; set; }
public string ReplicationId { get; set; } = string.Empty;
public int UgcVersion { get; set; }
public bool ForceCannotPublish { get; set; }
public int LatestVersionNumber { get; set; }
public List<InventionVersion> Versions { get; set; } = new();
public InventionVersion? CurrentVersion { get; set; }
public int Accessibility { get; set; }
public DateTime? FirstPublishedAt { get; set; } = DateTime.MinValue;
public long CreationRoomId { get; set; }
public string DisplayMetadataJson { get; set; } = string.Empty;
public List<long> ReferencedInventions { get; set; } = new();
public List<InventionTag> Tags { get; set; } = new();
}
public class InventionTag
{
public string Tag { get; set; } = string.Empty;
public int Type { get; set; } = 0;
}
public class SaveInventionRequest
{
[System.Text.Json.Serialization.JsonPropertyName("name")]
public string name { get; set; } = string.Empty;
[System.Text.Json.Serialization.JsonPropertyName("description")]
public string description { get; set; } = string.Empty;
[System.Text.Json.Serialization.JsonPropertyName("imageName")]
public string imageName { get; set; } = string.Empty;
[System.Text.Json.Serialization.JsonPropertyName("instantiationCost")]
public int instantiationCost { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("lightsCost")]
public int lightsCost { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("chipsCost")]
public int chipsCost { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("cloudVariablesCost")]
public int cloudVariablesCost { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("aiCost")]
public int aiCost { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("inkCost")]
public int inkCost { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("creationRoomId")]
public long creationRoomId { get; set; }
[System.Text.Json.Serialization.JsonPropertyName("inventionDataFilename")]
public string inventionDataFilename { get; set; } = string.Empty;
[System.Text.Json.Serialization.JsonPropertyName("referencedInventions")]
public List<long> referencedInventions { get; set; } = new();
[System.Text.Json.Serialization.JsonPropertyName("creatorAccountRole")]
public int creatorAccountRole { get; set; }
}
public class AddVersionRequest
{
public long inventionId { get; set; }
public int instantiationCost { get; set; }
public int lightsCost { get; set; }
public int chipsCost { get; set; }
public int cloudVariablesCost { get; set; }
public int aiCost { get; set; }
public int inkCost { get; set; }
public long creationRoomId { get; set; } = -1;
public string? inventionDataFilename { get; set; }
public List<long>? referencedInventions { get; set; }
}
public class InventionBatchRequest
{
public List<long> InventionIds { get; set; } = new();
}
public class SetTagsRequest
{
public long InventionId { get; set; }
public List<string> AutoTags { get; set; } = new();
public List<string> CustomTags { get; set; } = new();
}
public class SetTagsResponse
{
public int Result { get; set; }
public List<string> Tags { get; set; } = new();
}
public class DetailsResponse
{
public List<TagData> Tags { get; set; } = new();
}
public class TagData
{
public string Tag { get; set; } = string.Empty;
public int Type { get; set; }
}
public class PersonalDetailsResponse
{
public bool IsCheering { get; set; } = false;
}
public enum InventionPermissions // moved to its own enum class
{
Unassigned = 0,
LimitedOneUseOnly = 10,
DisallowKeyLock = 15,
UseOnly = 20,
EditAndSave = 40,
Publish = 60,
Charge = 80,
Unlimited = 100
}
public enum InventionReportCategory
{
RacismOrDiscriminatoryContent = 0,
SexualContent = 1,
MisleadingNamePictureOrDescription = 3,
Other = 4
}
public class InventionResponse
{
public int StatusCode { get; set; }
public Invention Invention { get; set; }
public InventionVersion InventionVersion { get; set; }
}
public class BuyInventionResponse
{
public InventionResponse InventionResponse { get; set; }
public StorefrontsDBClasses.BuyForFreeGiftButtonResponse BalanceUpdateResponse { get; set; }
}
public class ReportInvention
{
public long InventionId { get; set; }
public InventionReportCategory ReportCategory { get; set; }
public string? Details { get; set; }
}
public class CheerInventionRequest
{
public bool Cheer { get; set; }
public long InventionId { get; set; }
}
}
}
@@ -0,0 +1,68 @@
using LiteDB;
namespace Vanadium.Classes.DBs.DBClasses
{
public class LeaderboardDBClasses
{
public class LeaderboardEntry
{
[BsonId]
public long EntryId { get; set; }
public long PlayerId { get; set; }
public long RoomId { get; set; }
public int StatChannel { get; set; }
public int Score { get; set; }
public int FilterType { get; set; }
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
}
public class LeaderboardRow
{
public long playerId { get; set; }
public int rank { get; set; }
public int score { get; set; }
}
public class GetRanksRequest
{
public int FilterType { get; set; }
public long PlayerId { get; set; }
public int RankEnd { get; set; }
public int RankStart { get; set; }
public long RoomId { get; set; }
public bool SortAscending { get; set; }
public int StatChannel { get; set; }
public int Timeframe { get; set; }
}
public class GetRanksResponse
{
public List<LeaderboardRow> rows { get; set; } = new();
}
public class GetNearbyScoresRequest : GetRanksRequest
{
public int WindowSize { get; set; }
}
public class GetNearbyScoresResponse
{
public List<LeaderboardRow> rows { get; set; } = new();
}
public class CheckAndSetStatRequest
{
public int CurrentStatValue { get; set; }
public long RoomId { get; set; }
public int StatChannel { get; set; }
public int StatValue { get; set; }
}
public class CheckAndSetStatResponse
{
public string? error { get; set; }
public bool success { get; set; }
public LeaderboardRow? value { get; set; }
}
}
}
+19
View File
@@ -0,0 +1,19 @@
using LiteDB;
namespace Vanadium.Classes.DBs.DBClasses
{
public class MatchDBClasses
{
public class InviteDTO
{
public long InviteId { get; set; }
public string Name { get; set; }
public int InviteMode { get; set; } = 0;
}
public class PlayerOnlineDTO
{
public bool SenderIsMyFavoriteFriend { get; set; }
}
}
}
@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using LiteDB;
namespace Vanadium.Classes.DBs.DBClasses
{
public class PhotonAccessTokenDBClasses
{
public class SubroomPermissionSet
{
[BsonId]
public long Id { get; set; }
public long RoomId { get; set; }
public long SubRoomId { get; set; }
public List<StoredPermissionEntry> Permissions { get; set; } = new();
public DateTime UpdatedAt { get; set; } = DateTime.UtcNow;
}
public class StoredPermissionEntry
{
public string Permission { get; set; } = "";
public int Role { get; set; }
public int Type { get; set; }
public bool Override { get; set; }
public string Value { get; set; } = "";
}
}
}
+673
View File
@@ -0,0 +1,673 @@
using System;
using System.Text.Json.Serialization;
using LiteDB;
namespace Vanadium.Classes.DBs.DBClasses
{
public class PlayerDBClasses
{
public class FullPlayer
{
[BsonId]
public long PlayerId { get; set; }
public List<mPlatformID> PlatformIds { get; set; } = new();
public List<string>? DeviceIds { get; set; } = new();
public string? AuthToken { get; set; }
public string? Password { get; set; }
public List<PlayerRoles> PlayerRoles { get; set; } = new();
public Player? Player { get; set; }
public string RefreshToken { get; set; } = "";
public DateTime RefreshTokenExpires { get; set; } = new DateTime(9000, 1, 1, 0, 0, 0, DateTimeKind.Utc);
}
public class Player
{
public string? Username { get; set; }
public string? DisplayName { get; set; }
public string? DisplayEmoji { get; set; }
public string? Bio { get; set; }
public int AvailableUsernameChanges { get; set; } = 3;
public DateTime? LastUsernameChangeAt { get; set; }
public bool NameLocked { get; set; } = false;
public bool? IsJunior { get; set; }
public bool AvoidJuniors { get; set; } = true;
public int Level { get; set; } = 1;
public int XP { get; set; } = 0;
public int XPToday { get; set; } = 0;
public DateTime XPTodayDate { get; set; } = DateTime.MinValue;
public DateTime LastXPAwardedAt { get; set; } = DateTime.MinValue;
public long CurrentXPRoomId { get; set; } = 0;
public Dictionary<long, int> RoomXPEarnedToday { get; set; } = new();
public string? ProfileImage { get; set; }
public string? BannerImage { get; set; }
public string? Email { get; set; }
public int PronounFlags { get; set; }
public int IdentityFlags { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime LastLoginAt { get; set; }
public DateTime? Birthday { get; set; }
public CurrentAuthSession? CurrentAuthSession { get; set; } = new CurrentAuthSession();
public Reputation Reputation { get; set; } = new Reputation();
public List<long> VisitedRooms { get; set; } = new();
public List<RoomVisit> RoomVisits { get; set; } = new();
public List<long> CheeredRooms { get; set; } = new List<long>();
public List<long> FavoritedRooms { get; set; } = new List<long>();
public PlayerExtra PlayerExtra { get; set; } = new PlayerExtra();
public List<PlayerRelationship> Relationships { get; set; } = new List<PlayerRelationship>();
public string? DiscordUserId { get; set; }
public string? DiscordUsername { get; set; }
public bool DiscordLinked { get; set; } = false;
public DateTime? DiscordLinkedAt { get; set; }
}
public class RoomVisit
{
public long RoomId { get; set; }
public DateTime LastVisitedAt { get; set; }
}
public class RoomPlayerData
{
public long RoomId { get; set; }
public string Data { get; set; } = string.Empty;
}
public class PlayerDTOBase
{
public long accountId { get; set; }
public DateTime createdAt { get; set; }
public string? displayName { get; set; }
public string? displayEmoji { get; set; }
public bool? isJunior { get; set; }
public int platforms { get; set; }
public string? profileImage { get; set; }
public string? bannerImage { get; set; }
public string? username { get; set; }
public int personalPronouns { get; set; }
public int identityFlags { get; set; }
}
public class PlayerDTO : PlayerDTOBase { }
public class PlayerMeDTO : PlayerDTOBase
{
public int availableUsernameChanges { get; set; } = 3;
public DateTime? birthday { get; set; }
public string? email { get; set; }
public string? phone { get; set; }
public Reputation? reputation { get; set; }
}
public class CurrentAuthSession
{
public string? AuthSigningKey { get; set; }
}
public class PlayerRelationship
{
public long PlayerId { get; set; }
public int Favorited { get; set; } = 0;
public int Ignored { get; set; } = 0;
public int Muted { get; set; } = 0;
public int RelationshipType { get; set; } = 0;
}
public class OwnedEquipmentItem
{
public string PrefabName { get; set; } = "";
public string ModificationGuid { get; set; } = "";
public bool Favorited { get; set; } = false;
public int PlatformMask { get; set; } = -1;
public string FriendlyName { get; set; } = "";
public string Tooltip { get; set; } = "";
public int Rarity { get; set; } = 0;
}
public class UpdateEquipmentRequest
{
public bool Favorited { get; set; }
public string FriendlyName { get; set; } = "";
public string ModificationGuid { get; set; } = "";
public string PrefabName { get; set; } = "";
public int Rarity { get; set; }
public string? Tooltip { get; set; }
}
public class PlayerExtra
{
public Avatar Avatar { get; set; } = new Avatar();
public List<string> AvatarItems { get; set; } = new();
public List<SavedOutfit> SavedAvatars { get; set; } = new();
public ModerationBlockDetails? ModerationBlockDetails { get; set; } = new ModerationBlockDetails();
public List<Setting> Settings { get; set; } = new();
public Heartbeat Heartbeat { get; set; } = new Heartbeat();
public List<PlayerCurrency> Currencies { get; set; } = new();
public List<RoomPlayerData> RoomPlayerData { get; set; } = new();
public long DormRoomId { get; set; } = 0;
public long PlayerClubId { get; set; } = 0;
public int PhotoTaggingSetting { get; set; } = 0;
public List<MessageData> Messages { get; set; } = new();
public Influencer Influencer { get; set; } = new Influencer();
// anything below is not in original code sonsaN
public List<OwnedEquipmentItem> OwnedEquipment { get; set; } = new();
public int ImagesUploadedToday { get; set; } = 0;
public DateTime ImagesUploadedTodayDate { get; set; } = DateTime.MinValue;
public List<RoomDBClasses.PermissionEntry> CurrentPermissions { get; set; } = new();
public ToxModData? ToxMod { get; set; }
public JuniorStatusData? JuniorStatus { get; set; }
public DateTime? RoomChangeRestrictedUntil { get; set; }
public PersonalDetails PersonalDetails { get; set; } = new PersonalDetails();
public long HomeClubhouseId { get; set; } = 0;
}
public class PlayerCurrency
{
public int Balance { get; set; }
public CurrencyType CurrencyType { get; set; }
public BalanceType BalanceType { get; set; }
}
public class Avatar
{
public List<CustomAvatarItem> CustomAvatarItems { get; set; } = new();
public string OutfitSelections { get; set; } = "";
public string OutfitSelectionsV2 { get; set; } = "";
public string FaceFeatures { get; set; } = "";
public string SkinColor { get; set; } = "";
public string HairColor { get; set; } = "";
public string? CustomizationSettings { get; set; }
public int DataVersion { get; set; } = 0;
}
public class OutfitSelection
{
public string? CustomAvatarItemId { get; set; }
public int BodyPart { get; set; }
public string? BakedUnityAssetFileName { get; set; }
public object? AdditionalConfiguration { get; set; }
}
public class CustomAvatarItem
{
public int BodyPart { get; set; }
public string CustomAvatarItemId { get; set; }
}
public class Heartbeat
{
public string appVersion { get; set; } = ServerConfig.GameVersion.ToString();
public DeviceClasses? deviceClass { get; set; } = DeviceClasses.Unknown;
public MatchmakingErrorCode? errorCode { get; set; } = null;
public bool isOnline { get; set; } = false;
public long playerId { get; set; } = 0;
public RoomInstance? roomInstance { get; set; } = null;
public StatusVisibility statusVisibility { get; set; } = StatusVisibility.Online;
public int vrMovementMode { get; set; } = 0;
public string? photonAuthToken { get; set; }
public string? photonRealtimeAppId { get; set; }
public string? photonVoiceAppId { get; set; }
public string? photonChatAppId { get; set; }
public string? photonRegion { get; set; }
public string? photonRoomId { get; set; }
public string? voiceConnectionInfo { get; set; }
public string? voiceServerId { get; set; }
public object? experiments { get; set; }
}
public class Subscriptions
{
public long playerId { get; set; } = 0;
public int subscriberCount { get; set; } = 0;
}
public class RoomInstance
{
public bool encryptVoiceChat { get; set; }
public long clubId { get; set; } = 0;
public string? dataBlob { get; set; }
public long eventId { get; set; } = 0;
public bool isFull { get; set; }
public bool isInProgress { get; set; }
public bool isPrivate { get; set; }
public string location { get; set; }
public int maxCapacity { get; set; }
public string Name { get; set; }
public string photonRegion { get; set; }
public string photonRegionId { get; set; }
public string photonRoomId { get; set; }
public string roomCode { get; set; } = "";
public long roomId { get; set; }
public long roomInstanceId { get; set; }
public RoomInstanceType roomInstanceType { get; set; }
public long subRoomId { get; set; }
}
public class Reputation
{
public long AccountId { get; set; }
public bool IsCheerful { get; set; }
public double Noteriety { get; set; }
public CheerCategory SelectedCheer { get; set; }
public int CheerCredit { get; set; } = 20;
public int CheerGeneral { get; set; }
public int CheerHelpful { get; set; }
public int CheerCreative { get; set; }
public int CheerGreatHost { get; set; }
public int CheerSportsman { get; set; }
public int SubscriberCount { get; set; }
public int SubscribedCount { get; set; }
}
public class ModerationBlockDetails
{
public ReportCategory ReportCategory { get; set; } = ReportCategory.Moderator;
public int Duration { get; set; } = 0;
public long GameSessionId { get; set; } = 0;
public bool? IsBan { get; set; } = false;
public bool? IsHostKick { get; set; } = false;
public bool? IsVoiceModAutoban { get; set; } = false; // wow when did this day finally come 9/1/2026 ts feel like heaven boi
public bool? IsDeviceBan { get; set; } = false;
public bool? IsWarning { get; set; } = false;
public string? Message { get; set; } = "";
public ulong? PlayerIdReporter { get; set; } = null;
public string? VoteKickReason { get; set; } = null;
public DateTime? TimeoutStartedAt { get; set; } = null;
public string? AssociatedAccountUsername { get; set; } = null;
[JsonIgnore]
public long ModerationSetUnixTime { get; set; } = 0;
[JsonIgnore]
public ulong BannedByPlayerId { get; set; } = 0;
}
public class JuniorStatusData
{
public string? Reason { get; set; }
public string? SetBy { get; set; }
public DateTime? SetAt { get; set; }
}
public class ToxModData
{
public int Strikes { get; set; } = 0;
public long ActiveBanExpiresUnixTime { get; set; } = 0;
public string? ActiveBanCategory { get; set; }
public long LastOffenseUnixTime { get; set; } = 0;
public List<ToxModOffense> History { get; set; } = new();
}
public class ToxModOffense
{
public long UnixTime { get; set; }
public string? Category { get; set; }
public long DurationSeconds { get; set; }
public string? Note { get; set; }
public string? IssuedBy { get; set; }
}
// gay
public class MessageData
{
public long Id { get; set; }
public long FromPlayerId { get; set; }
public DateTime SentTime { get; set; }
public MessageType Type { get; set; }
public string? Data { get; set; }
public long? RoomId { get; set; }
public long? PlayerEventId { get; set; }
}
public enum MessageType // we dont need another MessageType enum, and WebsocketEvents.cs has more than this because this is from a 2022 dump
{
GameInvite,
GameInviteDeclined,
GameJoinFailed,
PartyActivitySwitch,
FriendInvite,
VoteToKick,
GameInviteV2,
PartyActivitySwitchV2,
RequestGameInvite = 10,
RequestGameInviteDeclined,
FriendStatusOnline = 20,
TextMessage = 30,
FriendRequestAccepted = 40,
PlayerCheer = 50,
PlayerCheerAnonymous,
RoomCoOwnerAdded = 60,
RoomCoOwnerRemoved,
RoomCoOwnerInvited,
CreatorPublishedNewRoom = 70,
PlayerAttendingEvent = 80,
PlayerEventInvitation,
GroupInvitation = 90,
PlayerJoinedGroup,
CoachMessage = 100
}
// gay
public class Setting
{
public required string Key { get; set; }
public required string Value { get; set; }
}
public class mPlatformID
{
public Platforms Platform { get; set; }
public string PlatformId { get; set; }
}
public class CachedLogins
{
public Platforms platform { get; set; }
public string? platformId { get; set; }
public long accountId { get; set; }
public DateTime? lastLoginTime { get; set; }
public bool requirePassword { get; set; }
}
public class PlayerProgressionDTO
{
public long PlayerId { get; set; }
public int Level { get; set; } = 1;
public int XP { get; set; } = 0;
}
public class PersonalDetails //invention
{
public bool? IsCheering { get; set; } = false;
public List<long> inventionsCheered { get; set; } = new List<long>();
}
public class OutfitLegacyData
{
public string? SelectionsV1 { get; set; }
public string? SelectionsV2 { get; set; }
public string? FaceFeatures { get; set; }
public string? SkinColor { get; set; }
public string? HairColor { get; set; }
}
public class SavedOutfitRequest
{
public int DataVersion { get; set; }
public OutfitLegacyData? LegacyData { get; set; }
public string? CustomizationSettings { get; set; }
public List<OutfitSelection>? Selections { get; set; }
public int Slot { get; set; }
public string? Name { get; set; }
public int Accessibility { get; set; }
public string? ThumbnailFileName { get; set; }
}
public class SavedOutfit : Avatar // 2023 & under - discontinued now
{
public int Slot { get; set; }
public string? PreviewImageName { get; set; }
public string? Name { get; set; }
public int Accessibility { get; set; } = 0;
public string? ThumbnailFileName { get; set; }
public List<OutfitSelection>? Selections { get; set; }
}
public class Influencer
{
public string CreatorCode { get; set; } = "";
public bool IsInfluencer { get; set; } = false;
public long SupportingInfluencer { get; set; } = 0;
}
public class DeleteMessagesRequest
{
public List<long> MessageIds { get; set; } = new();
}
public class Rep
{
public long AccountId { get; set; }
public bool IsCheerful { get; set; }
public int Noteriety { get; set; }
public CheerCategory SelectedCheer { get; set; }
public int CheerCredit { get; set; }
public int CheerGeneral { get; set; }
public int CheerHelpful { get; set; }
public int CheerCreative { get; set; }
public int CheerGreatHost { get; set; }
public int CheerSportsman { get; set; }
}
public class SetPlayerPhotoTaggingSettingRequest
{
public PlayerPhotoTaggingSetting Setting { get; set; }
}
public class ImageMetadata
{
public long? roomId { get; set; }
public string? description { get; set; }
public int accessibility { get; set; }
public List<long>? playerIds { get; set; }
public SavedImageTypeEnum savedImageType { get; set; }
}
public class SavedAvatarRequest
{
public int Slot { get; set; }
public string? OutfitSelections { get; set; }
public string? OutfitSelectionsV2 { get; set; }
public string? FaceFeatures { get; set; }
public string? SkinColor { get; set; }
public string? HairColor { get; set; }
public string? PreviewImageName { get; set; }
public string? Name { get; set; }
public List<object>? CustomAvatarItems { get; set; }
}
public enum PlayerPhotoTaggingSetting
{
Anyone,
Friends,
NoOne
}
public enum SavedImageTypeEnum
{
General = 0,
OutfitThumbnail = 1
}
public enum Platforms
{
All = -1,
Steam,
Oculus,
PlayStation,
Xbox,
RecNet,
IOS,
GooglePlay,
Standalone,
Pico,
Switch
}
public enum PlayerRoles
{
Screenshare,
Moderator,
Developer,
Keepsake,
betastudio,
limitsv2,
influencer,
gameClient
}
public enum ReportCategory
{
Moderator = -1,
Unknown,
DEPRECATED_MicrophoneAbuse,
Harassment,
Cheating,
DEPRECATED_ImmatureBehavior,
AFK,
Misc,
Underage,
VoteKick = 10,
MisleadingPurchases,
CoC_Underage = 100,
CoC_Sexual,
CoC_Discrimination,
CoC_Trolling,
CoC_NameOrProfile,
InappropriateClothing = 200,
IssuingInaccurateReports = 1000
}
public enum CheerCategory
{
None = -1,
General = 0,
Helpful = 10,
Sportmanship = 20,
GreatHost = 30,
Creative = 40,
RecRoomDeveloper = 9000
}
public enum MatchmakingErrorCode
{
UnknownError = -1,
Success = 0,
NoSuchGame = 1,
PlayerNotOnline = 2,
InsufficientSpace = 3,
EventNotStarted = 4,
EventAlreadyFinished = 5,
BlockedFromRoom = 7,
JuniorNotAllowed = 11,
Banned = 12,
AlreadyInBestInstance = 13,
InsufficientRelationship = 14,
UpdateRequired = 16,
AlreadyInTargetInstance,
UGCNotAllowed = 19,
NoSuchRoom = 20,
RoomIsNotActive = 22,
RoomBlockedByCreator = 23,
RoomIsPrivate = 25,
RoomInstanceIsPrivate = 26,
DeviceClassNotSupported = 30,
DeviceClassNotSupportedByRoomOwner = 31,
MovementModeNotSupportedByRoomOwner = 32,
EventIsPrivate = 35,
RoomInviteExpired = 40,
NoAvailableRegion = 45,
NotorietyTooPoor = 50,
BannedFromRoom = 55,
NoSuchRoomPlaylist = 60,
RoomPlaylistIsNotActive,
RoomPlaylistIsPrivate,
NoSuchClub = 70,
ClubHasNoClubhouse = 71,
ClubIsNotActive = 73,
NotAMemberOfClub = 74,
BannedFromClub = 75,
InstanceJoinNotPermitted = 76,
LevelTooLow = 77,
DeveloperOnly = 81,
MetaJuniorAccountRestriction = 83,
AccountDoesNotExist = 85
}
public enum DeviceClasses
{
Unknown,
VR,
Screen,
Mobile,
VRLow,
Quest2
}
public enum CurrencyType
{
Invalid,
LaserTagTickets,
RecCenterTokens = 2,
LostSkullsGold = 100,
DraculaSilver,
RecRoyale_Season1 = 200,
RoomCurrency = 300
}
public enum BalanceType
{
NonPurchasedNotUsableInP2P = -2,
NonPurchasedDefault,
SteamPurchased,
OculusPurchased,
PlayStationPurchased,
MicrosoftPurchased,
IOSPurchased = 5,
GooglePlayPurchased,
PlayStationNonPurchasedP2P = 100,
NonPlayStationNonPurchasedP2P,
NonPurchasedEarnedByP2P = 1000
}
public enum StatusVisibility
{
Online,
Away,
Offline,
Unknown = 100
}
public enum RoomInstanceType
{
Public,
Private,
Dormroom,
Event,
Meetup,
Clubhouse
}
public enum HileType
{
Obscured,
Time,
Inject,
GiftCount,
Engine,
UnknownDll,
ImageSignature,
AvatarHack,
NetworkCertificatePublicKey = 100,
NetworkCertificateIssuer,
NetworkCertificateMissing,
NetworkCertificateMismatch,
AutosaveChecksumMismatch = 150,
AutosaveSubRoomIdMismatch,
AutosaveChecksumException,
Photon_MissingHash = 200,
Photon_CorruptHash,
Photon_DifferentHash = 203,
AppData_Runtime_LengthMismatch = 300,
AppData_Runtime_LastWriteTimeMismatch,
AppData_Runtime_FileModified,
AppData_Boot_InvalidSignature = 310,
AppData_Boot_UnableToVerifySignatures,
Config_MissingHash = 320,
Config_DifferentHash,
Photon_InstantiateTool = 400,
Memory_Hash_Mismatch = 500,
Driver_Invalid_Signature = 600
}
}
}
+45
View File
@@ -0,0 +1,45 @@
using System.Text.Json.Serialization;
namespace Vanadium.Classes.DBs.DBClasses
{
public class RRPlus
{
public class SubscriptionResponse
{
[JsonPropertyOrder(1)]
public Subscription subscription { get; set; }
[JsonPropertyOrder(2)]
public ulong? platformAccountSubscribedPlayerId { get; set; }
}
public class Subscription
{
[JsonPropertyOrder(1)] public int subscriptionId { get; set; }
[JsonPropertyOrder(2)] public ulong recNetPlayerId { get; set; }
[JsonPropertyOrder(3)] public int platformType { get; set; }
[JsonPropertyOrder(4)] public string platformId { get; set; }
[JsonPropertyOrder(5)] public string platformPurchaseId { get; set; }
[JsonPropertyOrder(6)] public object? @event { get; set; }
[JsonPropertyOrder(7)] public int type { get; set; }
[JsonPropertyOrder(8)] public int level { get; set; }
[JsonPropertyOrder(9)] public int period { get; set; }
[JsonPropertyOrder(10)] public DateTime expirationDate { get; set; }
[JsonPropertyOrder(11)] public bool isAutoRenewing { get; set; }
[JsonPropertyOrder(12)] public DateTime createdAt { get; set; }
[JsonPropertyOrder(13)] public DateTime modifiedAt { get; set; }
}
public enum SubscriptionLevel
{
Gold,
Platinum,
}
public enum SubscriptionPeriod
{
Month,
Year,
}
}
}
+43
View File
@@ -0,0 +1,43 @@
using System;
using LiteDB;
namespace Vanadium.Classes.DBs.DBClasses
{
public class ReportsDBClasses
{
public class BugReport
{
[BsonId]
public string ReportId { get; set; }
public long PlayerId { get; set; }
public string TriggerId { get; set; }
public int TriggerType { get; set; }
public DateTime TriggeredAt { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string TraceLogPath { get; set; }
public string GameScreenshotPath { get; set; }
public bool IsCompleted { get; set; } = false;
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
public class ReportInitializationRequest
{
public ClientInfo Client { get; set; }
public string ReportId { get; set; }
}
public class ClientInfo
{
public string TriggerId { get; set; }
public int TriggerType { get; set; }
public DateTime TriggeredAt { get; set; }
}
public class ReportUserInfoRequest
{
public string Title { get; set; }
public string Description { get; set; }
}
}
}
@@ -0,0 +1,33 @@
using LiteDB;
namespace Vanadium.Classes.DBs.DBClasses
{
public class RoomCommentsDBClasses
{
public class RoomComment
{
[BsonId]
public long commentId { get; set; }
public long subRoomId { get; set; }
public long roomId { get; set; }
public long accountId { get; set; }
public DateTime createdAt { get; set; } = DateTime.UtcNow;
public float positionX { get; set; }
public float positionY { get; set; }
public float positionZ { get; set; }
public string message { get; set; } = "";
public int style { get; set; } = 0;
public bool unread { get; set; } = true;
}
public class CreateCommentRequest
{
public string message { get; set; } = "";
public long subRoomId { get; set; }
public int style { get; set; } = 0;
public float positionX { get; set; }
public float positionY { get; set; }
public float positionZ { get; set; }
}
}
}
@@ -0,0 +1,65 @@
using LiteDB;
using System;
namespace Vanadium.Classes.DBs.DBClasses
{
public class RoomConsumablesDBClasses
{
/// <summary>
/// A creator-made consumable for sale in a room's shop.
/// The client identifies these purely by GUID, so the GUID is the primary key.
/// </summary>
public class RoomConsumable
{
[BsonId]
public Guid RoomConsumableId { get; set; } = Guid.NewGuid();
public long RoomId { get; set; }
public long CreatorPlayerId { get; set; }
public string Name { get; set; } = "";
public string? Description { get; set; }
public string? ImageName { get; set; }
public int Price { get; set; }
/// <summary>Room currency the item is priced in; null means it is priced in tokens.</summary>
public Guid? CurrencyId { get; set; }
/// <summary>Soft delete — players may still hold deleted items in inventory.</summary>
public bool IsDeleted { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public DateTime ModifiedAt { get; set; } = DateTime.UtcNow;
}
/// <summary>One player's stack of one consumable.</summary>
public class RoomConsumableOwnership
{
[BsonId]
public long Id { get; set; }
public long PlayerId { get; set; }
public Guid RoomConsumableId { get; set; }
public int Count { get; set; }
/// <summary>
/// Client-generated token guarding consume/purchase races. The client adopts the
/// NewConcurrencyCode it sent regardless of what the response echoes back, so this
/// must be stored verbatim or the next consume fails with ConcurrencyCodeMismatch.
/// </summary>
public Guid ConcurrencyCode { get; set; } = Guid.NewGuid();
public DateTime ModifiedAt { get; set; } = DateTime.UtcNow;
}
/// <summary>
/// A player's balance of one room currency. Vanadium has no room-currency registry yet
/// (see RoomConsumablesController.PurchaseCurrency), so this exists to make
/// currency-priced purchases work once one is added.
/// </summary>
public class RoomCurrencyBalance
{
[BsonId]
public long Id { get; set; }
public long PlayerId { get; set; }
public Guid CurrencyId { get; set; }
public int Balance { get; set; }
public DateTime ModifiedAt { get; set; } = DateTime.UtcNow;
}
}
}
+287
View File
@@ -0,0 +1,287 @@
using System;
using System.Collections.Generic;
using LiteDB;
namespace Vanadium.Classes.DBs.DBClasses
{
public class RoomDBClasses
{
public class Room
{
[BsonId]
public long RoomId { get; set; }
public bool IsDorm { get; set; }
public int MaxPlayerCalculationMode { get; set; }
public int MaxPlayers { get; set; }
public bool CloningAllowed { get; set; }
public bool DisableMicAutoMute { get; set; }
public bool DisableRoomComments { get; set; }
public bool EncryptVoiceChat { get; set; }
public bool ToxmodEnabled { get; set; }
public bool LoadScreenLocked { get; set; }
public int PersistenceVersion { get; set; }
public int? UgcSubVersion { get; set; }
public int? UgcVersion { get; set; }
public bool AutoLocalizeRoom { get; set; }
public bool IsDeveloperOwned { get; set; }
public bool IsRRO { get; set; }
public bool IsRecRoomApproved { get; set; }
public bool IsJuniorCreated { get; set; }
public bool IsPlacePlay { get; set; }
public bool ExcludeFromLists { get; set; }
public bool ExcludeFromSearch { get; set; }
public string Name { get; set; }
//public string? DisplayName { get; set; } // remove this already, we do NOT need this gng
public string? Description { get; set; }
public string ImageName { get; set; }
public WarningMaskType WarningMask { get; set; }
public string? CustomWarning { get; set; }
public long CreatorAccountId { get; set; }
public RoomState? State { get; set; }
public RoomAccessibility Accessibility { get; set; }
public bool SupportsLevelVoting { get; set; }
public bool SupportsScreens { get; set; }
public bool SupportsWalkVR { get; set; }
public bool SupportsTeleportVR { get; set; }
public bool SupportsVRLow { get; set; }
public bool SupportsQuest2 { get; set; }
public bool SupportsMobile { get; set; }
public bool SupportsJuniors { get; set; }
public int MinLevel { get; set; }
public int? MinUgcSubVersion { get; set; }
public int AgeRating { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime PublishedAt { get; set; }
public DateTime? BecameRRStudioRoomAt { get; set; }
public Stats Stats { get; set; } = new Stats();
public string? RankedEntityId { get; set; }
public object? RankingContext { get; set; }
public string? DataBlob { get; set; }
public string? CurrentSnapshotId { get; set; }
public bool NeedsSnapshotId { get; set; }
public bool ShouldAutoStageSaves { get; set; }
public List<SubRooms> SubRooms { get; set; } = new List<SubRooms>();
public List<Roles> Roles { get; set; } = new List<Roles>();
public List<Tags> Tags { get; set; } = new List<Tags>();
public List<string> PromoImages { get; set; } = new List<string>();
public List<PromoExternalContent> PromoExternalContent { get; set; } = new List<PromoExternalContent>();
public List<LoadScreens> LoadScreens { get; set; } = new List<LoadScreens>();
public List<string> RestrictedCircuitsAllowListNames { get; set; } = new List<string>();
public LocalizationContext? LocalizationContext { get; set; }
public RoomBanDetails? RoomBanDetails { get; set; }
public bool ExperienceEnabled { get; set; }
public int ExperienceDailyLimit { get; set; }
}
public class SubRooms
{
public long SubRoomId { get; set; }
public long RoomId { get; set; }
public string Name { get; set; }
public string? DataBlob { get; set; }
public bool IsSandbox { get; set; }
public int MaxPlayers { get; set; }
public RoomAccessibility Accessibility { get; set; }
public string UnitySceneId { get; set; }
public long SavedByAccountId { get; set; }
public bool ShouldAutoStageSaves { get; set; }
public long? StagedSubRoomDataSaveId { get; set; }
public int LastModeratedSaveModerationState { get; set; }
public long? CreatorAccountId { get; set; }
public currentSave? CurrentSave { get; set; }
public List<PermissionEntry> Permissions { get; set; } = new();
}
public class PermissionEntry
{
public string Permission { get; set; }
public Role Role { get; set; }
public int Type { get; set; }
public bool Override { get; set; }
public string Value { get; set; }
}
public class DbCounters
{
[BsonId]
public string Key { get; set; }
public long Value { get; set; }
}
public class currentSave
{
[BsonId]
public long SubRoomDataSaveId { get; set; }
public long SubRoomId { get; set; }
public long RoomId { get; set; }
public string DataBlob { get; set; }
public string DataBlobHash { get; set; }
public List<string> ReferencedUnityAssetIds { get; set; } = new();
public List<string> UnitySubAssets { get; set; } = new();
public List<string> ReferencedUnityAssets { get; set; } = new();
public string? UnityAssetId { get; set; }
public int PersistenceVersion { get; set; }
public int OMVersion { get; set; }
public int UgcSubVersion { get; set; }
public long? SavedByAccountId { get; set; }
public int? SavedOnPlatform { get; set; }
public int? SavedOnDeviceClass { get; set; }
public string? Description { get; set; }
public List<string> Tags { get; set; } = new();
public int ModerationState { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
public class Tags
{
public string Tag { get; set; } = "";
public TagType Type { get; set; }
}
public class PromoExternalContent
{
public PromoExternalContentType Type { get; set; }
public required string Reference { get; set; }
}
public class CloneRoomRequest
{
public string Name { get; set; }
}
public class LoadScreens
{
public string ImageName { get; set; }
public string Title { get; set; }
public string Subtitle { get; set; }
}
public class Stats
{
public int CheerCount { get; set; } = 0;
public int FavoriteCount { get; set; } = 0;
public int VisitorCount { get; set; } = 0;
public int VisitCount { get; set; } = 0;
}
public class Roles
{
public long AccountId { get; set; }
public Role Role { get; set; }
public Role InvitedRole { get; set; }
public long? LastChangedByAccountId { get; set; }
}
public class LocalizationContext
{
public List<string> LocalizedFields { get; set; } = new();
public string? Scope { get; set; }
public string? TargetLocale { get; set; }
}
public class RoomBanDetails
{
public long AccountId { get; set; }
public DateTime? BanEndTime { get; set; }
public DateTime BanStartTime { get; set; }
public long BannedByAccountId { get; set; }
public string? Reason { get; set; }
public int Status { get; set; }
public long? UnbannedByAccountId { get; set; }
}
public class RoomEditPermission
{
public bool CanEditRoom { get; set; }
public string Error { get; set; } = string.Empty;
}
public class SubroomSaveResults
{
public List<currentSave> Results { get; set; } = new();
public int TotalCount { get; set; }
}
public class Resultslist<T>
{
public List<T>? Results { get; set; }
public long TotalResults { get; set; }
}
public class RoomFileData
{
public string? Filename { get; set; }
public string? Hash { get; set; }
public string? OwnershipProof { get; set; }
}
public class RoomExperience
{
public bool Enabled { get; set; }
public long Experience { get; set; }
public string ConcurrencyCode { get; set; }
}
public enum Role : byte
{
None,
Banned,
Host = 10,
Moderator = 20,
CoOwner = 30,
TemporaryCoOwner,
Creator = 255
}
[Flags]
public enum WarningMaskType
{
None = 0,
Scary = 1,
Mature = 2,
FlashingLights = 4,
IntenseMotion = 8,
Violence = 16,
Custom = 32,
Reports = 64
}
public enum RoomAccessibility
{
Private,
Public,
Unlisted,
Dev_only,
Dev_Unlisted
}
public enum RoomState
{
Active,
PendingJunior = 11,
Moderation_PendingReview = 100,
Moderation_Closed,
MarkedForDelete = 1000
}
public enum TagType
{
General,
Auto,
AGOnly,
Banned
}
public enum PromoExternalContentType
{
YouTube
}
public enum JoinMode
{
PublicMatchmaking,
PublicNewInstance,
PrivateNewInstance
}
}
}
@@ -0,0 +1,44 @@
using LiteDB;
using System;
namespace Vanadium.Classes.DBs.DBClasses
{
public class RoomKeysDBClasses
{
public class RoomKey
{
[BsonId]
public long RoomKeyId { get; set; }
public long RoomId { get; set; }
public string Name { get; set; }
public string? Description { get; set; }
public string? ImageName { get; set; }
public int Price { get; set; }
public string? PurchaseCurrencyId { get; set; }
public string ReplicationId { get; set; } = Guid.NewGuid().ToString();
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
public class RoomKeyOwnership
{
[BsonId]
public long Id { get; set; }
public long PlayerId { get; set; }
public long RoomKeyId { get; set; }
public bool WasPurchased { get; set; }
public DateTime AwardedAt { get; set; } = DateTime.UtcNow;
}
public class AwardBulkRequest
{
public long PlayerId { get; set; }
public long RoomKeyId { get; set; }
}
public class RevokeRequest
{
public long PlayerId { get; set; }
public long RoomKeyId { get; set; }
}
}
}
@@ -0,0 +1,214 @@
using LiteDB;
using static Vanadium.Classes.DBs.DBClasses.PlayerDBClasses;
namespace Vanadium.Classes.DBs.DBClasses
{
public class StorefrontsDBClasses
{
public class StorefrontSaleData
{
public int DiscountPercent { get; set; }
public DateTime SaleStart { get; set; }
public DateTime SaleEnd { get; set; }
}
public class StorefrontPrice
{
public int CurrencyType { get; set; }
public int Price { get; set; }
public StorefrontSaleData? StorefrontSaleData { get; set; } = null;
public int Type { get; set; } = 0;
}
public class GiftDrop
{
public string AvatarItemDesc { get; set; } = "";
public int AvatarItemType { get; set; } = 0;
public string ConsumableItemDesc { get; set; } = "";
public int Context { get; set; } = 0;
public int Currency { get; set; } = 0;
public int CurrencyType { get; set; } = 0;
public string EquipmentModificationGuid { get; set; } = "";
public string EquipmentPrefabName { get; set; } = "";
public string FriendlyName { get; set; } = "";
public int GiftDropId { get; set; }
public bool IsQuery { get; set; } = false;
public string ItemSetFriendlyName { get; set; } = "";
public int ItemSetId { get; set; } = 0;
public int Rarity { get; set; } = 0;
public bool SubscribersOnly { get; set; } = false;
public string Tooltip { get; set; } = "";
public bool Unique { get; set; } = false;
}
public class StoreItem
{
public GiftDrop? GiftDrop { get; set; }
public bool IsFeatured { get; set; } = false;
public List<StorefrontPrice> Prices { get; set; } = new();
public int PurchasableItemId { get; set; }
public List<StorefrontPrice> SubscriberPrices { get; set; } = new();
public int Type { get; set; } = 0;
}
public class GiftDropStoreResponse
{
public DateTime NextUpdate { get; set; }
public List<StoreItem> StoreItems { get; set; } = new();
public int StorefrontType { get; set; }
public int SubscriberDiscountPercent { get; set; } = 0;
}
public class AdCarouselItem
{
[BsonId]
public int AdCarouselItemId { get; set; }
public string Description { get; set; } = "";
public string ImageName { get; set; } = "";
public int? PurchaseReminderId { get; set; } = null;
public List<int> PurchasableItemIds { get; set; } = new List<int>();
public bool ShowCustomAvatarItemSearch { get; set; } = false;
public string Title { get; set; } = "";
}
public class WishlistItem
{
[BsonId]
public string WishlistItemId { get; set; } = Guid.NewGuid().ToString();
public long AccountId { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
public int PurchasableItemId { get; set; }
}
public class BuyItemRequest
{
public string? CouponConsumablePlayerMappingId { get; set; } = null;
public int CurrencyType { get; set; }
public BuyItemGift? Gift { get; set; } = null;
public int PurchasableItemId { get; set; }
public int RequestedPrice { get; set; }
public int StorefrontType { get; set; }
}
public class BuyItemGift
{
public long RecipientPlayerId { get; set; }
public long? ToPlayerId { get; set; }
public string? Message { get; set; }
}
public class TransferableConsumable
{
[BsonId]
public long Id { get; set; }
public long PlayerId { get; set; }
public string ConsumableItemDesc { get; set; } = "";
public int ActiveDurationMinutes { get; set; } = 5;
public int Count { get; set; } = 1;
public int InitialCount { get; set; } = 0;
public bool IsActive { get; set; } = false;
public bool IsTransferable { get; set; } = true;
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
public class TransferableConsumableGroup
{
public int ActiveDurationMinutes { get; set; }
public string ConsumableItemDesc { get; set; } = "";
public int Count { get; set; }
public List<DateTime> CreatedAts { get; set; } = new();
public List<long> Ids { get; set; } = new();
public int InitialCount { get; set; } = 0;
public bool IsActive { get; set; } = false;
public bool IsTransferable { get; set; } = true;
}
public class BuyForFreeGiftButtonRequest
{
public int Count { get; set; }
public string? CouponConsumablePlayerMappingId { get; set; } = null;
public long CreatorPlayerId { get; set; }
public int PurchasableItemId { get; set; }
}
public class ConsumableItemDTO
{
public int ActiveDurationMinutes { get; set; }
public string ConsumableItemDesc { get; set; } = "";
public int Count { get; set; } = 1;
public DateTime CreatedAt { get; set; }
public long Id { get; set; }
public int InitialCount { get; set; } = 0;
public bool IsActive { get; set; } = false;
public bool IsTransferable { get; set; } = true;
}
public class ConsumableBalanceUpdate
{
public List<ConsumableItemDTO> Data { get; set; } = new();
public int UpdateResponse { get; set; } = 2;
}
public class BuyForFreeGiftButtonResponse
{
public int Balance { get; set; }
public int BalanceType { get; set; } = -2;
public List<ConsumableBalanceUpdate> BalanceUpdates { get; set; } = new();
public int CurrencyType { get; set; } = 2;
}
public class BalanceUpdate
{
public List<GiftsDBClasses.GiftDTO> Data { get; set; } = new();
public int UpdateResponse { get; set; } = 0;
}
public class BuyItemResponse
{
public int Balance { get; set; }
public int BalanceType { get; set; } = -2;
public List<BalanceUpdate> BalanceUpdates { get; set; } = new();
public int CurrencyType { get; set; }
}
public class GameRewardRequest
{
public string RewardType { get; set; } = "";
public string? Message { get; set; }
}
public class RewardSelectionRequest
{
public int RewardSelectionId { get; set; }
public int GiftDropId { get; set; }
}
public class RewardSelectionResponse
{
public string AvatarItemDesc { get; set; } = "";
public int AvatarItemType { get; set; } = 0;
public string ConsumableItemDesc { get; set; } = "";
public int Context { get; set; }
public int Currency { get; set; } = 0;
public int CurrencyType { get; set; } = 0;
public string EquipmentModificationGuid { get; set; } = "";
public string EquipmentPrefabName { get; set; } = "";
public string FriendlyName { get; set; } = "";
public int GiftDropId { get; set; }
public bool IsQuery { get; set; } = false;
public string ItemSetFriendlyName { get; set; } = "";
public int ItemSetId { get; set; } = 1;
public int Rarity { get; set; } = 0;
public bool SubscribersOnly { get; set; } = false;
public string Tooltip { get; set; } = "";
public bool Unique { get; set; } = false;
}
public class SuccessResult
{
public string error { get; set; } = "";
public bool success { get; set; } = true;
public object? value { get; set; } = null;
}
}
}