From 75ba714059e303d685210d1c5bfc83e6c4d8336b Mon Sep 17 00:00:00 2001 From: MistEO Date: Mon, 22 May 2023 21:52:19 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=89=88=E6=9C=AC=E5=8F=B7json?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B4=BB=E5=8A=A8=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/YoStarEN/resource/version.json | 4 + .../global/YoStarJP/resource/version.json | 4 + .../global/YoStarKR/resource/version.json | 4 + resource/global/txwy/resource/version.json | 4 + resource/version.json | 4 + tools/ResourceUpdater/main.cpp | 86 ++++++++++++------- 6 files changed, 77 insertions(+), 29 deletions(-) diff --git a/resource/global/YoStarEN/resource/version.json b/resource/global/YoStarEN/resource/version.json index 7ff8e154b3..eacadb8d10 100644 --- a/resource/global/YoStarEN/resource/version.json +++ b/resource/global/YoStarEN/resource/version.json @@ -1,4 +1,8 @@ { + "activity": { + "name": "Near Light - Rerun", + "time": 1681491600 + }, "gacha": { "pool": "Bearings And Sparks", "time": 1682614800 diff --git a/resource/global/YoStarJP/resource/version.json b/resource/global/YoStarJP/resource/version.json index 7e554021fd..920c95fcf0 100644 --- a/resource/global/YoStarJP/resource/version.json +++ b/resource/global/YoStarJP/resource/version.json @@ -1,4 +1,8 @@ { + "activity": { + "name": "ニアーライト·復刻", + "time": 1681455600 + }, "gacha": { "pool": "軸受×火花", "time": 1682578800 diff --git a/resource/global/YoStarKR/resource/version.json b/resource/global/YoStarKR/resource/version.json index c9b86abb59..8d17aef8c4 100644 --- a/resource/global/YoStarKR/resource/version.json +++ b/resource/global/YoStarKR/resource/version.json @@ -1,4 +1,8 @@ { + "activity": { + "name": "니어 라이트 (재개방)", + "time": 1681455600 + }, "gacha": { "pool": "베어링 앤 스파크", "time": 1682578800 diff --git a/resource/global/txwy/resource/version.json b/resource/global/txwy/resource/version.json index c84fee2c83..d63a6e2cad 100644 --- a/resource/global/txwy/resource/version.json +++ b/resource/global/txwy/resource/version.json @@ -1,4 +1,8 @@ { + "activity": { + "name": "日暮尋路", + "time": 1684216800 + }, "gacha": { "pool": "巨斧與筆尖", "time": 1687246200 diff --git a/resource/version.json b/resource/version.json index 78c55822cb..7546d7a444 100644 --- a/resource/version.json +++ b/resource/version.json @@ -1,4 +1,8 @@ { + "activity": { + "name": "尖灭测试作战", + "time": 1684742400 + }, "gacha": { "pool": "真理孑然", "time": 1682913600 diff --git a/tools/ResourceUpdater/main.cpp b/tools/ResourceUpdater/main.cpp index fedab188f4..8a2dff13fa 100644 --- a/tools/ResourceUpdater/main.cpp +++ b/tools/ResourceUpdater/main.cpp @@ -1011,36 +1011,64 @@ bool check_roguelike_replace_for_overseas(const std::filesystem::path& input_dir bool update_version_info(const std::filesystem::path& input_dir, const std::filesystem::path& output_dir) { - const auto json_path = input_dir / "gacha_table.json"; - auto gacha_json_opt = json::open(json_path); - if (!gacha_json_opt) { - std::cerr << "faild to parse " << json_path; - return false; - } - auto& gacha_json = *gacha_json_opt; - - std::unordered_map pool_count; - for (auto& gacha_info : gacha_json["gachaPoolClient"].as_array()) { - pool_count[gacha_info["gachaPoolName"].as_string()]++; - } - - uint64_t time = 0; - std::string pool; - for (auto& gacha_info : gacha_json["gachaPoolClient"].as_array()) { - const auto& pool_name = gacha_info["gachaPoolName"].as_string(); - if (pool_count[pool_name] > 5) { // 把常驻池过滤掉 - continue; - } - auto cur_time = gacha_info["openTime"].as_unsigned_long_long(); - if (time < cur_time) { - time = cur_time; - pool = pool_name; - } - } - json::value result; - result["gacha"]["time"] = time; - result["gacha"]["pool"] = pool; + { + const auto json_path = input_dir / "gacha_table.json"; + auto gacha_json_opt = json::open(json_path); + if (!gacha_json_opt) { + std::cerr << "faild to parse " << json_path; + return false; + } + auto& gacha_json = *gacha_json_opt; + + std::unordered_map pool_count; + for (auto& gacha_info : gacha_json["gachaPoolClient"].as_array()) { + pool_count[gacha_info["gachaPoolName"].as_string()]++; + } + + uint64_t time = 0; + std::string pool; + for (auto& gacha_info : gacha_json["gachaPoolClient"].as_array()) { + const auto& pool_name = gacha_info["gachaPoolName"].as_string(); + if (pool_count[pool_name] > 5) { // 把常驻池过滤掉 + continue; + } + auto cur_time = gacha_info["openTime"].as_unsigned_long_long(); + if (time < cur_time) { + time = cur_time; + pool = pool_name; + } + } + + result["gacha"]["time"] = time; + result["gacha"]["pool"] = pool; + } + { + const auto json_path = input_dir / "activity_table.json"; + auto activity_json_opt = json::open(json_path); + if (!activity_json_opt) { + std::cerr << "faild to parse " << json_path; + return false; + } + + uint64_t time = 0; + std::string name; + + auto& activity_json = *activity_json_opt; + for (const auto& [_, act] : activity_json["basicInfo"].as_object()) { + if (!act.at("displayOnHome").as_boolean()) { + continue; + } + auto cur_time = act.at("startTime").as_unsigned_long_long(); + if (time < cur_time) { + time = cur_time; + name = act.at("name").as_string(); + } + } + + result["activity"]["time"] = time; + result["activity"]["name"] = name; + } std::ofstream ofs(output_dir / "version.json", std::ios::out); ofs << result.format(true) << std::endl;