mirror of https://github.com/OpenMW/openmw.git
Feat(CS): Add definition files for selection group record type
parent
c6a1196ec7
commit
5c10727380
@ -0,0 +1,38 @@
|
||||
#include "selectiongroup.hpp"
|
||||
|
||||
#include "esmreader.hpp"
|
||||
#include "esmwriter.hpp"
|
||||
|
||||
namespace ESM
|
||||
{
|
||||
void SelectionGroup::load(ESMReader& esm, bool& isDeleted)
|
||||
{
|
||||
|
||||
while (esm.hasMoreSubs())
|
||||
{
|
||||
esm.getSubName();
|
||||
switch (esm.retSubName().toInt())
|
||||
{
|
||||
case fourCC("SELC"):
|
||||
mId = esm.getRefId();
|
||||
break;
|
||||
case fourCC("SELI"):
|
||||
selectedInstances.push_back(esm.getRefId().getRefIdString());
|
||||
break;
|
||||
default:
|
||||
esm.fail("Unknown subrecord");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SelectionGroup::save(ESMWriter& esm, bool isDeleted) const
|
||||
{
|
||||
esm.writeHNCRefId("SELC", mId);
|
||||
for (std::string id : selectedInstances)
|
||||
esm.writeHNCString("SELI", id);
|
||||
}
|
||||
|
||||
void SelectionGroup::blank() {}
|
||||
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
#ifndef COMPONENTS_ESM_SELECTIONGROUP_H
|
||||
#define COMPONENTS_ESM_SELECTIONGROUP_H
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "components/esm/defs.hpp"
|
||||
#include "components/esm/refid.hpp"
|
||||
|
||||
namespace ESM
|
||||
{
|
||||
class ESMReader;
|
||||
class ESMWriter;
|
||||
|
||||
struct SelectionGroup
|
||||
{
|
||||
constexpr static RecNameInts sRecordId = REC_SELG;
|
||||
|
||||
static constexpr std::string_view getRecordType() { return "SelectionGroup"; }
|
||||
|
||||
uint32_t mRecordFlags = 0;
|
||||
|
||||
RefId mId;
|
||||
|
||||
std::vector<std::string> selectedInstances;
|
||||
|
||||
void load(ESMReader& esm, bool& isDeleted);
|
||||
void save(ESMWriter& esm, bool isDeleted = false) const;
|
||||
|
||||
/// Set record to default state (does not touch the ID).
|
||||
void blank();
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue