mirror of
https://github.com/aimrebirth/tools.git
synced 2026-04-14 17:33:25 +00:00
More correct to rename 'mechmind' to mech groups.
This commit is contained in:
parent
35df7855c0
commit
063329f66a
1 changed files with 25 additions and 30 deletions
|
|
@ -607,8 +607,8 @@ struct mod_maker {
|
||||||
m.load();
|
m.load();
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
void hide_mechmind_group(path mmo_fn, const std::string &name) {
|
void hide_mech_group(path mmo_fn, const std::string &name) {
|
||||||
log("hiding mechmind group {} in loc {}", name, mmo_fn.string());
|
log("hiding mech group {} in loc {}", name, mmo_fn.string());
|
||||||
|
|
||||||
auto fn = find_real_filename(mmo_fn);
|
auto fn = find_real_filename(mmo_fn);
|
||||||
files_to_pak.insert(fn);
|
files_to_pak.insert(fn);
|
||||||
|
|
@ -618,15 +618,15 @@ struct mod_maker {
|
||||||
|
|
||||||
auto it = m.mechs.find(name);
|
auto it = m.mechs.find(name);
|
||||||
if (it == m.mechs.end()) {
|
if (it == m.mechs.end()) {
|
||||||
throw std::runtime_error{"no such mechmind or group: " + name};
|
throw std::runtime_error{"no such mechanoid or group: " + name};
|
||||||
}
|
}
|
||||||
primitives::templates2::mmap_file<uint8_t> f{fn, primitives::templates2::mmap_file<uint8_t>::rw{}};
|
primitives::templates2::mmap_file<uint8_t> f{fn, primitives::templates2::mmap_file<uint8_t>::rw{}};
|
||||||
auto n = *(uint32_t*)(f.p + it->second.n_mechs_offset);
|
auto n = *(uint32_t*)(f.p + it->second.n_mechs_offset);
|
||||||
auto &hidden = *(uint8_t*)(f.p + it->second.mechs_offset + n * 0x20);
|
auto &hidden = *(uint8_t*)(f.p + it->second.mechs_offset + n * 0x20);
|
||||||
hidden = 1;
|
hidden = 1;
|
||||||
}
|
}
|
||||||
void delete_mechmind_group(path mmo_fn, const std::string &name) {
|
void delete_mech_group(path mmo_fn, const std::string &name) {
|
||||||
log("deleting mechmind group {} in loc {}", name, mmo_fn.string());
|
log("deleting mech group {} in loc {}", name, mmo_fn.string());
|
||||||
|
|
||||||
auto fn = find_real_filename(mmo_fn);
|
auto fn = find_real_filename(mmo_fn);
|
||||||
files_to_pak.insert(fn);
|
files_to_pak.insert(fn);
|
||||||
|
|
@ -636,7 +636,7 @@ struct mod_maker {
|
||||||
|
|
||||||
auto it = m.mechs.find(name);
|
auto it = m.mechs.find(name);
|
||||||
if (it == m.mechs.end()) {
|
if (it == m.mechs.end()) {
|
||||||
throw std::runtime_error{"no such mechmind or group: " + name};
|
throw std::runtime_error{"no such mechanoid or group: " + name};
|
||||||
}
|
}
|
||||||
primitives::templates2::mmap_file<uint8_t> f{fn, primitives::templates2::mmap_file<uint8_t>::rw{}};
|
primitives::templates2::mmap_file<uint8_t> f{fn, primitives::templates2::mmap_file<uint8_t>::rw{}};
|
||||||
auto &n = *(uint32_t*)(f.p + m.n_mech_groups_offset);
|
auto &n = *(uint32_t*)(f.p + m.n_mech_groups_offset);
|
||||||
|
|
@ -644,8 +644,8 @@ struct mod_maker {
|
||||||
f.close();
|
f.close();
|
||||||
bin_patcher::erase(fn, it->second.offset, it->second.size);
|
bin_patcher::erase(fn, it->second.offset, it->second.size);
|
||||||
}
|
}
|
||||||
void clone_mechmind_group(path mmo_fn, const std::string &name, const std::string &newname) {
|
void clone_mech_group(path mmo_fn, const std::string &name, const std::string &newname) {
|
||||||
log("cloninig mechmind group {} in loc {}, new name {}", name, mmo_fn.string(), newname);
|
log("cloninig mech group {} in loc {}, new name {}", name, mmo_fn.string(), newname);
|
||||||
|
|
||||||
auto fn = find_real_filename(mmo_fn);
|
auto fn = find_real_filename(mmo_fn);
|
||||||
files_to_pak.insert(fn);
|
files_to_pak.insert(fn);
|
||||||
|
|
@ -655,7 +655,7 @@ struct mod_maker {
|
||||||
|
|
||||||
auto it = m.mechs.find(name);
|
auto it = m.mechs.find(name);
|
||||||
if (it == m.mechs.end()) {
|
if (it == m.mechs.end()) {
|
||||||
throw std::runtime_error{"no such mechmind or group: " + name};
|
throw std::runtime_error{"no such mechanoid or group: " + name};
|
||||||
}
|
}
|
||||||
if (newname.size() > 0x20-1) {
|
if (newname.size() > 0x20-1) {
|
||||||
throw std::runtime_error{"too long name: " + newname};
|
throw std::runtime_error{"too long name: " + newname};
|
||||||
|
|
@ -668,12 +668,8 @@ struct mod_maker {
|
||||||
f.close();
|
f.close();
|
||||||
bin_patcher::insert(fn, m.mech_groups_offset, data);
|
bin_patcher::insert(fn, m.mech_groups_offset, data);
|
||||||
}
|
}
|
||||||
bool set_mechmind_organization(path mmo_fn, const std::string &name, const std::string &orgname) {
|
bool set_mech_group_organization(path mmo_fn, const std::string &name, const std::string &orgname) {
|
||||||
// deprecated, for api stability
|
log("setting mech group {} organization {} in loc {}", name, orgname, mmo_fn.string());
|
||||||
return set_mechmind_group_organization(mmo_fn, name, orgname);
|
|
||||||
}
|
|
||||||
bool set_mechmind_group_organization(path mmo_fn, const std::string &name, const std::string &orgname) {
|
|
||||||
log("setting mechmind group {} organization {} in loc {}", name, orgname, mmo_fn.string());
|
|
||||||
|
|
||||||
auto fn = find_real_filename(mmo_fn);
|
auto fn = find_real_filename(mmo_fn);
|
||||||
files_to_pak.insert(fn);
|
files_to_pak.insert(fn);
|
||||||
|
|
@ -683,7 +679,7 @@ struct mod_maker {
|
||||||
|
|
||||||
auto it = m.mechs.find(name);
|
auto it = m.mechs.find(name);
|
||||||
if (it == m.mechs.end()) {
|
if (it == m.mechs.end()) {
|
||||||
throw std::runtime_error{"no such mechmind or group: " + name};
|
throw std::runtime_error{"no such mechanoid or group: " + name};
|
||||||
}
|
}
|
||||||
if (orgname.size() > 0x20-1) {
|
if (orgname.size() > 0x20-1) {
|
||||||
throw std::runtime_error{"too long organization name: " + orgname};
|
throw std::runtime_error{"too long organization name: " + orgname};
|
||||||
|
|
@ -692,8 +688,8 @@ struct mod_maker {
|
||||||
memcpy(f.p + it->second.name_offset + 0x20, orgname.data(), orgname.size() + 1);
|
memcpy(f.p + it->second.name_offset + 0x20, orgname.data(), orgname.size() + 1);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
void set_mechmind_group_type(path mmo_fn, const std::string &name, int newtype, int new_road_id = 100) {
|
void set_mech_group_type(path mmo_fn, const std::string &name, int newtype, int new_road_id = 100) {
|
||||||
log("setting mechmind group {} in loc {} to {}", name, mmo_fn.string(), newtype);
|
log("setting mech group {} in loc {} to {}", name, mmo_fn.string(), newtype);
|
||||||
|
|
||||||
auto fn = find_real_filename(mmo_fn);
|
auto fn = find_real_filename(mmo_fn);
|
||||||
files_to_pak.insert(fn);
|
files_to_pak.insert(fn);
|
||||||
|
|
@ -703,20 +699,19 @@ struct mod_maker {
|
||||||
|
|
||||||
auto it = m.mechs.find(name);
|
auto it = m.mechs.find(name);
|
||||||
if (it == m.mechs.end()) {
|
if (it == m.mechs.end()) {
|
||||||
throw std::runtime_error{"no such mechmind or group: " + name};
|
throw std::runtime_error{"no such mechanoid or group: " + name};
|
||||||
}
|
}
|
||||||
primitives::templates2::mmap_file<uint8_t> f{fn, primitives::templates2::mmap_file<uint8_t>::rw{}};
|
primitives::templates2::mmap_file<uint8_t> f{fn, primitives::templates2::mmap_file<uint8_t>::rw{}};
|
||||||
auto &type = *(uint32_t*)(f.p + it->second.offset + 0x20 + 0x20);
|
auto &mg = *(mmo_storage2::mech_group*)(f.p + it->second.offset);
|
||||||
type = newtype;
|
mg.type = newtype;
|
||||||
auto &road_id = *(uint32_t*)(f.p + it->second.post_comment_offset);
|
mg.value1 = new_road_id;
|
||||||
road_id = new_road_id;
|
|
||||||
if (newtype == 1) {
|
if (newtype == 1) {
|
||||||
auto &unk = *(float*)(f.p + it->second.post_comment_offset + 4);
|
auto &unk = *(float*)(f.p + it->second.post_base_offset);
|
||||||
unk = 0;
|
unk = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bool rename_mechmind_group(path mmo_fn, const std::string &name, const std::string &newname) {
|
bool rename_mech_group(path mmo_fn, const std::string &name, const std::string &newname) {
|
||||||
log("renaming mechmind group {} in loc {} to {}", name, mmo_fn.string(), newname);
|
log("renaming mech group {} in loc {} to {}", name, mmo_fn.string(), newname);
|
||||||
|
|
||||||
auto fn = find_real_filename(mmo_fn);
|
auto fn = find_real_filename(mmo_fn);
|
||||||
files_to_pak.insert(fn);
|
files_to_pak.insert(fn);
|
||||||
|
|
@ -735,14 +730,14 @@ struct mod_maker {
|
||||||
memcpy(f.p + it->second.name_offset, newname.data(), newname.size() + 1);
|
memcpy(f.p + it->second.name_offset, newname.data(), newname.size() + 1);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
void update_mechmind_group_configurations(path mmo_fn, const std::string &name, auto &&cfg, auto &&...cfgs) {
|
void update_mech_group_configurations(path mmo_fn, const std::string &name, auto &&cfg, auto &&...cfgs) {
|
||||||
std::string format;
|
std::string format;
|
||||||
auto addname = [&](const std::string &cfg) {
|
auto addname = [&](const std::string &cfg) {
|
||||||
format += cfg + ",";
|
format += cfg + ",";
|
||||||
};
|
};
|
||||||
addname(cfg);
|
addname(cfg);
|
||||||
(addname(cfgs),...);
|
(addname(cfgs),...);
|
||||||
log("updating mechmind group {} configurations in loc {} to {}", name, mmo_fn.string(), format);
|
log("updating mech group {} configurations in loc {} to {}", name, mmo_fn.string(), format);
|
||||||
|
|
||||||
auto fn = find_real_filename(mmo_fn);
|
auto fn = find_real_filename(mmo_fn);
|
||||||
files_to_pak.insert(fn);
|
files_to_pak.insert(fn);
|
||||||
|
|
@ -752,11 +747,11 @@ struct mod_maker {
|
||||||
|
|
||||||
auto it = m.mechs.find(name);
|
auto it = m.mechs.find(name);
|
||||||
if (it == m.mechs.end()) {
|
if (it == m.mechs.end()) {
|
||||||
throw std::runtime_error{"no such mechmind or group: " + name};
|
throw std::runtime_error{"no such mechanoid or group: " + name};
|
||||||
}
|
}
|
||||||
auto new_n = 1 + sizeof...(cfgs);
|
auto new_n = 1 + sizeof...(cfgs);
|
||||||
if (new_n > 10) {
|
if (new_n > 10) {
|
||||||
throw std::runtime_error{"aim1 allows only 10 mechminds in a group max"};
|
throw std::runtime_error{"aim1 allows only 10 mechanoids in a group max"};
|
||||||
}
|
}
|
||||||
primitives::templates2::mmap_file<uint8_t> f{fn, primitives::templates2::mmap_file<uint8_t>::rw{}};
|
primitives::templates2::mmap_file<uint8_t> f{fn, primitives::templates2::mmap_file<uint8_t>::rw{}};
|
||||||
auto &n = *(uint32_t*)(f.p + it->second.n_mechs_offset);
|
auto &n = *(uint32_t*)(f.p + it->second.n_mechs_offset);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue