JSON data table parsing stuff

This commit is contained in:
Kyle Belanger
2024-02-19 17:35:16 -05:00
parent 27acfdff08
commit f33a60d33c
16 changed files with 1392296 additions and 16 deletions

View File

@@ -0,0 +1,23 @@
using BLHX.Server.Common.Utils;
namespace BLHX.Server.Common.Data;
public class Config : Singleton<Config>
{
public string Address { get; set; } = "127.0.0.1";
public uint Port { get; set; } = 20000;
public static void Load()
{
Instance = JSON.Load<Config>(JSON.ConfigPath);
Logger.c.Log($"Config loaded");
}
public static void Save()
{
JSON.Save(JSON.ConfigPath, Instance);
Logger.c.Log("Config saved");
}
}

View File

@@ -0,0 +1,34 @@
using BLHX.Server.Common.Utils;
namespace BLHX.Server.Common.Data;
public static class Data
{
static readonly Logger c = new(nameof(Data), ConsoleColor.Yellow);
public static Dictionary<int, ChapterTemplate> ChapterTemplate;
public static Dictionary<int, ShipDataStatistics> ShipDataStatistics;
public static Dictionary<int, TaskDateTemplate> TaskDataTemplate;
public static void Load()
{
LoadData(ref ChapterTemplate, "chapter_template.json", nameof(ChapterTemplate));
LoadData(ref ShipDataStatistics, "ship_data_statistics.json", nameof(ShipDataStatistics));
LoadData(ref TaskDataTemplate, "task_data_template.json", nameof(TaskDataTemplate));
c.Log("All data tables loaded");
}
static void LoadData<T>(ref Dictionary<int, T> data, string fileName, string dataName)
{
try
{
data = JSON.Load<Dictionary<int, T>>(Path.Combine(JSON.ShareConfigPath, fileName));
c.Warn($"Loaded {data.Count} {dataName}");
}
catch (Exception e)
{
c.Error(e.Message);
}
}
}

View File

@@ -0,0 +1,36 @@
using System.Text.Json;
namespace BLHX.Server.Common.Data;
public static class JSON
{
public static string ConfigPath => Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json");
public static string ShareConfigPath => Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Resources\\sharecfgdata\\");
public static T Load<T>(string path, bool create = true) where T : new()
{
if (!File.Exists(path) && create)
{
T obj = new T();
Save(path, obj);
}
return JsonSerializer.Deserialize<T>(File.ReadAllText(path));
}
public static void Save<T>(string path, T obj)
{
File.WriteAllText(path, JsonSerializer.Serialize(obj, new JsonSerializerOptions()
{
WriteIndented = true
}));
}
public static string Stringify<T>(T obj)
{
return JsonSerializer.Serialize(obj, new JsonSerializerOptions()
{
WriteIndented = true
});
}
}

View File

@@ -0,0 +1,5 @@
namespace BLHX.Server.Common.Data;
public abstract class Model
{
}

View File

@@ -0,0 +1,205 @@
using System.Text.Json.Serialization;
namespace BLHX.Server.Common.Data;
public class ChapterTemplate : Model
{
[JsonPropertyName("ItemTransformPattern")]
public object ItemTransformPattern { get; set; }
[JsonPropertyName("act_id")]
public int ActId { get; set; }
[JsonPropertyName("ai_expedition_list")]
public int[] AiExpeditionList { get; set; }
[JsonPropertyName("ai_refresh")]
public int[] AiRefresh { get; set; }
[JsonPropertyName("air_dominance")]
public int AirDominance { get; set; }
[JsonPropertyName("alarm_cell")]
public object AlarmCell { get; set; }
[JsonPropertyName("ambush_event_ratio")]
public object AmbushEventRatio { get; set; }
[JsonPropertyName("ambush_expedition_list")]
public int[] AmbushExpeditionList { get; set; }
[JsonPropertyName("ambush_ratio_extra")]
public int[][] AmbushRatioExtra { get; set; }
[JsonPropertyName("ammo_submarine")]
public int AmmoSubmarine { get; set; }
[JsonPropertyName("ammo_total")]
public int AmmoTotal { get; set; }
[JsonPropertyName("avoid_ratio")]
public int AvoidRatio { get; set; }
[JsonPropertyName("avoid_require")]
public int AvoidRequire { get; set; }
[JsonPropertyName("awards")]
public int[][] Awards { get; set; }
[JsonPropertyName("best_air_dominance")]
public int BestAirDominance { get; set; }
[JsonPropertyName("bg")]
public string Background { get; set; }
[JsonPropertyName("bgm")]
public string BackgroundMusic { get; set; }
[JsonPropertyName("boss_expedition_id")]
public int[] BossExpeditionId { get; set; }
[JsonPropertyName("boss_refresh")]
public int BossRefresh { get; set; }
[JsonPropertyName("box_list")]
public object BoxList { get; set; }
[JsonPropertyName("box_refresh")]
public int[] BoxRefresh { get; set; }
[JsonPropertyName("chapter_fx")]
public object ChapterFx { get; set; }
[JsonPropertyName("chapter_name")]
public string ChapterName { get; set; }
[JsonPropertyName("chapter_strategy")]
public object ChapterStrategy { get; set; }
[JsonPropertyName("chapter_tag")]
public int ChapterTag { get; set; }
[JsonPropertyName("collection_team")]
public int CollectionTeam { get; set; }
[JsonPropertyName("count")]
public int Count { get; set; }
[JsonPropertyName("defeat_story")]
public object DefeatStory { get; set; }
[JsonPropertyName("defeat_story_count")]
public object DefeatStoryCount { get; set; }
[JsonPropertyName("difficulty")]
public int Difficulty { get; set; }
[JsonPropertyName("elite_expedition_list")]
public int[] EliteExpeditionList { get; set; }
[JsonPropertyName("elite_refresh")]
public int[] EliteRefresh { get; set; }
[JsonPropertyName("enemy_refresh")]
public int[] EnemyRefresh { get; set; }
[JsonPropertyName("enter_story")]
public string EnterStory { get; set; }
[JsonPropertyName("enter_story_limit")]
public string EnterStoryLimit { get; set; }
[JsonPropertyName("event_skip")]
public int EventSkip { get; set; }
[JsonPropertyName("expedition_id_weight_list")]
public int[][] ExpeditionIdWeightList { get; set; }
[JsonPropertyName("float_items")]
public object FloatItems { get; set; }
[JsonPropertyName("formation")]
public int Formation { get; set; }
[JsonPropertyName("friendly_id")]
public int FriendlyId { get; set; }
[JsonPropertyName("grids")]
public object[][] Grids { get; set; }
[JsonPropertyName("group_num")]
public int GroupNum { get; set; }
[JsonPropertyName("guarder_expedition_list")]
public int[] GuarderExpeditionList { get; set; }
[JsonPropertyName("icon")]
public string[] Icon { get; set; }
[JsonPropertyName("icon_outline")]
public int IconOutline { get; set; }
[JsonPropertyName("id")]
public int Id { get; set; }
[JsonPropertyName("investigation_ratio")]
public int InvestigationRatio { get; set; }
[JsonPropertyName("is_ai")]
public int IsAi { get; set; }
[JsonPropertyName("is_air_attack")]
public int IsAirAttack { get; set; }
[JsonPropertyName("is_ambush")]
public int IsAmbush { get; set; }
[JsonPropertyName("is_limit_move")]
public int IsLimitMove { get; set; }
[JsonPropertyName("land_based")]
public object LandBased { get; set; }
[JsonPropertyName("levelstage_bar")]
public string LevelStageBar { get; set; }
[JsonPropertyName("limitation")]
public object Limitation { get; set; }
[JsonPropertyName("lose_condition")]
public int[][] LoseCondition { get; set; }
[JsonPropertyName("lose_condition_display")]
public string LoseConditionDisplay { get; set; }
[JsonPropertyName("map")]
public int Map { get; set; }
[JsonPropertyName("mitigation_level")]
public int MitigationLevel { get; set; }
[JsonPropertyName("mitigation_rate")]
public int MitigationRate { get; set; }
[JsonPropertyName("model")]
public int Model { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonPropertyName("npc_data")]
public object NpcData { get; set; }
[JsonPropertyName("num_1")]
public int Num1 { get; set; }
[JsonPropertyName("num_2")]
public int Num2 { get; set; }
[JsonPropertyName("num_3")]
public int Num3 { get; set; }
[JsonPropertyName("oil")]
public int Oil { get; set; }
[JsonPropertyName("patrolai_expedition_list")]
public int[] PatrolAiExpeditionList { get; set; }
[JsonPropertyName("patrolai_refresh")]
public int[] PatrolAiRefresh { get; set; }
[JsonPropertyName("pop_pic")]
public string PopPic { get; set; }
[JsonPropertyName("pos_x")]
public string PosX { get; set; }
[JsonPropertyName("pos_y")]
public string PosY { get; set; }
[JsonPropertyName("pre_chapter")]
public int PreChapter { get; set; }
[JsonPropertyName("pre_story")]
public int PreStory { get; set; }
[JsonPropertyName("profiles")]
public string Profiles { get; set; }
[JsonPropertyName("progress_boss")]
public int ProgressBoss { get; set; }
[JsonPropertyName("property_limitation")]
public object PropertyLimitation { get; set; }
[JsonPropertyName("random_box_list")]
public int[] RandomBoxList { get; set; }
[JsonPropertyName("risk_levels")]
public int[][] RiskLevels { get; set; }
[JsonPropertyName("scale")]
public double[] Scale { get; set; }
[JsonPropertyName("special_operation_list")]
public string SpecialOperationList { get; set; }
[JsonPropertyName("star_require_1")]
public int StarRequire1 { get; set; }
[JsonPropertyName("star_require_2")]
public int StarRequire2 { get; set; }
[JsonPropertyName("star_require_3")]
public int StarRequire3 { get; set; }
[JsonPropertyName("story_refresh")]
public object StoryRefresh { get; set; }
[JsonPropertyName("story_refresh_boss")]
public string StoryRefreshBoss { get; set; }
[JsonPropertyName("submarine_expedition_list")]
public int[] SubmarineExpeditionList { get; set; }
[JsonPropertyName("submarine_num")]
public int SubmarineNum { get; set; }
[JsonPropertyName("submarine_refresh")]
public int[] SubmarineRefresh { get; set; }
[JsonPropertyName("support_group_num")]
public int SupportGroupNum { get; set; }
[JsonPropertyName("theme")]
public object Theme { get; set; }
[JsonPropertyName("time")]
public int Time { get; set; }
[JsonPropertyName("type")]
public int Type { get; set; }
[JsonPropertyName("uifx")]
public string UiFx { get; set; }
[JsonPropertyName("unlocklevel")]
public int UnlockLevel { get; set; }
[JsonPropertyName("use_oil_limit")]
public object UseOilLimit { get; set; }
[JsonPropertyName("wall_prefab")]
public object WallPrefab { get; set; }
[JsonPropertyName("weather_grids")]
public object WeatherGrids { get; set; }
[JsonPropertyName("win_condition")]
public object WinCondition { get; set; }
[JsonPropertyName("win_condition_display")]
public string WinConditionDisplay { get; set; }
}

View File

@@ -0,0 +1,85 @@
using System.Text.Json.Serialization;
namespace BLHX.Server.Common.Data;
public class ShipDataStatistics : Model
{
[JsonPropertyName("aim_offset")]
public int[] AimOffset { get; set; }
[JsonPropertyName("ammo")]
public int Ammo { get; set; }
[JsonPropertyName("armor_type")]
public int ArmorType { get; set; }
[JsonPropertyName("attack_duration")]
public int AttackDuration { get; set; }
[JsonPropertyName("attrs")]
public float[] Attrs { get; set; }
[JsonPropertyName("attrs_growth")]
public float[] AttrsGrowth { get; set; }
[JsonPropertyName("attrs_growth_extra")]
public float[] AttrsGrowthExtra { get; set; }
[JsonPropertyName("backyard_speed")]
public string BackyardSpeed { get; set; }
[JsonPropertyName("base_list")]
public int[] BaseList { get; set; }
[JsonPropertyName("cld_box")]
public int[] CldBox { get; set; }
[JsonPropertyName("cld_offset")]
public int[] CldOffset { get; set; }
[JsonPropertyName("default_equip_list")]
public int[] DefaultEquipList { get; set; }
[JsonPropertyName("depth_charge_list")]
public int[] DepthChargeList { get; set; }
[JsonPropertyName("english_name")]
public string EnglishName { get; set; }
[JsonPropertyName("equipment_proficiency")]
public float[] EquipmentProficiency { get; set; }
[JsonPropertyName("fix_equip_list")]
public int[] FixEquipList { get; set; }
[JsonPropertyName("hunting_range")]
public object HuntingRange { get; set; }
[JsonPropertyName("huntingrange_level")]
public int HuntingRangeLevel { get; set; }
[JsonPropertyName("id")]
public int Id { get; set; }
[JsonPropertyName("lock")]
public string[] Lock { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonPropertyName("nationality")]
public int Nationality { get; set; }
[JsonPropertyName("oxy_cost")]
public int OxyCost { get; set; }
[JsonPropertyName("oxy_max")]
public int OxyMax { get; set; }
[JsonPropertyName("oxy_recovery")]
public int OxyRecovery { get; set; }
[JsonPropertyName("oxy_recovery_bench")]
public int OxyRecoveryBench { get; set; }
[JsonPropertyName("oxy_recovery_surface")]
public int OxyRecoverySurface { get; set; }
[JsonPropertyName("parallel_max")]
public int[] ParallelMax { get; set; }
[JsonPropertyName("position_offset")]
public int[] PositionOffset { get; set; }
[JsonPropertyName("preload_count")]
public int[] PreloadCount { get; set; }
[JsonPropertyName("raid_distance")]
public int RaidDistance { get; set; }
[JsonPropertyName("rarity")]
public int Rarity { get; set; }
[JsonPropertyName("scale")]
public int Scale { get; set; }
[JsonPropertyName("skin_id")]
public int SkinId { get; set; }
[JsonPropertyName("star")]
public int Star { get; set; }
[JsonPropertyName("strategy_list")]
public int[][] StrategyList { get; set; }
[JsonPropertyName("summon_offset")]
public int SummonOffset { get; set; }
[JsonPropertyName("tag_list")]
public string[] TagList { get; set; }
[JsonPropertyName("type")]
public int Type { get; set; }
}

View File

@@ -0,0 +1,69 @@
using System.Text.Json.Serialization;
namespace BLHX.Server.Common.Data;
public class TaskDateTemplate : Model
{
[JsonPropertyName("activity_client_config")]
public object ActivityClientConfig { get; set; }
[JsonPropertyName("added_tip")]
public int AddedTip { get; set; }
[JsonPropertyName("auto_commit")]
public int AutoCommit { get; set; }
[JsonPropertyName("award")]
public int Award { get; set; }
[JsonPropertyName("award_choice")]
public object AwardChoice { get; set; }
[JsonPropertyName("award_display")]
public object AwardDisplay { get; set; }
[JsonPropertyName("count_inherit")]
public int CountInherit { get; set; }
[JsonPropertyName("desc")]
public string Description { get; set; }
[JsonPropertyName("fix_task")]
public int FixTask { get; set; }
[JsonPropertyName("guild_coin_award")]
public int GuildCoinAward { get; set; }
[JsonPropertyName("id")]
public int Id { get; set; }
[JsonPropertyName("is_head")]
public int IsHead { get; set; }
[JsonPropertyName("level")]
public int Level { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonPropertyName("next_task")]
public string NextTask { get; set; }
[JsonPropertyName("open_need")]
public object OpenNeed { get; set; }
[JsonPropertyName("priority_type")]
public int PriorityType { get; set; }
[JsonPropertyName("quick_finish")]
public int QuickFinish { get; set; }
[JsonPropertyName("ryza_icon")]
public string RyzaIcon { get; set; }
[JsonPropertyName("ryza_type")]
public int RyzaType { get; set; }
[JsonPropertyName("scene")]
public object Scene { get; set; }
[JsonPropertyName("story_icon")]
public string StoryIcon { get; set; }
[JsonPropertyName("story_icon_shift")]
public object StoryIconShift { get; set; }
[JsonPropertyName("story_id")]
public string StoryId { get; set; }
[JsonPropertyName("sub_type")]
public int SubType { get; set; }
[JsonPropertyName("target_id")]
public object TargetId { get; set; }
[JsonPropertyName("target_id_2")]
public object TargetId2 { get; set; }
[JsonPropertyName("target_num")]
public int TargetNum { get; set; }
[JsonPropertyName("task_fold")]
public int TaskFold { get; set; }
[JsonPropertyName("type")]
public int Type { get; set; }
[JsonPropertyName("visibility")]
public int Visibility { get; set; }
}