2013-10-29 13:18:22 +01:00
|
|
|
#ifndef CSM_WOLRD_INFOCOLLECTION_H
|
|
|
|
#define CSM_WOLRD_INFOCOLLECTION_H
|
|
|
|
|
2022-10-19 19:02:00 +02:00
|
|
|
#include <string>
|
2021-08-01 13:13:47 +02:00
|
|
|
#include <unordered_map>
|
2022-10-19 19:02:00 +02:00
|
|
|
#include <vector>
|
|
|
|
|
2013-10-29 13:18:22 +01:00
|
|
|
#include "collection.hpp"
|
2013-11-01 17:43:45 +01:00
|
|
|
#include "info.hpp"
|
2013-10-29 13:18:22 +01:00
|
|
|
|
2013-10-31 12:16:45 +01:00
|
|
|
namespace ESM
|
|
|
|
{
|
2015-03-14 08:09:19 +11:00
|
|
|
struct Dialogue;
|
2022-10-19 19:02:00 +02:00
|
|
|
class ESMReader;
|
2013-10-31 12:16:45 +01:00
|
|
|
}
|
|
|
|
|
2021-07-23 16:05:58 +10:00
|
|
|
namespace CSMWorld
|
|
|
|
{
|
2023-02-15 20:57:01 +01:00
|
|
|
using InfosByTopic = std::unordered_map<ESM::RefId, std::vector<ESM::RefId>>;
|
2023-02-17 00:08:38 +01:00
|
|
|
using InfosRecordPtrByTopic = std::unordered_map<ESM::RefId, std::vector<const Record<Info>*>>;
|
2021-07-23 16:05:58 +10:00
|
|
|
|
2013-11-01 17:43:45 +01:00
|
|
|
class InfoCollection : public Collection<Info, IdAccessor<Info>>
|
2013-10-29 13:18:22 +01:00
|
|
|
{
|
2022-09-22 21:26:05 +03:00
|
|
|
private:
|
2023-02-15 20:57:01 +01:00
|
|
|
bool load(const Info& record, bool base);
|
2013-10-29 13:18:22 +01:00
|
|
|
|
2022-09-22 21:26:05 +03:00
|
|
|
public:
|
2023-02-15 20:57:01 +01:00
|
|
|
void load(ESM::ESMReader& reader, bool base, const ESM::Dialogue& dialogue, InfosByTopic& infosByTopic);
|
2021-07-23 16:05:58 +10:00
|
|
|
|
2023-02-17 00:08:38 +01:00
|
|
|
InfosRecordPtrByTopic getInfosByTopic() const;
|
2013-10-29 13:18:22 +01:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2015-03-11 10:54:45 -04:00
|
|
|
#endif
|