mirror of
https://github.com/aimrebirth/tools.git
synced 2026-04-14 17:33:25 +00:00
[mod] Copy db data from aim2.
This commit is contained in:
parent
e9fbb6e760
commit
8954b11c95
2 changed files with 37 additions and 14 deletions
|
|
@ -140,19 +140,13 @@ int main(int argc, char *argv[]) {
|
|||
auto db = mod.db();
|
||||
// patch note: set glider GL_S3_PS_FINDER2 model to MOD_GL_S3_PS_FINDER2 (lz)
|
||||
db[u8"Ãëàéäåðû"]["GL_S3_PS_FINDER2"]["MODEL"] = "MOD_GL_S3_PS_FINDER2";
|
||||
// patch note: change MOD_GL_S3_PS_FINDER2 model radius to MOD_GL_S3_PS_FINDER1 radius (lz)
|
||||
// TODO: copy from aim2 db
|
||||
db[u8"Ìîäåëè"]["MOD_GL_S3_PS_FINDER2"]["RADIUS"] = 4.768386f; // from aim2;
|
||||
//
|
||||
db[u8"Òåêñòóðû"]["TEX_GL_S3_PS_FINDER_2"]["TYPE"] = 0;
|
||||
db[u8"Òåêñòóðû"]["TEX_GL_S3_PS_FINDER_2"]["COLOR"] = 406137896;
|
||||
db[u8"Òåêñòóðû"]["TEX_GL_S3_PS_FINDER_2"]["FILENAME"] = "Data\\TM\\TEX_GL_S3_PS_FINDER_2.TM";
|
||||
db[u8"Òåêñòóðû"]["TEX_GL_S3_PS_FINDER_2_SPEC"]["TYPE"] = 0;
|
||||
db[u8"Òåêñòóðû"]["TEX_GL_S3_PS_FINDER_2_SPEC"]["COLOR"] = 2631463;
|
||||
db[u8"Òåêñòóðû"]["TEX_GL_S3_PS_FINDER_2_SPEC"]["FILENAME"] = "Data\\TM\\TEX_GL_S3_PS_FINDER_2_SPEC.TM";
|
||||
db[u8"Òåêñòóðû"]["TEX_GL_S3_PS_FINDER_2_SPEC_1"]["TYPE"] = 0;
|
||||
db[u8"Òåêñòóðû"]["TEX_GL_S3_PS_FINDER_2_SPEC_1"]["COLOR"] = 1842204;
|
||||
db[u8"Òåêñòóðû"]["TEX_GL_S3_PS_FINDER_2_SPEC_1"]["FILENAME"] = "Data\\TM\\TEX_GL_S3_PS_FINDER_2_SPEC_1.TM";
|
||||
// patch note - maybe copy from finder1?: change MOD_GL_S3_PS_FINDER2 model radius to MOD_GL_S3_PS_FINDER1 radius (lz)
|
||||
// patch note: copy MOD_GL_S3_PS_FINDER2 model radius from aim2 (lz)
|
||||
db.copy_from_aim2(u8"Ìîäåëè", "MOD_GL_S3_PS_FINDER2", "RADIUS");
|
||||
// patch note: copy MOD_GL_S3_PS_FINDER2 textures from aim2 (lz)
|
||||
db.copy_from_aim2(u8"Òåêñòóðû", "TEX_GL_S3_PS_FINDER_2");
|
||||
db.copy_from_aim2(u8"Òåêñòóðû", "TEX_GL_S3_PS_FINDER_2_SPEC");
|
||||
db.copy_from_aim2(u8"Òåêñòóðû", "TEX_GL_S3_PS_FINDER_2_SPEC_1");
|
||||
// patch note: double gun for config CFG_NARGOON (double electro discharge) (lz)
|
||||
auto &tblcfg = db[u8"Êîíôèãóðàöèè"];
|
||||
tblcfg["CFG_NARGOON"]["HEAVYGUN1"] = "GUN_ELECTRO_DISCHARGER";
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ struct aim_exe_v1_06_constants {
|
|||
struct mod_maker {
|
||||
struct db_wrapper {
|
||||
db2::files::db2_internal m;
|
||||
db2::files::db2_internal m2;
|
||||
path fn;
|
||||
int codepage{1251};
|
||||
bool written{};
|
||||
|
|
@ -93,6 +94,27 @@ struct mod_maker {
|
|||
auto &operator[](this auto &&d, const std::u8string &s) {
|
||||
return d.m[(const char *)s.c_str()];
|
||||
}
|
||||
void copy_from_aim2(auto &&table_name, auto &&value_name, auto &&field_name) {
|
||||
auto check_val = [](auto &&m, const std::string &key, auto &&err) {
|
||||
if (auto it = m.find(key); it == m.end()) {
|
||||
throw std::runtime_error{err};
|
||||
}
|
||||
};
|
||||
check_val(m2.m, (const char *)table_name, "aim2: no such table");
|
||||
check_val(m2[table_name], value_name, "aim2: no such value");
|
||||
check_val(m2[table_name][value_name], field_name, "aim2: no such field");
|
||||
m[table_name][value_name][field_name] = m2[table_name][value_name][field_name];
|
||||
}
|
||||
void copy_from_aim2(auto &&table_name, auto &&value_name) {
|
||||
auto check_val = [](auto &&m, const std::string &key, auto &&err) {
|
||||
if (auto it = m.find(key); it == m.end()) {
|
||||
throw std::runtime_error{err};
|
||||
}
|
||||
};
|
||||
check_val(m2.m, (const char *)table_name, "aim2: no such table");
|
||||
check_val(m2[table_name], value_name, "aim2: no such value");
|
||||
m[table_name][value_name] = m2[table_name][value_name];
|
||||
}
|
||||
};
|
||||
enum class file_type {
|
||||
unknown,
|
||||
|
|
@ -339,7 +361,11 @@ struct mod_maker {
|
|||
}
|
||||
|
||||
auto db() {
|
||||
return open_db("db", 1251); // always 1251 probably
|
||||
auto w = open_db("db", 1251); // always 1251 probably
|
||||
if (aim2_available()) {
|
||||
w.m2 = db2{aim2_game_dir / "data" / "db", 1251}.open().to_map();
|
||||
}
|
||||
return w;
|
||||
}
|
||||
auto quest(const std::string &language = {}) {
|
||||
// TODO: check if it's possible to use utf8/16 in aim game
|
||||
|
|
@ -373,6 +399,9 @@ struct mod_maker {
|
|||
}
|
||||
|
||||
private:
|
||||
bool aim2_available() const {
|
||||
return !aim2_game_dir.empty();
|
||||
}
|
||||
path make_bak_file(const path &fn) {
|
||||
auto backup = path{fn} += ".bak";
|
||||
if (!fs::exists(backup)) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue