From d0cd30f65eff33c83b0486041dda716481d02c30 Mon Sep 17 00:00:00 2001 From: David <56174894+Constrat@users.noreply.github.com> Date: Sat, 11 Nov 2023 15:01:20 +0100 Subject: [PATCH] fix: TXWY resource updater FINAL fix ref: #7259 Huge thanks to @Tsuk1ko and @AnnAngela for their invaluable help --- .github/workflows/res-update-game.yml | 35 ++++++++++++++-- tools/ResourceUpdater/main.cpp | 60 ++++----------------------- 2 files changed, 41 insertions(+), 54 deletions(-) diff --git a/.github/workflows/res-update-game.yml b/.github/workflows/res-update-game.yml index 84ba1b1039..4c2fdcff5a 100644 --- a/.github/workflows/res-update-game.yml +++ b/.github/workflows/res-update-game.yml @@ -32,11 +32,40 @@ jobs: - name: Build Resource Updater run: | MSBUILD tools/ResourceUpdater/ResourceUpdater.vcxproj /t:rebuild /p:Configuration="Release" /p:Platform="x64" /p:BuildProjectReferences=false /m + - name: Clone ArknightsGameResource for Official + uses: actions/checkout@v4 + with: + show-progress: false + repository: yuanyan3060/ArknightsGameResource + ref: main + path: .\tools\ResourceUpdater\x64\Release\Official + sparse-checkout: | + levels.json + item + building_skill + gamedata/excel + - name: Clone ArknightsGameResource_Yostar for Overseas + uses: actions/checkout@v4 + with: + show-progress: false + repository: Kengxxiao/ArknightsGameData_YoStar + ref: main + path: .\tools\ResourceUpdater\x64\Release\Overseas + sparse-checkout: | + en_US/gamedata/excel + ja_JP/gamedata/excel + ko_kr/gamedata/excel + - name: Clone arknights-toolbox-update for Taiwan + uses: actions/checkout@v4 + with: + show-progress: false + repository: arkntools/arknights-toolbox-update + ref: data-tw + path: .\tools\ResourceUpdater\x64\Release\Overseas\zh_TW\gamedata\excel + token: ${{ secrets.ARKNTOOLS_MAA_RESOURCE_UPDATER}} - name: Run Resource Updater - env: - ARKNTOOLS_MAA_RESOURCE_UPDATER_TOKEN: ${{ secrets.ARKNTOOLS_MAA_RESOURCE_UPDATER }} run: | - .\tools\ResourceUpdater\x64\Release\ResourceUpdater.exe "$env:ARKNTOOLS_MAA_RESOURCE_UPDATER_TOKEN" + .\tools\ResourceUpdater\x64\Release\ResourceUpdater.exe - name: Overseas Tasks Ordering run: | python3 tools/TaskSorter/TaskSorter.py diff --git a/tools/ResourceUpdater/main.cpp b/tools/ResourceUpdater/main.cpp index fa374ff7e2..8f4f916a53 100644 --- a/tools/ResourceUpdater/main.cpp +++ b/tools/ResourceUpdater/main.cpp @@ -45,8 +45,6 @@ static inline void trim(std::string& s) rtrim(s); } -bool clone_update_repo(const std::filesystem::path& repo_dir, const std::string& repo_url, - const std::string& branch = ""); bool update_items_data(const std::filesystem::path& input_dir, const std::filesystem::path& output_dir, bool with_imgs = true); bool cvt_single_item_template(const std::filesystem::path& input, const std::filesystem::path& output); @@ -73,9 +71,6 @@ int main([[maybe_unused]] int argc, char** argv) const char* str_exec_path = argv[0]; const auto cur_path = std::filesystem::path(str_exec_path).parent_path(); - - std::string arkntool_token = argv[1]; - std::cout << "\n\n" << arkntool_token << "\n\n"; auto solution_dir = cur_path; for (int i = 0; i != 10; ++i) { @@ -87,36 +82,19 @@ int main([[maybe_unused]] int argc, char** argv) std::cout << "Temp dir: " << cur_path.string() << std::endl; std::cout << "Working dir: " << solution_dir.string() << std::endl; - const auto official_data_dir = cur_path / "ArknightsGameResource"; - const auto overseas_data_dir = cur_path / "ArknightsGameData_YoStar"; + const auto official_data_dir = cur_path / "Official"; + const auto overseas_data_dir = cur_path / "Overseas"; const auto resource_dir = solution_dir / "resource"; std::unordered_map global_dirs = { { "en_US", "YoStarEN" }, { "ja_JP", "YoStarJP" }, { "ko_KR", "YoStarKR" }, - //{ "zh_TW", "txwy" }, + { "zh_TW", "txwy" }, }; /* ---- METHODS CALLS ---- */ - std::cout << "------- Clone ArknightsGameResource for Official -------" << std::endl; - if (!clone_update_repo(official_data_dir, "https://github.com/yuanyan3060/ArknightsGameResource.git")) { - return -1; - } - - std::cout << "------- Clone ArknightsGameData_Yostar for Overseas -------" << std::endl; - if (!clone_update_repo(overseas_data_dir, "https://github.com/Kengxxiao/ArknightsGameData_YoStar.git")) { - return -1; - } - - std::cout << "------- Clone arknights-toolbox-update for Taiwan -------" << std::endl; - if (!clone_update_repo(overseas_data_dir / "zh_TW" / "gamedata" / "excel", - "https://" + arkntool_token + "@github.com/arkntools/arknights-toolbox-update.git", - "data-tw")) { - return -1; - } - /* Update levels.json from ArknightsGameResource */ std::cout << "------- Update levels.json for Official -------" << std::endl; if (!update_levels_json(official_data_dir / "levels.json", resource_dir / "Arknights-Tile-Pos")) { @@ -271,23 +249,6 @@ int main([[maybe_unused]] int argc, char** argv) /* ---- METHODS DEFINITIONS ---- */ -bool clone_update_repo(const std::filesystem::path& repo_dir, const std::string& repo_url, const std::string& branch) -{ - std::string git_cmd; - if (!std::filesystem::exists(repo_dir)) { - git_cmd = "git clone " + (branch.empty() ? "" : "-b " + branch + " ") + "--depth=1 \"" + repo_url + "\" \"" + - repo_dir.string() + "\""; - } - else { - git_cmd = "git -C \"" + repo_dir.string() + "\" pull --autostash"; - } - if (system(git_cmd.c_str()) != 0) { - std::cerr << "git cmd failed" << std::endl; - return false; - } - return true; -} - bool update_items_data(const std::filesystem::path& input_dir, const std::filesystem::path& output_dir, bool with_imgs) { const auto input_json_path = @@ -827,19 +788,19 @@ bool generate_english_roguelike_stage_name_replacement(const std::filesystem::pa return true; } -bool update_battle_chars_info(const std::filesystem::path& input_dir, const std::filesystem::path& overseas_dir, +bool update_battle_chars_info(const std::filesystem::path& official_dir, const std::filesystem::path& overseas_dir, const std::filesystem::path& output_dir) { std::string to_char_json = "gamedata/excel/character_table.json"; - auto range_opt = json::open(input_dir / "range_table.json"); - auto chars_cn_opt = json::open(input_dir / "character_table.json"); + auto range_opt = json::open(official_dir / "range_table.json"); + auto chars_cn_opt = json::open(official_dir / "character_table.json"); auto chars_en_opt = json::open(overseas_dir / "en_US" / to_char_json); auto chars_jp_opt = json::open(overseas_dir / "ja_JP" / to_char_json); auto chars_kr_opt = json::open(overseas_dir / "ko_KR" / to_char_json); - //auto chars_tw_opt = json::open(overseas_dir / "zh_TW" / to_char_json); + auto chars_tw_opt = json::open(overseas_dir / "zh_TW" / to_char_json); - if (!chars_cn_opt || !chars_en_opt || !chars_jp_opt || !chars_kr_opt || /*!chars_tw_opt ||*/ !range_opt) { + if (!chars_cn_opt || !chars_en_opt || !chars_jp_opt || !chars_kr_opt || !chars_tw_opt || !range_opt) { return false; } @@ -849,7 +810,7 @@ bool update_battle_chars_info(const std::filesystem::path& input_dir, const std: { chars_en_opt.value(), "name_en" }, { chars_jp_opt.value(), "name_jp" }, { chars_kr_opt.value(), "name_kr" }, - { /*chars_tw_opt.value(), "name_tw"*/ } }; + { chars_tw_opt.value(), "name_tw" } }; json::value result; auto& range = result["ranges"].as_object(); @@ -876,9 +837,6 @@ bool update_battle_chars_info(const std::filesystem::path& input_dir, const std: for (auto& [data, name] : chars_json) { char_new_data[name] = data.get(id, "name", char_data["name"].as_string()); } - //TEMP FIX - char_new_data["name_tw"] = char_data["name"]; - char_new_data["profession"] = char_data["profession"]; const std::string& default_range = char_data.get("phases", 0, "rangeId", "0-1");