mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-13 21:40:11 +00:00
subclass ESM::DialInfo to keep track of parent topic
This commit is contained in:
parent
ea0e8be0d3
commit
15b7d3263c
@ -28,7 +28,7 @@ opencs_units_noqt (model/world
|
|||||||
)
|
)
|
||||||
|
|
||||||
opencs_hdrs_noqt (model/world
|
opencs_hdrs_noqt (model/world
|
||||||
columnimp idcollection collection
|
columnimp idcollection collection info
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#include "columnbase.hpp"
|
#include "columnbase.hpp"
|
||||||
#include "columns.hpp"
|
#include "columns.hpp"
|
||||||
|
#include "info.hpp"
|
||||||
|
|
||||||
namespace CSMWorld
|
namespace CSMWorld
|
||||||
{
|
{
|
||||||
@ -1334,7 +1335,7 @@ namespace CSMWorld
|
|||||||
{
|
{
|
||||||
ESXRecordT record2 = record.get();
|
ESXRecordT record2 = record.get();
|
||||||
|
|
||||||
record2.mQuestStatus = static_cast<ESM::DialInfo::QuestStatus> (data.toInt());
|
record2.mQuestStatus = static_cast<Info::QuestStatus> (data.toInt());
|
||||||
|
|
||||||
record.setModified (record2);
|
record.setModified (record2);
|
||||||
}
|
}
|
||||||
|
@ -149,14 +149,14 @@ CSMWorld::Data::Data() : mRefs (mCells)
|
|||||||
mJournals.addColumn (new RecordStateColumn<ESM::Dialogue>);
|
mJournals.addColumn (new RecordStateColumn<ESM::Dialogue>);
|
||||||
mJournals.addColumn (new DialogueTypeColumn<ESM::Dialogue> (true));
|
mJournals.addColumn (new DialogueTypeColumn<ESM::Dialogue> (true));
|
||||||
|
|
||||||
mTopicInfos.addColumn (new StringIdColumn<ESM::DialInfo>);
|
mTopicInfos.addColumn (new StringIdColumn<Info>);
|
||||||
mTopicInfos.addColumn (new RecordStateColumn<ESM::DialInfo>);
|
mTopicInfos.addColumn (new RecordStateColumn<Info>);
|
||||||
|
|
||||||
mJournalInfos.addColumn (new StringIdColumn<ESM::DialInfo>);
|
mJournalInfos.addColumn (new StringIdColumn<Info>);
|
||||||
mJournalInfos.addColumn (new RecordStateColumn<ESM::DialInfo>);
|
mJournalInfos.addColumn (new RecordStateColumn<Info>);
|
||||||
mJournalInfos.addColumn (new QuestStatusTypeColumn<ESM::DialInfo>);
|
mJournalInfos.addColumn (new QuestStatusTypeColumn<Info>);
|
||||||
mJournalInfos.addColumn (new QuestIndexColumn<ESM::DialInfo>);
|
mJournalInfos.addColumn (new QuestIndexColumn<Info>);
|
||||||
mJournalInfos.addColumn (new QuestDescriptionColumn<ESM::DialInfo>);
|
mJournalInfos.addColumn (new QuestDescriptionColumn<Info>);
|
||||||
|
|
||||||
mCells.addColumn (new StringIdColumn<Cell>);
|
mCells.addColumn (new StringIdColumn<Cell>);
|
||||||
mCells.addColumn (new RecordStateColumn<Cell>);
|
mCells.addColumn (new RecordStateColumn<Cell>);
|
||||||
|
14
apps/opencs/model/world/info.hpp
Normal file
14
apps/opencs/model/world/info.hpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#ifndef CSM_WOLRD_INFO_H
|
||||||
|
#define CSM_WOLRD_INFO_H
|
||||||
|
|
||||||
|
#include <components/esm/loadinfo.hpp>
|
||||||
|
|
||||||
|
namespace CSMWorld
|
||||||
|
{
|
||||||
|
struct Info : public ESM::DialInfo
|
||||||
|
{
|
||||||
|
std::string mTopicId;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
@ -2,15 +2,16 @@
|
|||||||
#include "infocollection.hpp"
|
#include "infocollection.hpp"
|
||||||
|
|
||||||
#include <components/esm/esmreader.hpp>
|
#include <components/esm/esmreader.hpp>
|
||||||
|
#include <components/esm/loaddial.hpp>
|
||||||
|
|
||||||
void CSMWorld::InfoCollection::load (const ESM::DialInfo& record, bool base)
|
void CSMWorld::InfoCollection::load (const Info& record, bool base)
|
||||||
{
|
{
|
||||||
int index = searchId (record.mId);
|
int index = searchId (record.mId);
|
||||||
|
|
||||||
if (index==-1)
|
if (index==-1)
|
||||||
{
|
{
|
||||||
// new record
|
// new record
|
||||||
Record<ESM::DialInfo> record2;
|
Record<Info> record2;
|
||||||
record2.mState = base ? RecordBase::State_BaseOnly : RecordBase::State_ModifiedOnly;
|
record2.mState = base ? RecordBase::State_BaseOnly : RecordBase::State_ModifiedOnly;
|
||||||
(base ? record2.mBase : record2.mModified) = record;
|
(base ? record2.mBase : record2.mModified) = record;
|
||||||
|
|
||||||
@ -19,7 +20,7 @@ void CSMWorld::InfoCollection::load (const ESM::DialInfo& record, bool base)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// old record
|
// old record
|
||||||
Record<ESM::DialInfo> record2 = getRecord (index);
|
Record<Info> record2 = getRecord (index);
|
||||||
|
|
||||||
if (base)
|
if (base)
|
||||||
record2.mBase = record;
|
record2.mBase = record;
|
||||||
@ -56,14 +57,15 @@ void CSMWorld::InfoCollection::load (ESM::ESMReader& reader, bool base, const ES
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Record<ESM::DialInfo> record = getRecord (index);
|
Record<Info> record = getRecord (index);
|
||||||
record.mState = RecordBase::State_Deleted;
|
record.mState = RecordBase::State_Deleted;
|
||||||
setRecord (index, record);
|
setRecord (index, record);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ESM::DialInfo record;
|
Info record;
|
||||||
|
record.mTopicId = dialogue.mId;
|
||||||
record.mId = id;
|
record.mId = id;
|
||||||
record.load (reader);
|
record.load (reader);
|
||||||
|
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
#ifndef CSM_WOLRD_INFOCOLLECTION_H
|
#ifndef CSM_WOLRD_INFOCOLLECTION_H
|
||||||
#define CSM_WOLRD_INFOCOLLECTION_H
|
#define CSM_WOLRD_INFOCOLLECTION_H
|
||||||
|
|
||||||
#include <components/esm/loadinfo.hpp>
|
|
||||||
|
|
||||||
#include "collection.hpp"
|
#include "collection.hpp"
|
||||||
|
#include "info.hpp"
|
||||||
|
|
||||||
namespace ESM
|
namespace ESM
|
||||||
{
|
{
|
||||||
@ -12,9 +11,9 @@ namespace ESM
|
|||||||
|
|
||||||
namespace CSMWorld
|
namespace CSMWorld
|
||||||
{
|
{
|
||||||
class InfoCollection : public Collection<ESM::DialInfo, IdAccessor<ESM::DialInfo> >
|
class InfoCollection : public Collection<Info, IdAccessor<Info> >
|
||||||
{
|
{
|
||||||
void load (const ESM::DialInfo& record, bool base);
|
void load (const Info& record, bool base);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user