mirror of
https://github.com/aimrebirth/tools.git
synced 2026-04-15 01:43: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();
|
auto db = mod.db();
|
||||||
// patch note: set glider GL_S3_PS_FINDER2 model to MOD_GL_S3_PS_FINDER2 (lz)
|
// 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";
|
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)
|
// patch note - maybe copy from finder1?: change MOD_GL_S3_PS_FINDER2 model radius to MOD_GL_S3_PS_FINDER1 radius (lz)
|
||||||
// TODO: copy from aim2 db
|
// patch note: copy MOD_GL_S3_PS_FINDER2 model radius from aim2 (lz)
|
||||||
db[u8"Ìîäåëè"]["MOD_GL_S3_PS_FINDER2"]["RADIUS"] = 4.768386f; // from aim2;
|
db.copy_from_aim2(u8"Ìîäåëè", "MOD_GL_S3_PS_FINDER2", "RADIUS");
|
||||||
//
|
// patch note: copy MOD_GL_S3_PS_FINDER2 textures from aim2 (lz)
|
||||||
db[u8"Òåêñòóðû"]["TEX_GL_S3_PS_FINDER_2"]["TYPE"] = 0;
|
db.copy_from_aim2(u8"Òåêñòóðû", "TEX_GL_S3_PS_FINDER_2");
|
||||||
db[u8"Òåêñòóðû"]["TEX_GL_S3_PS_FINDER_2"]["COLOR"] = 406137896;
|
db.copy_from_aim2(u8"Òåêñòóðû", "TEX_GL_S3_PS_FINDER_2_SPEC");
|
||||||
db[u8"Òåêñòóðû"]["TEX_GL_S3_PS_FINDER_2"]["FILENAME"] = "Data\\TM\\TEX_GL_S3_PS_FINDER_2.TM";
|
db.copy_from_aim2(u8"Òåêñòóðû", "TEX_GL_S3_PS_FINDER_2_SPEC_1");
|
||||||
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: double gun for config CFG_NARGOON (double electro discharge) (lz)
|
// patch note: double gun for config CFG_NARGOON (double electro discharge) (lz)
|
||||||
auto &tblcfg = db[u8"Êîíôèãóðàöèè"];
|
auto &tblcfg = db[u8"Êîíôèãóðàöèè"];
|
||||||
tblcfg["CFG_NARGOON"]["HEAVYGUN1"] = "GUN_ELECTRO_DISCHARGER";
|
tblcfg["CFG_NARGOON"]["HEAVYGUN1"] = "GUN_ELECTRO_DISCHARGER";
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,7 @@ struct aim_exe_v1_06_constants {
|
||||||
struct mod_maker {
|
struct mod_maker {
|
||||||
struct db_wrapper {
|
struct db_wrapper {
|
||||||
db2::files::db2_internal m;
|
db2::files::db2_internal m;
|
||||||
|
db2::files::db2_internal m2;
|
||||||
path fn;
|
path fn;
|
||||||
int codepage{1251};
|
int codepage{1251};
|
||||||
bool written{};
|
bool written{};
|
||||||
|
|
@ -93,6 +94,27 @@ struct mod_maker {
|
||||||
auto &operator[](this auto &&d, const std::u8string &s) {
|
auto &operator[](this auto &&d, const std::u8string &s) {
|
||||||
return d.m[(const char *)s.c_str()];
|
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 {
|
enum class file_type {
|
||||||
unknown,
|
unknown,
|
||||||
|
|
@ -339,7 +361,11 @@ struct mod_maker {
|
||||||
}
|
}
|
||||||
|
|
||||||
auto db() {
|
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 = {}) {
|
auto quest(const std::string &language = {}) {
|
||||||
// TODO: check if it's possible to use utf8/16 in aim game
|
// TODO: check if it's possible to use utf8/16 in aim game
|
||||||
|
|
@ -373,6 +399,9 @@ struct mod_maker {
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
bool aim2_available() const {
|
||||||
|
return !aim2_game_dir.empty();
|
||||||
|
}
|
||||||
path make_bak_file(const path &fn) {
|
path make_bak_file(const path &fn) {
|
||||||
auto backup = path{fn} += ".bak";
|
auto backup = path{fn} += ".bak";
|
||||||
if (!fs::exists(backup)) {
|
if (!fs::exists(backup)) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue