#pragma once #include "Records/CLMT.h" #include "Records/CONT.h" #include "Records/GMST.h" #include "Records/NAVM.h" #include "Records/NPC.h" #include "Records/REFR.h" #include "Records/WRLD.h" namespace ESLoader { struct RecordCollection { friend class TESFile; FormEnum GetFormType(uint32_t aFormId) const noexcept { auto record = m_allRecords.find(aFormId); if (record == std::end(m_allRecords)) { spdlog::error("Record not found for form id {:X}", aFormId); return FormEnum::EMPTY_ID; } return record->second.GetType(); } bool HasAnyRecords() const noexcept { return m_allRecords.size(); } REFR& GetObjectRefById(uint32_t aFormId) noexcept { return m_objectReferences[aFormId]; } CLMT& GetClimateById(uint32_t aFormId) noexcept { return m_climates[aFormId]; } NPC& GetNpcById(uint32_t aFormId) noexcept { return m_npcs[aFormId]; } CONT& GetContainerById(uint32_t aFormId) noexcept { return m_containers[aFormId]; } GMST& GetGameSettingById(uint32_t aFormId) noexcept { return m_gameSettings[aFormId]; } WRLD& GetWorldById(uint32_t aFormId) noexcept { return m_worlds[aFormId]; } NAVM& GetNavMeshById(uint32_t aFormId) noexcept { return m_navMeshes[aFormId]; } void BuildReferences(); private: Map m_allRecords{}; Map m_objectReferences{}; Map m_climates{}; Map m_npcs{}; Map m_containers{}; Map m_gameSettings{}; Map m_worlds{}; Map m_navMeshes{}; }; } // namespace ESLoader