aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/true_talk
diff options
context:
space:
mode:
authorPaul Gilbert2016-05-04 23:17:08 -0400
committerPaul Gilbert2016-07-10 16:38:24 -0400
commit308926ba87c76dc3151c4ae3428a71656cdbdad2 (patch)
treec88509124f3945a603e62e797b8253ddb2bf5fba /engines/titanic/true_talk
parent07cbf78fe119058b196127827638ab0d8bc71b7e (diff)
downloadscummvm-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.cpp21
-rw-r--r--engines/titanic/true_talk/true_talk_manager.h9
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