using MessagePack; using SVSim.Database.Enums; namespace SVSim.EmulatedEntrypoint.Models.Dtos.Responses; [MessagePackObject] public class IndexResponse { #region Primitive Returns [Key("ts_card_rotation")] public string TsCardRotation { get; set; } = string.Empty; [Key("is_beginner_mission")] public int IsBeginnerMission { get; set; } [Key("spot_point")] public int SpotPoint { get; set; } [Key("is_available_colosseum_free_entry")] public bool IsAvailableColosseumFreeEntry { get; set; } [Key("friend_battle_invite_count")] public int FriendBattleInviteCount { get; set; } [Key("battle_recovery_status")] public int BattleRecoveryStatus { get; set; } [Key("room_recovery_status")] public int RoomRecoveryStatus { get; set; } [Key("is_battle_pass_period")] public bool IsBattlePassPeriod { get; set; } [Key("card_set_id_for_resource_dl_view")] public int CardSetIdForResourceDlView { get; set; } #endregion #region Basic User Data /// /// The user's tutorial progress state. /// [Key("user_tutorial")] public UserTutorial UserTutorial { get; set; } = new UserTutorial(); /// /// Basic information about the user. /// [Key("user_info")] public UserInfo UserInfo { get; set; } = new UserInfo(); /// /// The in-game currency information for this user. /// [Key("user_crystal_count")] public UserCurrency UserCurrency { get; set; } = new UserCurrency(); #endregion #region Inventory Data /// /// Items that the user has and how many of each. /// [Key("user_item_list")] public List UserItems { get; set; } = new List(); /// /// Decks for the rotation format. /// [Key("user_deck_rotation")] public UserFormatDeckInfo UserRotationDecks { get; set; } = new UserFormatDeckInfo(); /// /// Decks for the unlimited format. /// [Key("user_deck_unlimited")] public UserFormatDeckInfo UserUnlimitedDecks { get; set; } = new UserFormatDeckInfo(); /// /// Decks for the unlimited format. /// [Key("user_deck_my_rotation")] public UserFormatDeckInfo UserMyRotationDecks { get; set; } = new UserFormatDeckInfo(); /// /// The list of cards and how many of each this user has. /// [Key("user_card_list")] public List UserCards { get; set; } = new List(); /// /// The classes a user has and their stats. /// [Key("user_class_list")] public List UserClasses { get; set; } = new List(); /// /// Mapping of SleeveId to a object. /// [Key("user_sleeve_list")] public Dictionary Sleeves { get; set; } = new Dictionary(); /// /// The emblems available to this user. /// [Key("user_emblem_list")] public List UserEmblems { get; set; } = new List(); /// /// The degrees available to this user. /// [Key("degree_id")] public List UserDegrees { get; set; } = new List(); /// /// Leader skins available to the leader. /// [Key("user_leader_skin_list")] public Dictionary LeaderSkins { get; set; } = new Dictionary(); /// /// Backgrounds for 'My Page' the user has collected. /// [Key("user_mypage_list")] public List MyPageBackgrounds { get; set; } = new List(); #endregion #region Advanced Player Data /// /// Maps a deck format (as a string) to info about ranked for that format. /// [Key("user_rank")] public Dictionary UserRankInfo { get; set; } = new Dictionary(); /// /// The number of ranked matches for each class the user has played. /// [Key("user_rank_match_list")] public List UserRankedMatches { get; set; } = new List(); /// /// The daily login bonuses currently going on, including if the player should receive the next reward for any. /// [Key("daily_login_bonus")] public DailyLoginBonus DailyLoginBonus { get; set; } = new DailyLoginBonus(); /// /// User configuration for the arena. /// [Key("challenge_config")] public ArenaConfig ArenaConfig { get; set; } = new ArenaConfig(); #endregion #region Global Data /// /// Cards that have had their red ether values overriden. /// [Key("red_ether_overwrite_list")] public List RedEtherOverrides { get; set; } = new List(); /// /// Cards that are currently undergoing maintenance. /// [Key("maintenance_card_list")] public List MaintenanceCards { get; set; } = new List(); /// /// The arena formats currently available. /// [Key("arena_info")] public List ArenaInfos { get; set; } = new List(); /// /// Dictionary of rank id to information about that rank. /// [Key("rank_info")] public Dictionary RankInfo { get; set; } = new Dictionary(); /// /// Dictionary mapping a class level to information about that level. /// [Key("class_exp")] public Dictionary ClassExp { get; set; } = new Dictionary(); /// /// Card ids that should not show up on loading screen tips. /// [Key("loading_exclusion_card_list")] public List LoadingTipCardExclusions { get; set; } = new List(); /// /// The default settings for every user. /// [Key("default_setting")] public DefaultSettings DefaultSettings { get; set; } = new DefaultSettings(); /// /// Any cards that are restricted in unlimited, and the maximum count that can be run of the card. /// [Key("unlimited_restricted_base_card_id_list")] public Dictionary UnlimitedBanList { get; set; } = new Dictionary(); /// /// Sets currently available in rotation. /// [Key("rotation_card_set_id_list")] public List RotationSets { get; set; } = new List(); /// /// Allows cards out of your 'My Rotation' to still be used. TODO investigate /// [Key("reprinted_base_card_ids")] public Dictionary ReprintedCards { get; set; } = new Dictionary(); /// /// Something to do with destroying cards. TODO investigate /// [Key("spot_cards")] public Dictionary SpotCards { get; set; } = new Dictionary(); /// /// Info about the next set to be released? TODO investigate /// [Key("pre_release_info")] public PreReleaseInfo? PreReleaseInfo { get; set; } /// /// Information for the 'My Rotation' mode. /// [Key("my_rotation_info")] public MyRotationInfo? MyRotationInfo { get; set; } /// /// Information about some avatar mode? TODO investigate /// [Key("avatar_info")] public MyRotationInfo? AvatarRotationInfo { get; set; } /// /// List of features that are undergoing maintenance. /// [Key("feature_maintenance_list")] public List FeatureMaintenances { get; set; } = new List(); /// /// Special deals on crystal purchases. /// [Key("special_crystal_info")] public List SpecialCrystalInfos { get; set; } = new List(); /// /// Current battle pass levels and required points for each. /// [Key("battle_pass_level_info")] public Dictionary? BattlePassLevelInfo { get; set; } /// /// Battlefields that can currently be picked. /// [Key("open_battle_field_id_list")] public Dictionary OpenBattlefieldIds { get; set; } = new Dictionary(); #endregion #region Misc Data /// /// What loot box features are disabled for this user. /// [Key("loot_box_regulation")] public LootBoxRegulations LootBoxRegulations { get; set; } = new LootBoxRegulations(); /// /// Something about whether the user has an invite notification. /// [Key("gathering_info")] public GatheringInfo GatheringInfo { get; set; } = new GatheringInfo(); /// /// User configuration. /// [Key("user_config")] public UserConfig UserConfig { get; set; } = new UserConfig(); #endregion }