diff options
author | Paul Gilbert | 2016-05-04 23:17:08 -0400 |
---|---|---|
committer | Paul Gilbert | 2016-07-10 16:38:24 -0400 |
commit | 308926ba87c76dc3151c4ae3428a71656cdbdad2 (patch) | |
tree | c88509124f3945a603e62e797b8253ddb2bf5fba /engines/titanic/true_talk | |
parent | 07cbf78fe119058b196127827638ab0d8bc71b7e (diff) | |
download | scummvm-rg350-308926ba87c76dc3151c4ae3428a71656cdbdad2.tar.gz scummvm-rg350-308926ba87c76dc3151c4ae3428a71656cdbdad2.tar.bz2 scummvm-rg350-308926ba87c76dc3151c4ae3428a71656cdbdad2.zip |
TITANIC: Implementing getting TrueTalk room scripts
Diffstat (limited to 'engines/titanic/true_talk')
-rw-r--r-- | engines/titanic/true_talk/true_talk_manager.cpp | 21 | ||||
-rw-r--r-- | engines/titanic/true_talk/true_talk_manager.h | 9 |
2 files changed, 26 insertions, 4 deletions
diff --git a/engines/titanic/true_talk/true_talk_manager.cpp b/engines/titanic/true_talk/true_talk_manager.cpp index a07f7fa242..805ebd368d 100644 --- a/engines/titanic/true_talk/true_talk_manager.cpp +++ b/engines/titanic/true_talk/true_talk_manager.cpp @@ -196,7 +196,7 @@ void CTrueTalkManager::fn1(CGameObject *npc, int val2, int val3) { warning("CTrueTalkManager::fn1"); } -TTNamedScript *CTrueTalkManager::getTalker(const CString &name) { +TTNamedScript *CTrueTalkManager::getTalker(const CString &name) const { if (name.contains("Doorbot")) return _scripts.getNamedScript(104); else if (name.contains("DeskBot")) @@ -219,7 +219,7 @@ TTNamedScript *CTrueTalkManager::getTalker(const CString &name) { return nullptr; } -TTNamedScript *CTrueTalkManager::getNpcScript(CGameObject *npc) { +TTNamedScript *CTrueTalkManager::getNpcScript(CGameObject *npc) const { CString npcName = npc->getName(); TTNamedScript *script = getTalker(npcName); @@ -231,4 +231,21 @@ TTNamedScript *CTrueTalkManager::getNpcScript(CGameObject *npc) { return script; } +TTUnnamedScript *CTrueTalkManager::getRoomScript() const { + CRoomItem *room = _gameManager->getRoom(); + TTUnnamedScript *script = nullptr; + if (room) { + int scriptId = room->getScriptId(); + if (scriptId) + script = _scripts.getUnnamedScript(scriptId); + } + + if (!script) { + // Fall back on the default Room script + script = _scripts.getUnnamedScript(110); + } + + return script; +} + } // 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 5d5f67958d..ae740cb9f1 100644 --- a/engines/titanic/true_talk/true_talk_manager.h +++ b/engines/titanic/true_talk/true_talk_manager.h @@ -62,7 +62,12 @@ private: /** * Gets the script associated with an NPC game object */ - TTNamedScript *getNpcScript(CGameObject *npc); + TTNamedScript *getNpcScript(CGameObject *npc) const; + + /** + * Gets the script associated with the current room + */ + TTUnnamedScript *getRoomScript() const; public: static int _v1; static int _v2; @@ -129,7 +134,7 @@ public: /** * Return a TrueTalk talker/script */ - TTNamedScript *getTalker(const CString &name); + TTNamedScript *getTalker(const CString &name) const; }; } // End of namespace Titanic |