#include "mods/modmanager.h" #include "core/filesystem/filesystem.h" #include <fstream> const char* KB_ACT_PATH = "scripts\\kb_act.lst"; // compiles the file kb_act.lst, that defines entries for keybindings in the options menu void ModManager::BuildKBActionsList() { spdlog::info("Building kb_act.lst"); fs::create_directories(GetCompiledAssetsPath() / "scripts"); std::ofstream soCompiledKeys(GetCompiledAssetsPath() / KB_ACT_PATH, std::ios::binary); // write vanilla file's content to compiled file soCompiledKeys << R2::ReadVPKOriginalFile(KB_ACT_PATH); for (Mod& mod : m_LoadedMods) { if (!mod.m_bEnabled) continue; // write content of each modded file to compiled file std::ifstream siModKeys(mod.m_ModDirectory / "kb_act.lst"); if (siModKeys.good()) soCompiledKeys << siModKeys.rdbuf() << std::endl; siModKeys.close(); } soCompiledKeys.close(); // push to overrides ModOverrideFile overrideFile; overrideFile.m_pOwningMod = nullptr; overrideFile.m_Path = KB_ACT_PATH; if (m_ModFiles.find(KB_ACT_PATH) == m_ModFiles.end()) m_ModFiles.insert(std::make_pair(KB_ACT_PATH, overrideFile)); else m_ModFiles[KB_ACT_PATH] = overrideFile; }