aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/true_talk/tt_npc_script.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic/true_talk/tt_npc_script.h')
-rw-r--r--engines/titanic/true_talk/tt_npc_script.h33
1 files changed, 30 insertions, 3 deletions
diff --git a/engines/titanic/true_talk/tt_npc_script.h b/engines/titanic/true_talk/tt_npc_script.h
index 7362d4db87..2dd721e61a 100644
--- a/engines/titanic/true_talk/tt_npc_script.h
+++ b/engines/titanic/true_talk/tt_npc_script.h
@@ -30,6 +30,8 @@ namespace Titanic {
#define DIALS_ARRAY_COUNT 10
+enum ScriptArrayFlag { SF_1 = 1, SF_2 = 2 };
+
class CGameManager;
class CPetControl;
class TTroomScript;
@@ -47,6 +49,18 @@ struct TTnpcScriptResponse {
int size() const;
};
+struct TTscriptArrayItem {
+ uint _id;
+ const uint *_arrayP;
+ TTscriptArrayItem *_nextP;
+ uint _val;
+ int _flags;
+
+ TTscriptArrayItem() : _id(0), _arrayP(nullptr), _nextP(nullptr),
+ _val(0), _flags(0) {}
+ TTscriptArrayItem(uint id, const uint *arrayP, bool flag1, bool flag2);
+};
+
class TTnpcScriptBase : public TTscriptBase {
protected:
int _field54;
@@ -84,7 +98,7 @@ private:
protected:
Common::Array<TTnpcScriptResponse> _responses;
int _valuesPerResponse;
- byte *_subPtr;
+ Common::Array<TTscriptArrayItem> _arrayItems;
const TTsentenceEntries *_entriesP;
int _entryCount;
int _field68;
@@ -139,7 +153,19 @@ protected:
*/
static CPetControl *getPetControl(CGameManager *gameManager);
+ /**
+ * Adds a new item to the entries list
+ */
+ void addArrayItem(uint id, const uint *arrayP, bool flag1, bool flag2);
+
+ /**
+ * Finds an array item by Id
+ */
+ TTscriptArrayItem *findArrayItem(uint id);
+
int processSentence(const TTsentenceEntries *entries, uint entryCount, TTroomScript *roomScript, TTsentence *sentence);
+
+ bool defaultProcess(TTroomScript *roomScript, TTsentence *sentence);
public:
TTnpcScript(int charId, const char *charClass, int v2,
const char *charName, int v3, int val2, int v4,
@@ -184,7 +210,8 @@ public:
virtual void selectResponse(int id);
virtual int proc15() const;
- virtual bool proc16() const;
+ virtual bool handleQuote(TTroomScript *roomScript, TTsentence *sentence,
+ int val, uint tagId, uint remainder) const;
virtual bool proc17() const;
virtual bool proc18() const;
virtual uint proc19(uint v);
@@ -199,7 +226,7 @@ public:
virtual void load(SimpleFile *file);
virtual void saveBody(SimpleFile *file);
virtual void loadBody(SimpleFile *file);
- virtual int proc31();
+ virtual int proc31() const;
/**
* Sets a given dial to be pointing in a specified region (0 to 2)