From 74935b371fa94637f5592e402110c3b41cd0b3c4 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 8 May 2016 10:59:03 -0400 Subject: TITANIC: Implementing scriptChanged methods --- engines/titanic/game_manager.cpp | 4 ---- engines/titanic/game_manager.h | 2 -- engines/titanic/true_talk/script_handler.cpp | 8 ++++++-- engines/titanic/true_talk/script_handler.h | 14 +++++++++++++- engines/titanic/true_talk/true_talk_manager.cpp | 2 +- engines/titanic/true_talk/tt_npc_script.cpp | 4 ---- engines/titanic/true_talk/tt_npc_script.h | 16 ++++++++++++++-- engines/titanic/true_talk/tt_room_script.cpp | 6 ++++-- engines/titanic/true_talk/tt_room_script.h | 21 +++++++++++++++++++-- 9 files changed, 57 insertions(+), 20 deletions(-) (limited to 'engines/titanic') diff --git a/engines/titanic/game_manager.cpp b/engines/titanic/game_manager.cpp index 1ce9436685..fd2f553b8e 100644 --- a/engines/titanic/game_manager.cpp +++ b/engines/titanic/game_manager.cpp @@ -107,10 +107,6 @@ void CGameManager::initBounds() { _bounds = Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); } -void CGameManager::fn2() { - warning("TODO"); -} - void CGameManager::playClip(CMovieClip *clip, CRoomItem *oldRoom, CRoomItem *newRoom) { warning("TODO: CGameManager::playClip"); } diff --git a/engines/titanic/game_manager.h b/engines/titanic/game_manager.h index e52426592b..c4e6bc6ec8 100644 --- a/engines/titanic/game_manager.h +++ b/engines/titanic/game_manager.h @@ -136,8 +136,6 @@ public: */ void initBounds(); - void fn2(); - /** * Plays a movie clip */ diff --git a/engines/titanic/true_talk/script_handler.cpp b/engines/titanic/true_talk/script_handler.cpp index ef5814c3f2..e902d0c874 100644 --- a/engines/titanic/true_talk/script_handler.cpp +++ b/engines/titanic/true_talk/script_handler.cpp @@ -29,8 +29,12 @@ namespace Titanic { CScriptHandler::CScriptHandler(CTitleEngine *owner, int val1, int val2) { } -void CScriptHandler::setup(TTRoomScript *roomScript, TTNpcScript *npcScript, uint charId) { - // TODO +int CScriptHandler::scriptChanged(TTRoomScript *roomScript, TTNpcScript *npcScript, uint dialogueId) { + if (!npcScript || !roomScript) { + ++_inputCtr; + return 5; + } + } void CScriptHandler::processInput(TTRoomScript *roomScript, TTNpcScript *npcScript, diff --git a/engines/titanic/true_talk/script_handler.h b/engines/titanic/true_talk/script_handler.h index 6a1e0dc0f1..868a2c3eaa 100644 --- a/engines/titanic/true_talk/script_handler.h +++ b/engines/titanic/true_talk/script_handler.h @@ -34,13 +34,25 @@ class CTitleEngine; class CScriptHandler { private: CTitleEngine *_owner; + TTScriptBase *_script; + int _field8; + int _fieldC; + int _field10; + int _field14; + int _field18; + int _inputCtr; + int _field20; + int _field24; + int _field28; + int _field2C; + int _field30; public: CScriptHandler(CTitleEngine *owner, int val1, int val2); /** * Set the character and room */ - void setup(TTRoomScript *roomScript, TTNpcScript *npcScript, uint charId); + int scriptChanged(TTRoomScript *roomScript, TTNpcScript *npcScript, uint dialogueId); void processInput(TTRoomScript *roomScript, TTNpcScript *npcScript, const TTString &line); diff --git a/engines/titanic/true_talk/true_talk_manager.cpp b/engines/titanic/true_talk/true_talk_manager.cpp index 4b1dab0046..0b841aca00 100644 --- a/engines/titanic/true_talk/true_talk_manager.cpp +++ b/engines/titanic/true_talk/true_talk_manager.cpp @@ -224,7 +224,7 @@ void CTrueTalkManager::start(CTrueTalkNPC *npc, uint id, CViewItem *view) { loadAssets(npc, charId); _currentNPC = npc; - _titleEngine._scriptHandler->setup(roomScript, npcScript, charId); + _titleEngine._scriptHandler->scriptChanged(roomScript, npcScript, id); _currentNPC = nullptr; setDialogue(npc, roomScript, view); diff --git a/engines/titanic/true_talk/tt_npc_script.cpp b/engines/titanic/true_talk/tt_npc_script.cpp index dfe8ac0ada..40a50be030 100644 --- a/engines/titanic/true_talk/tt_npc_script.cpp +++ b/engines/titanic/true_talk/tt_npc_script.cpp @@ -79,10 +79,6 @@ int TTNpcScript::proc9() const { return 2; } -int TTNpcScript::proc10() const { - return 2; -} - int TTNpcScript::proc11() const { return 2; } diff --git a/engines/titanic/true_talk/tt_npc_script.h b/engines/titanic/true_talk/tt_npc_script.h index 2f0370107e..c11dc6d0b8 100644 --- a/engines/titanic/true_talk/tt_npc_script.h +++ b/engines/titanic/true_talk/tt_npc_script.h @@ -44,7 +44,12 @@ public: virtual void proc7(int v1, int v2) = 0; virtual int proc8() const = 0; virtual int proc9() const = 0; - virtual int proc10() const = 0; + + /** + * Called when the script/id changes + */ + virtual int scriptChanged(TTScriptBase *roomScript, uint id) = 0; + virtual int proc11() const = 0; virtual int proc12() const = 0; @@ -78,7 +83,14 @@ public: virtual void proc7(int v1, int v2); virtual int proc8() const; virtual int proc9() const; - virtual int proc10() const; + + /** + * Called when the script/id changes + */ + virtual int scriptChanged(TTScriptBase *roomScript, uint id) { + return 2; + } + virtual int proc11() const; virtual int proc12() const; virtual bool proc13() const; diff --git a/engines/titanic/true_talk/tt_room_script.cpp b/engines/titanic/true_talk/tt_room_script.cpp index 1c37a39bf0..37fba1f1a9 100644 --- a/engines/titanic/true_talk/tt_room_script.cpp +++ b/engines/titanic/true_talk/tt_room_script.cpp @@ -53,8 +53,10 @@ void TTRoomScript::proc9() { warning("TODO"); } -void TTRoomScript::proc10() { - warning("TODO"); +int TTRoomScript::scriptChanged(TTScriptBase *npcScript, int id) { + if (id == 1) + _field54 = 1; + return 1; } void TTRoomScript::proc11() { diff --git a/engines/titanic/true_talk/tt_room_script.h b/engines/titanic/true_talk/tt_room_script.h index ed17b29e9c..f64570995c 100644 --- a/engines/titanic/true_talk/tt_room_script.h +++ b/engines/titanic/true_talk/tt_room_script.h @@ -38,7 +38,12 @@ public: virtual void proc7() = 0; virtual void proc8() = 0; virtual void proc9() = 0; - virtual void proc10() = 0; + + /** + * Called when the script changes + */ + virtual int scriptChanged(TTScriptBase *npcScript, int id) = 0; + virtual void proc11() = 0; }; @@ -53,8 +58,20 @@ public: virtual void proc7(); virtual void proc8(); virtual void proc9(); - virtual void proc10(); + + /** + * Called when the script changes + */ + virtual int scriptChanged(TTScriptBase *npcScript, int id); + virtual void proc11(); + + /** + * Called with the new script and id + */ + int notifyScript(TTScriptBase *npcScript, int id) { + return scriptChanged(npcScript, id); + } }; } // End of namespace Titanic -- cgit v1.2.3