using System.Collections.Concurrent; using EggLink.DanhengServer.Data.Config.AdventureAbility; using EggLink.DanhengServer.Data.Config.Scene; using EggLink.DanhengServer.Data.Custom; using EggLink.DanhengServer.Data.Excel; using EggLink.DanhengServer.Enums.Rogue; using EggLink.DanhengServer.Enums.TournRogue; using EggLink.DanhengServer.Util; using Newtonsoft.Json; namespace EggLink.DanhengServer.Data; public static class GameData { #region Activity public static ActivityConfig ActivityConfig { get; set; } = new(); #endregion #region Banners public static BannersConfig BannersConfig { get; set; } = new(); #endregion #region VideoKeys public static VideoKeysConfig VideoKeysConfig { get; set; } = new(); #endregion #region Pam public static Dictionary PamSkinConfigData { get; private set; } = []; #endregion #region Avatar public static Dictionary AvatarConfigData { get; private set; } = []; public static Dictionary AvatarPromotionConfigData { get; private set; } = []; public static Dictionary AvatarExpItemConfigData { get; private set; } = []; public static Dictionary AvatarSkillTreeConfigData { get; private set; } = []; public static Dictionary AvatarSkinData { get; private set; } = []; public static Dictionary AvatarDemoConfigData { get; private set; } = []; public static Dictionary ExpTypeData { get; private set; } = []; public static Dictionary MultiplePathAvatarConfigData { get; private set; } = []; public static Dictionary AdventurePlayerData { get; private set; } = []; public static Dictionary SummonUnitDataData { get; private set; } = []; #endregion #region Challenge public static Dictionary ChallengeConfigData { get; private set; } = []; public static Dictionary ChallengeTargetData { get; private set; } = []; public static Dictionary ChallengeGroupData { get; private set; } = []; public static Dictionary> ChallengeRewardData { get; private set; } = []; #endregion #region Battle public static Dictionary CocoonConfigData { get; private set; } = []; public static Dictionary StageConfigData { get; private set; } = []; public static Dictionary RaidConfigData { get; private set; } = []; public static Dictionary MazeBuffData { get; private set; } = []; public static Dictionary InteractConfigData { get; private set; } = []; public static Dictionary NpcMonsterDataData { get; private set; } = []; public static Dictionary MonsterConfigData { get; private set; } = []; public static Dictionary MonsterDropData { get; private set; } = []; public static Dictionary BattleCollegeConfigData { get; private set; } = []; #endregion #region ChessRogue public static Dictionary ActionPointOverdrawData { get; private set; } = []; public static Dictionary> ChessRogueRoomData { get; private set; } = []; public static Dictionary ChessRogueDiceSurfaceEffectData { get; set; } = []; public static Dictionary RogueDLCAreaData { get; private set; } = []; public static Dictionary RogueDLCBossDecayData { get; private set; } = []; public static Dictionary RogueDLCBossBpData { get; private set; } = []; public static Dictionary RogueDLCDifficultyData { get; private set; } = []; public static Dictionary RogueNousAeonData { get; private set; } = []; public static Dictionary RogueNousDiceBranchData { get; private set; } = []; public static Dictionary RogueNousDiceSurfaceData { get; private set; } = []; public static Dictionary RogueNousDifficultyLevelData { get; private set; } = []; public static Dictionary RogueNousMainStoryData { get; private set; } = []; public static Dictionary RogueNousSubStoryData { get; private set; } = []; public static Dictionary RogueNousTalentData { get; private set; } = []; public static Dictionary> RogueSwarmChessBoardData { get; private set; } = []; public static Dictionary> RogueNousChessBoardData { get; private set; } = []; #endregion #region Player public static Dictionary QuestDataData { get; private set; } = []; public static Dictionary FinishWayData { get; private set; } = []; public static Dictionary PlayerLevelConfigData { get; private set; } = []; public static Dictionary BackGroundMusicData { get; private set; } = []; public static Dictionary ChatBubbleConfigData { get; private set; } = []; #endregion #region Offering public static Dictionary OfferingTypeConfigData { get; private set; } = []; public static Dictionary> OfferingLevelConfigData { get; private set; } = []; #endregion #region Maze [JsonConverter(typeof(ConcurrentDictionaryConverter))] public static ConcurrentDictionary FloorInfoData { get; private set; } = []; public static Dictionary NpcDataData { get; private set; } = []; public static Dictionary MapEntranceData { get; private set; } = []; public static Dictionary MazePlaneData { get; private set; } = []; public static Dictionary MazeChestData { get; private set; } = []; public static Dictionary MazePropData { get; private set; } = []; public static Dictionary PlaneEventData { get; private set; } = []; public static Dictionary ContentPackageConfigData { get; private set; } = []; public static Dictionary GroupSystemUnlockDataData { get; private set; } = []; public static Dictionary FuncUnlockDataData { get; private set; } = []; public static Dictionary MusicRhythmLevelData { get; private set; } = []; public static Dictionary MusicRhythmGroupData { get; private set; } = []; public static Dictionary MusicRhythmPhaseData { get; private set; } = []; public static Dictionary MusicRhythmSongData { get; private set; } = []; public static Dictionary MusicRhythmSoundEffectData { get; private set; } = []; public static Dictionary MusicRhythmTrackData { get; private set; } = []; public static Dictionary AdventureModifierData { get; set; } = []; #endregion #region TrainParty public static Dictionary TrainPartyPassengerConfigData { get; private set; } = []; public static Dictionary TrainPartyAreaConfigData { get; private set; } = []; public static Dictionary TrainPartyAreaGoalConfigData { get; private set; } = []; public static Dictionary TrainPartyStepConfigData { get; private set; } = []; public static Dictionary TrainPartyDynamicConfigData { get; private set; } = []; #endregion #region Items public static Dictionary MappingInfoData { get; private set; } = []; public static Dictionary ItemConfigData { get; private set; } = []; public static Dictionary ItemUseBuffDataData { get; private set; } = []; public static Dictionary EquipmentConfigData { get; private set; } = []; public static Dictionary EquipmentExpTypeData { get; private set; } = []; public static Dictionary EquipmentExpItemConfigData { get; private set; } = []; public static Dictionary EquipmentPromotionConfigData { get; private set; } = []; public static Dictionary> RelicMainAffixData { get; private set; } = []; // groupId, affixId public static Dictionary> RelicSubAffixData { get; private set; } = []; // groupId, affixId public static Dictionary RelicConfigData { get; private set; } = []; public static Dictionary RelicExpItemData { get; private set; } = []; public static Dictionary RelicExpTypeData { get; private set; } = []; public static Dictionary PetData { get; private set; } = []; #endregion #region Special Avatar public static Dictionary SpecialAvatarData { get; private set; } = []; public static Dictionary SpecialAvatarRelicData { get; private set; } = []; #endregion #region Mission public static Dictionary MainMissionData { get; private set; } = []; public static Dictionary SubMissionData { get; private set; } = []; public static Dictionary RewardDataData { get; private set; } = []; public static Dictionary MessageGroupConfigData { get; private set; } = []; public static Dictionary MessageSectionConfigData { get; private set; } = []; public static Dictionary MessageContactsConfigData { get; private set; } = []; public static Dictionary MessageItemConfigData { get; private set; } = []; public static Dictionary PerformanceDData { get; private set; } = []; public static Dictionary PerformanceEData { get; private set; } = []; public static Dictionary StoryLineData { get; private set; } = []; public static Dictionary> StoryLineFloorDataData { get; private set; } = []; public static Dictionary StroyLineTrialAvatarDataData { get; private set; } = []; public static Dictionary HeartDialScriptData { get; private set; } = []; public static Dictionary HeartDialDialogueData { get; private set; } = []; #endregion #region Item Exchange public static Dictionary ShopConfigData { get; private set; } = []; public static Dictionary RollShopConfigData { get; private set; } = []; public static Dictionary RollShopRewardData { get; private set; } = []; public static Dictionary ItemComposeConfigData { get; private set; } = []; #endregion #region Rogue public static Dictionary DialogueEventData { get; private set; } = []; public static Dictionary> DialogueDynamicContentData { get; private set; } = []; public static Dictionary RogueAeonData { get; private set; } = []; public static Dictionary RogueAeonBuffData { get; private set; } = []; public static Dictionary RogueBattleEventData { get; private set; } = []; public static Dictionary> RogueAeonEnhanceData { get; private set; } = []; public static Dictionary RogueAreaConfigData { get; private set; } = []; public static Dictionary RogueBonusData { get; private set; } = []; public static Dictionary RogueBuffData { get; private set; } = []; public static Dictionary RogueBuffGroupData { get; private set; } = []; public static Dictionary RogueHandBookEventData { get; private set; } = []; public static Dictionary RogueHandbookMiracleData { get; private set; } = []; public static Dictionary RogueManagerData { get; private set; } = []; public static Dictionary> RogueMapData { get; private set; } = []; public static Dictionary> RogueMapGenData { get; set; } = []; public static Dictionary RogueMazeBuffData { get; private set; } = []; public static Dictionary RogueMiracleData { get; private set; } = []; public static RogueMiracleEffectConfig RogueMiracleEffectData { get; set; } = new(); public static Dictionary> RogueMiracleGroupData { get; set; } = []; public static Dictionary RogueMiracleDisplayData { get; private set; } = []; public static Dictionary RogueMonsterData { get; private set; } = []; public static Dictionary RogueMonsterGroupData { get; private set; } = []; public static Dictionary RogueNPCData { get; private set; } = []; public static Dictionary RogueRoomData { get; private set; } = []; public static Dictionary RogueTalentData { get; private set; } = []; public static Dictionary RogueTurntableData { get; private set; } = []; public static Dictionary RogueWolfGunMiracleTargetData { get; private set; } = []; #endregion #region TournRogue public static Dictionary RogueTournAreaData { get; private set; } = []; public static Dictionary RogueTournWorkbenchData { get; private set; } = []; public static Dictionary RogueTournWorkbenchFuncData { get; private set; } = []; public static Dictionary RogueTournFormulaData { get; private set; } = []; public static Dictionary RogueTournTitanTalentData { get; private set; } = []; public static Dictionary RogueTournTitanTypeData { get; private set; } = []; public static Dictionary RogueTournTitanBlessData { get; private set; } = []; public static Dictionary RogueTournHexAvatarBaseTypeData { get; private set; } = []; public static Dictionary RogueTournHandBookEventData { get; private set; } = []; public static Dictionary RogueTournHandbookMiracleData { get; private set; } = []; public static Dictionary RogueTournRoomData { get; private set; } = []; public static Dictionary RogueTournDifficultyData { get; private set; } = []; public static Dictionary RogueTournPermanentTalentData { get; private set; } = []; public static List RogueTournRoomGenData { get; set; } = []; #endregion #region RogueMagic public static Dictionary RogueMagicAreaData { get; private set; } = []; public static Dictionary RogueMagicAdventureRoomData { get; private set; } = []; public static Dictionary RogueMagicDifficultyCompData { get; private set; } = []; public static Dictionary RogueMagicStoryData { get; private set; } = []; public static Dictionary RogueMagicScepterData { get; private set; } = []; public static Dictionary RogueMagicRoomData { get; private set; } = []; public static Dictionary RogueMagicUnitData { get; private set; } = []; public static Dictionary RogueMagicTalentData { get; private set; } = []; public static List RogueMagicRoomGenData { get; set; } = []; public static Dictionary RogueMagicLayerIdRoomCountDict { get; set; } = []; #endregion #region MatchThree public static Dictionary MatchThreeLevelData { get; private set; } = []; public static Dictionary MatchThreeBirdData { get; private set; } = []; #endregion #region Tutorial public static Dictionary TutorialDataData { get; private set; } = []; public static Dictionary TutorialGuideDataData { get; private set; } = []; #endregion #region Actions public static void GetFloorInfo(int planeId, int floorId, out FloorInfo outer) { FloorInfoData.TryGetValue("P" + planeId + "_F" + floorId, out outer!); } public static int GetPlayerExpRequired(int level) { var excel = PlayerLevelConfigData[level]; var prevExcel = PlayerLevelConfigData[level - 1]; return excel != null && prevExcel != null ? excel.PlayerExp - prevExcel.PlayerExp : 0; } public static int GetAvatarExpRequired(int group, int level) { ExpTypeData.TryGetValue(group * 100 + level, out var expType); return expType?.Exp ?? 0; } public static int GetEquipmentExpRequired(int group, int level) { EquipmentExpTypeData.TryGetValue(group * 100 + level, out var expType); return expType?.Exp ?? 0; } public static int GetMinPromotionForLevel(int level) { return Math.Max(Math.Min((int)((level - 11) / 10D), 6), 0); } #endregion }