More correct to rename 'mechmind' to mech groups.

This commit is contained in:
lzwdgc 2024-06-06 03:12:38 +03:00
parent 35df7855c0
commit 063329f66a

View file

@ -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);