aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2016-06-01 22:26:58 -0400
committerPaul Gilbert2016-07-15 19:18:57 -0400
commitb1ae3f44db79c7dc4ce31985dc5ca072fc1c9d76 (patch)
treebacae8b360c0d440095edf3db5026dc4c140803e /engines
parente2d3a0a32f62c6865397ca23984e15fbf6af5a3a (diff)
downloadscummvm-rg350-b1ae3f44db79c7dc4ce31985dc5ca072fc1c9d76.tar.gz
scummvm-rg350-b1ae3f44db79c7dc4ce31985dc5ca072fc1c9d76.tar.bz2
scummvm-rg350-b1ae3f44db79c7dc4ce31985dc5ca072fc1c9d76.zip
TITANIC: More script dial methods
Diffstat (limited to 'engines')
-rw-r--r--engines/titanic/true_talk/tt_npc_script.cpp39
-rw-r--r--engines/titanic/true_talk/tt_npc_script.h18
2 files changed, 47 insertions, 10 deletions
diff --git a/engines/titanic/true_talk/tt_npc_script.cpp b/engines/titanic/true_talk/tt_npc_script.cpp
index 48135d0e63..8369d6623a 100644
--- a/engines/titanic/true_talk/tt_npc_script.cpp
+++ b/engines/titanic/true_talk/tt_npc_script.cpp
@@ -24,6 +24,7 @@
#include "titanic/pet_control/pet_control.h"
#include "titanic/true_talk/tt_npc_script.h"
#include "titanic/true_talk/true_talk_manager.h"
+#include "titanic/game_manager.h"
#include "titanic/titanic.h"
namespace Titanic {
@@ -245,13 +246,20 @@ int TTnpcScript::proc31() {
return 0;
}
-void TTnpcScript::proc32(int dialNum, int region) {
- warning("TODO");
+void TTnpcScript::setDialRegion(int dialNum, int region) {
+ if (dialNum < DIALS_ARRAY_COUNT)
+ _dialValues[dialNum] = region * 100;
+
+ if (g_vm->_trueTalkManager) {
+ CPetControl *petControl = getPetControl(g_vm->_trueTalkManager->getGameManager());
+ if (petControl)
+ petControl->playSound(1);
+ }
}
void TTnpcScript::setDial(int dialNum, int value) {
if (dialNum < DIALS_ARRAY_COUNT) {
- int oldRegion = proc34(dialNum);
+ int oldRegion = getDialRegion(dialNum);
int newRegion = 1;
if (value < 50)
@@ -260,21 +268,30 @@ void TTnpcScript::setDial(int dialNum, int value) {
newRegion = 2;
if (oldRegion == newRegion)
- proc32(dialNum, newRegion);
+ setDialRegion(dialNum, newRegion);
_dialValues[dialNum] = value;
}
if (g_vm->_trueTalkManager) {
- CPetControl *petControl = g_vm->_trueTalkManager->getGameManager()->getPetControl();
+ CPetControl *petControl = getPetControl(g_vm->_trueTalkManager->getGameManager());
if (petControl)
petControl->resetDials();
}
}
-int TTnpcScript::proc34(int dialNum) {
- warning("TODO");
- return 0;
+int TTnpcScript::getDialRegion(int dialNum) {
+ if (dialNum < DIALS_ARRAY_COUNT) {
+ int value = _dialValues[dialNum];
+ if (value < 50)
+ return 0;
+ else if (value > 150)
+ return 2;
+ else
+ return 1;
+ } else {
+ return 0;
+ }
}
int TTnpcScript::getDialLevel(uint dialNum, bool flag) {
@@ -424,4 +441,10 @@ int TTnpcScript::translateByArray(int id) {
return -1;
}
+CPetControl *TTnpcScript::getPetControl(CGameManager *gameManager) {
+ if (gameManager && gameManager->_project)
+ return gameManager->_project->getPetControl();
+ return nullptr;
+}
+
} // End of namespace Titanic
diff --git a/engines/titanic/true_talk/tt_npc_script.h b/engines/titanic/true_talk/tt_npc_script.h
index bb495425aa..69934ce863 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
+class CGameManager;
+class CPetControl;
class TTroomScript;
class TTsentence;
@@ -128,6 +130,11 @@ protected:
* Returns a dialogue Id by script tag value Id
*/
uint getDialogueId(uint tagId);
+
+ /**
+ * Returns a pointer to the PET control
+ */
+ static CPetControl *getPetControl(CGameManager *gameManager);
public:
TTnpcScript(int charId, const char *charClass, int v2,
const char *charName, int v3, int val2, int v4,
@@ -174,14 +181,21 @@ public:
virtual void saveBody(SimpleFile *file);
virtual void loadBody(SimpleFile *file);
virtual int proc31();
- virtual void proc32(int dialNum, int region);
+
+ /**
+ * Sets a given dial to be pointing in a specified region (0 to 2)
+ */
+ virtual void setDialRegion(int dialNum, int region);
/**
* Sets the value for an NPC's dial
*/
virtual void setDial(int dialNum, int value);
- virtual int proc34(int dialNum);
+ /**
+ * Returns a dial's region number
+ */
+ virtual int getDialRegion(int dialNum);
/**
* Get the NPC's dial level