diff --git a/Source/lua/modules/monsters.cpp b/Source/lua/modules/monsters.cpp index 35e796afb..3fbb01b36 100644 --- a/Source/lua/modules/monsters.cpp +++ b/Source/lua/modules/monsters.cpp @@ -18,7 +18,7 @@ namespace { void AddMonsterDataFromTsv(const std::string_view path) { DataFile dataFile = DataFile::loadOrDie(path); - LoadMonstDatFromFile(dataFile, path); + LoadMonstDatFromFile(dataFile, path, true); } void AddUniqueMonsterDataFromTsv(const std::string_view path) diff --git a/Source/monstdat.cpp b/Source/monstdat.cpp index 78e2876ed..c8487bb09 100644 --- a/Source/monstdat.cpp +++ b/Source/monstdat.cpp @@ -322,11 +322,13 @@ tl::expected ParseUniqueMonsterPack(std::string_ } // namespace -void LoadMonstDatFromFile(DataFile &dataFile, const std::string_view filename) +void LoadMonstDatFromFile(DataFile &dataFile, const std::string_view filename, bool grow) { dataFile.skipHeaderOrDie(filename); - MonstersData.reserve(MonstersData.size() + dataFile.numRecords()); + if (grow) { + MonstersData.reserve(MonstersData.size() + dataFile.numRecords()); + } for (DataFileRecord record : dataFile) { if (MonstersData.size() >= static_cast(NUM_MAX_MTYPES)) { @@ -396,7 +398,6 @@ void LoadMonstDatFromFile(DataFile &dataFile, const std::string_view filename) reader.readInt("exp", monster.exp); } - MonstersData.shrink_to_fit(); } namespace { @@ -408,9 +409,11 @@ void LoadMonstDat() MonstersData.clear(); AdditionalMonsterIdStringsToIndices.clear(); MonstersData.resize(NUM_DEFAULT_MTYPES); // ensure the hardcoded monster type slots are filled - LoadMonstDatFromFile(dataFile, filename); + LoadMonstDatFromFile(dataFile, filename, false); LuaEvent("MonsterDataLoaded"); + + MonstersData.shrink_to_fit(); } } // namespace @@ -451,8 +454,6 @@ void LoadUniqueMonstDatFromFile(DataFile &dataFile, std::string_view filename) return tl::make_unexpected("Invalid value. NOTE: Parser is incomplete"); }); } - - UniqueMonstersData.shrink_to_fit(); } namespace { @@ -466,6 +467,8 @@ void LoadUniqueMonstDat() LoadUniqueMonstDatFromFile(dataFile, filename); LuaEvent("UniqueMonsterDataLoaded"); + + UniqueMonstersData.shrink_to_fit(); } } // namespace diff --git a/Source/monstdat.h b/Source/monstdat.h index 3d3afd5ba..9c1730eb3 100644 --- a/Source/monstdat.h +++ b/Source/monstdat.h @@ -337,7 +337,7 @@ extern std::vector MonstersData; extern const _monster_id MonstConvTbl[]; extern std::vector UniqueMonstersData; -void LoadMonstDatFromFile(DataFile &dataFile, std::string_view filename); +void LoadMonstDatFromFile(DataFile &dataFile, std::string_view filename, bool grow); void LoadUniqueMonstDatFromFile(DataFile &dataFile, std::string_view filename); void LoadMonsterData();