mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-16 15:59:54 +00:00
20da0892ef
Slowly moving through the open-cs errors Good progress in openCS Very good progress on openCS Getting closer with openCS OpenCS compiles and runs! Didn't have time to test it all though ix openMW everything compiles on windows?? Fix gcc Fix Clang
120 lines
3.3 KiB
C++
120 lines
3.3 KiB
C++
#ifndef OPENMW_ESM_INFO_H
|
|
#define OPENMW_ESM_INFO_H
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "components/esm/defs.hpp"
|
|
#include "components/esm/refid.hpp"
|
|
#include "variant.hpp"
|
|
|
|
namespace ESM
|
|
{
|
|
|
|
class ESMReader;
|
|
class ESMWriter;
|
|
|
|
/*
|
|
* Dialogue information. A series of these follow after DIAL records,
|
|
* and form a linked list of dialogue items.
|
|
*/
|
|
|
|
struct DialInfo
|
|
{
|
|
constexpr static RecNameInts sRecordId = REC_INFO;
|
|
|
|
/// Return a string descriptor for this record type. Currently used for debugging / error logs only.
|
|
static std::string_view getRecordType() { return "DialInfo"; }
|
|
|
|
enum Gender
|
|
{
|
|
Male = 0,
|
|
Female = 1,
|
|
NA = -1
|
|
};
|
|
|
|
struct DATAstruct
|
|
{
|
|
int mUnknown1 = 0;
|
|
union
|
|
{
|
|
int mDisposition = 0; // Used for dialogue responses
|
|
int mJournalIndex; // Used for journal entries
|
|
};
|
|
signed char mRank = -1; // Rank of NPC
|
|
signed char mGender = Gender::NA; // See Gender enum
|
|
signed char mPCrank = -1; // Player rank
|
|
signed char mUnknown2 = 0;
|
|
}; // 12 bytes
|
|
DATAstruct mData;
|
|
|
|
// The rules for whether or not we will select this dialog item.
|
|
struct SelectStruct
|
|
{
|
|
std::string mSelectRule; // This has a complicated format
|
|
Variant mValue;
|
|
};
|
|
|
|
// Journal quest indices (introduced with the quest system in Tribunal)
|
|
enum QuestStatus
|
|
{
|
|
QS_None = 0,
|
|
QS_Name = 1,
|
|
QS_Finished = 2,
|
|
QS_Restart = 3
|
|
};
|
|
|
|
// Rules for when to include this item in the final list of options
|
|
// visible to the player.
|
|
std::vector<SelectStruct> mSelects;
|
|
|
|
// Id of this, previous and next INFO items
|
|
RefId mId, mPrev, mNext;
|
|
|
|
// Various references used in determining when to select this item.
|
|
RefId mActor, mRace, mClass, mFaction, mPcFaction, mCell;
|
|
|
|
// Sound and text associated with this item
|
|
std::string mSound;
|
|
std::string mResponse;
|
|
// Result script (uncompiled) to run whenever this dialog item is
|
|
// selected
|
|
std::string mResultScript;
|
|
|
|
// ONLY include this item the NPC is not part of any faction.
|
|
bool mFactionLess;
|
|
|
|
// Status of this quest item
|
|
QuestStatus mQuestStatus;
|
|
|
|
// Hexadecimal versions of the various subrecord names.
|
|
enum SubNames
|
|
{
|
|
REC_ONAM = 0x4d414e4f,
|
|
REC_RNAM = 0x4d414e52,
|
|
REC_CNAM = 0x4d414e43,
|
|
REC_FNAM = 0x4d414e46,
|
|
REC_ANAM = 0x4d414e41,
|
|
REC_DNAM = 0x4d414e44,
|
|
REC_SNAM = 0x4d414e53,
|
|
REC_NAME = 0x454d414e,
|
|
REC_SCVR = 0x52564353,
|
|
|
|
REC_BNAM = 0x4d414e42,
|
|
REC_QSTN = 0x4e545351,
|
|
REC_QSTF = 0x46545351,
|
|
REC_QSTR = 0x52545351,
|
|
REC_DELE = 0x454c4544
|
|
};
|
|
|
|
void load(ESMReader& esm, bool& isDeleted);
|
|
///< Loads Info record
|
|
|
|
void save(ESMWriter& esm, bool isDeleted = false) const;
|
|
|
|
void blank();
|
|
///< Set record to default state (does not touch the ID).
|
|
};
|
|
|
|
}
|
|
#endif
|