diff options
-rw-r--r-- | engines/titanic/messages/messages.h | 2 | ||||
-rw-r--r-- | engines/titanic/npcs/true_talk_npc.cpp | 4 | ||||
-rw-r--r-- | engines/titanic/true_talk/script_handler.cpp | 6 | ||||
-rw-r--r-- | engines/titanic/true_talk/script_handler.h | 4 | ||||
-rw-r--r-- | engines/titanic/true_talk/title_engine.cpp | 4 | ||||
-rw-r--r-- | engines/titanic/true_talk/title_engine.h | 3 | ||||
-rw-r--r-- | engines/titanic/true_talk/true_talk_manager.cpp | 22 | ||||
-rw-r--r-- | engines/titanic/true_talk/true_talk_manager.h | 9 | ||||
-rw-r--r-- | engines/titanic/true_talk/tt_string.h | 1 |
9 files changed, 49 insertions, 6 deletions
diff --git a/engines/titanic/messages/messages.h b/engines/titanic/messages/messages.h index f9589ce76a..aeb82d5448 100644 --- a/engines/titanic/messages/messages.h +++ b/engines/titanic/messages/messages.h @@ -269,7 +269,7 @@ MESSAGE2(CMovieFrameMsg, int, value1, 0, int, value2, 0); MESSAGE0(CMusicHasStartedMsg); MESSAGE0(CMusicHasStoppedMsg); MESSAGE0(CMusicSettingChangedMsg); -MESSAGE2(CNPCPlayAnimationMsg, void *, data, 0, int, value2, 0); +MESSAGE2(CNPCPlayAnimationMsg, void *, data, nullptr, int, value2, 0); MESSAGE1(CNPCPlayIdleAnimationMsg, void *, value, 0); MESSAGE3(CNPCPlayTalkingAnimationMsg, int, value1, 0, int, value2, 0, void *, value3, nullptr); MESSAGE0(CNPCQueueIdleAnimMsg); diff --git a/engines/titanic/npcs/true_talk_npc.cpp b/engines/titanic/npcs/true_talk_npc.cpp index 183c189f8a..bc562efac4 100644 --- a/engines/titanic/npcs/true_talk_npc.cpp +++ b/engines/titanic/npcs/true_talk_npc.cpp @@ -192,7 +192,9 @@ bool CTrueTalkNPC::NPCPlayAnimationMsg(CNPCPlayAnimationMsg *msg) { } void CTrueTalkNPC::processInput(CTextInputMsg *msg, CViewItem *view) { - // TODO + CTrueTalkManager *talkManager = getGameManager()->getTalkManager(); + if (talkManager) + talkManager->processInput(this, msg, view); } void CTrueTalkNPC::performAction(int val1, int val2) { diff --git a/engines/titanic/true_talk/script_handler.cpp b/engines/titanic/true_talk/script_handler.cpp index de101214bf..eb7979e1e5 100644 --- a/engines/titanic/true_talk/script_handler.cpp +++ b/engines/titanic/true_talk/script_handler.cpp @@ -30,8 +30,12 @@ CScriptHandler::CScriptHandler(CTitleEngine *owner, int val1, int val2) { } void CScriptHandler::setup(TTNamedScript *npcScript, TTRoomScript *roomScript, uint charId) { - + // TODO } +void CScriptHandler::processInput(TTNamedScript *npcScript, TTRoomScript *roomScript, + const TTString &line) { + // TODO +} } // End of namespace Titanic diff --git a/engines/titanic/true_talk/script_handler.h b/engines/titanic/true_talk/script_handler.h index 69c1c9486a..1959468ed0 100644 --- a/engines/titanic/true_talk/script_handler.h +++ b/engines/titanic/true_talk/script_handler.h @@ -25,6 +25,7 @@ #include "titanic/true_talk/tt_named_script.h" #include "titanic/true_talk/tt_room_script.h" +#include "titanic/true_talk/tt_string.h" namespace Titanic { @@ -40,6 +41,9 @@ public: * Set the character and room */ void setup(TTNamedScript *npcScript, TTRoomScript *roomScript, uint charId); + + void processInput(TTNamedScript *npcScript, TTRoomScript *roomScript, + const TTString &line); }; } // End of namespace Titanic diff --git a/engines/titanic/true_talk/title_engine.cpp b/engines/titanic/true_talk/title_engine.cpp index d5015b430c..528c4b12b0 100644 --- a/engines/titanic/true_talk/title_engine.cpp +++ b/engines/titanic/true_talk/title_engine.cpp @@ -24,12 +24,12 @@ namespace Titanic { -CTitleEngine::CTitleEngine() : _script(nullptr), _handler(nullptr) { +CTitleEngine::CTitleEngine() : _script(nullptr), _scriptHandler(nullptr) { } CTitleEngine::~CTitleEngine() { delete _script; - delete _handler; + delete _scriptHandler; } void CTitleEngine::setup(int val1, int val2) { diff --git a/engines/titanic/true_talk/title_engine.h b/engines/titanic/true_talk/title_engine.h index 8d32067616..e9bc6249eb 100644 --- a/engines/titanic/true_talk/title_engine.h +++ b/engines/titanic/true_talk/title_engine.h @@ -33,9 +33,10 @@ namespace Titanic { class CTitleEngine { protected: - CScriptHandler *_handler; TTScriptBase *_script; public: + CScriptHandler *_scriptHandler; +public: CTitleEngine(); ~CTitleEngine(); diff --git a/engines/titanic/true_talk/true_talk_manager.cpp b/engines/titanic/true_talk/true_talk_manager.cpp index 091e3f8e48..dc93bf438b 100644 --- a/engines/titanic/true_talk/true_talk_manager.cpp +++ b/engines/titanic/true_talk/true_talk_manager.cpp @@ -286,4 +286,26 @@ void CTrueTalkManager::loadAssets(CTrueTalkNPC *npc, int charId) { } } +void CTrueTalkManager::processInput(CTrueTalkNPC *npc, CTextInputMsg *msg, CViewItem *view) { + TTNamedScript *npcScript = getNpcScript(npc); + TTRoomScript *roomScript = getRoomScript(); + _titleEngine.reset(); + + if (npcScript && roomScript) { + _currentNPC = npc; + _titleEngine._scriptHandler->processInput(npcScript, roomScript, + TTString(msg->_input)); + _currentNPC = nullptr; + + loadAssets(npc, npcScript->charId()); + setView(npcScript, roomScript, view); + } + + _currentNPC = nullptr; +} + +void CTrueTalkManager::setView(TTNamedScript *npcScript, TTRoomScript *roomScript, CViewItem *view) { + warning("TODO: CTrueTalkManager::setView"); +} + } // End of namespace Titanic diff --git a/engines/titanic/true_talk/true_talk_manager.h b/engines/titanic/true_talk/true_talk_manager.h index d2bba4b4ba..3c24ade6cb 100644 --- a/engines/titanic/true_talk/true_talk_manager.h +++ b/engines/titanic/true_talk/true_talk_manager.h @@ -23,6 +23,7 @@ #ifndef TITANIC_TRUE_TALK_MANAGER_H #define TITANIC_TRUE_TALK_MANAGER_H +#include "titanic/messages/messages.h" #include "titanic/support/simple_file.h" #include "titanic/true_talk/dialogue_file.h" #include "titanic/true_talk/title_engine.h" @@ -32,6 +33,7 @@ namespace Titanic { class CGameManager; class CTreeItem; +class CViewItem; class CTrueTalkNPC; class CTrueTalkManager { @@ -77,6 +79,8 @@ private: * Loads assets for the current character, if it's changed */ void loadAssets(CTrueTalkNPC *npc, int charId); + + void setView(TTNamedScript *npcScript, TTRoomScript *roomScript, CViewItem *view); public: static int _v1; static int _v2; @@ -149,6 +153,11 @@ public: * Return a TrueTalk talker/script */ TTNamedScript *getTalker(const CString &name) const; + + /** + * Process player's input + */ + void processInput(CTrueTalkNPC *npc, CTextInputMsg *msg, CViewItem *view); }; } // End of namespace Titanic diff --git a/engines/titanic/true_talk/tt_string.h b/engines/titanic/true_talk/tt_string.h index 60fdde0ff5..d593553f5c 100644 --- a/engines/titanic/true_talk/tt_string.h +++ b/engines/titanic/true_talk/tt_string.h @@ -33,6 +33,7 @@ public: public: TTString() : CString(), _status(0) {} TTString(const char *str) : CString(str), _status(0) {} + TTString(const CString &str) : CString(str), _status(0) {} virtual ~TTString() {} bool isValid() const { return !_status; } |