void CppUpdateFieldDumper::DumpDynamicFlags(std::ofstream& file, std::string const& varName, std::vector<std::vector<DynamicUpdateField>*> const& fields) { file << "uint32 " << varName << " =" << std::endl; file << "{" << std::endl; for (std::size_t i = 0; i < fields.size(); ++i) { std::vector<DynamicUpdateField> const& fieldDefs = *fields[i]; std::uint32_t j = 0; while (j < fieldDefs.size()) { std::string flagName = GetUpdateFieldFlagFullName(fieldDefs[j].Flags); std::string pad(PaddingSize - flagName.length(), ' '); std::string fieldName = GetInputData()->GetString(fieldDefs[j].NameAddress); std::string oldName = GetOldName(fieldName.c_str()); if (!oldName.empty()) fieldName = oldName; file << Tab << flagName << pad << " // " << fieldName << std::endl; ++j; } } file << "};" << std::endl << std::endl; }
void UpdateFieldDumper::BuildUpdateFieldEnum(Enum& enumData, std::string const& name, std::vector<UpdateField> const& data, std::string const& end, std::string const& fieldBase) { enumData.SetName(name); std::uint32_t i = 0; while (i < data.size()) { UpdateField const* field = &data[i]; std::string name = GetInputData()->GetString(data[i].NameAddress); if (name == "CGUnitData::npcFlags[UMNW0]") { name = "CGUnitData::npcFlags"; field = &data[i + 1]; } std::string oldName = GetOldName(name.c_str()); if (!oldName.empty()) name = oldName; enumData.AddMember(Enum::Member(i, FormatValue(i, fieldBase), name, static_cast<std::ostringstream&>(std::ostringstream() << "Size: " << field->Size << ", Flags: " << GetUpdateFieldFlagName(field->Flags)).str())); i += field->Size; } enumData.AddMember(Enum::Member(i, FormatValue(i, fieldBase), end, "")); }
void UpdateFieldDumper::BuildDynamicUpdateFieldEnum(Enum& enumData, std::string const& name, std::vector<DynamicUpdateField> const& data, std::string const& end, std::string const& fieldBase) { enumData.SetName(name); std::uint32_t i = 0; while (i < data.size()) { DynamicUpdateField const* field = &data[i]; std::string name = GetInputData()->GetString(data[i].NameAddress); std::string oldName = GetOldName(name.c_str()); if (!oldName.empty()) name = oldName; enumData.AddMember(Enum::Member(i, FormatValue(i, fieldBase), name, static_cast<std::ostringstream&>(std::ostringstream() << "Flags: " << GetUpdateFieldFlagName(field->Flags)).str())); ++i; } enumData.AddMember(Enum::Member(i, FormatValue(i, fieldBase), end, "")); }