aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorPaul Gilbert2016-05-28 21:42:18 -0400
committerPaul Gilbert2016-07-15 19:16:43 -0400
commit421812f27c59e53e68dfbaa777284c74a8fb7938 (patch)
tree0ca956f0212727260a7edb41272f1bbaa1bcf704 /engines
parenta7ecc6d601f1beabd0f5538d5e1cd7d6e983d2b9 (diff)
downloadscummvm-rg350-421812f27c59e53e68dfbaa777284c74a8fb7938.tar.gz
scummvm-rg350-421812f27c59e53e68dfbaa777284c74a8fb7938.tar.bz2
scummvm-rg350-421812f27c59e53e68dfbaa777284c74a8fb7938.zip
TITANIC: More implementing deskbot message handlers
Diffstat (limited to 'engines')
-rw-r--r--engines/titanic/core/tree_item.cpp18
-rw-r--r--engines/titanic/core/tree_item.h10
-rw-r--r--engines/titanic/game_state.cpp6
-rw-r--r--engines/titanic/game_state.h2
-rw-r--r--engines/titanic/npcs/deskbot.cpp22
-rw-r--r--engines/titanic/npcs/deskbot.h2
-rw-r--r--engines/titanic/pet_control/pet_gfx_element.cpp2
-rw-r--r--engines/titanic/pet_control/pet_slider.cpp4
8 files changed, 53 insertions, 13 deletions
diff --git a/engines/titanic/core/tree_item.cpp b/engines/titanic/core/tree_item.cpp
index 8dd3da054d..86a6b174a8 100644
--- a/engines/titanic/core/tree_item.cpp
+++ b/engines/titanic/core/tree_item.cpp
@@ -319,9 +319,23 @@ int CTreeItem::getPassengerClass() const {
return gameManager ? gameManager->_gameState._passengerClass : 3;
}
-int CTreeItem::getStateC() const {
+int CTreeItem::getPriorClass() const {
CGameManager *gameManager = getGameManager();
- return gameManager ? gameManager->_gameState._fieldC : 3;
+ return gameManager ? gameManager->_gameState._priorClass : 3;
+}
+
+void CTreeItem::setPassengerClass(int newClass) {
+ if (newClass >= 1 && newClass <= 4) {
+ // Change the passenger class
+ CGameManager *gameMan = getGameManager();
+ gameMan->_gameState._priorClass = gameMan->_gameState._passengerClass;
+ gameMan->_gameState._passengerClass = newClass;
+
+ // Setup the PET again, so the new class's PET background can take effect
+ CPetControl *petControl = getPetControl();
+ if (petControl)
+ petControl->setup();
+ }
}
} // End of namespace Titanic
diff --git a/engines/titanic/core/tree_item.h b/engines/titanic/core/tree_item.h
index 1dcaee552d..d893d6d9ce 100644
--- a/engines/titanic/core/tree_item.h
+++ b/engines/titanic/core/tree_item.h
@@ -284,7 +284,15 @@ public:
*/
int getPassengerClass() const;
- int getStateC() const;
+ /**
+ * Return the player's previous passenger class
+ */
+ int getPriorClass() const;
+
+ /**
+ * Set's the player's passenger class
+ */
+ void setPassengerClass(int newClass);
};
} // End of namespace Titanic
diff --git a/engines/titanic/game_state.cpp b/engines/titanic/game_state.cpp
index 2c751c0aa1..c552c69831 100644
--- a/engines/titanic/game_state.cpp
+++ b/engines/titanic/game_state.cpp
@@ -45,7 +45,7 @@ bool CGameStateMovieList::clear() {
CGameState::CGameState(CGameManager *gameManager) :
_gameManager(gameManager), _gameLocation(this),
- _passengerClass(0), _fieldC(0), _mode(GSMODE_UNSELECTED),
+ _passengerClass(0), _priorClass(0), _mode(GSMODE_UNSELECTED),
_field14(0), _petActive(false), _field1C(0), _quitGame(false),
_field24(0), _nodeChangeCtr(0), _nodeEnterTicks(0), _field38(0) {
}
@@ -53,7 +53,7 @@ CGameState::CGameState(CGameManager *gameManager) :
void CGameState::save(SimpleFile *file) const {
file->writeNumber(_petActive);
file->writeNumber(_passengerClass);
- file->writeNumber(_fieldC);
+ file->writeNumber(_priorClass);
file->writeNumber(_field14);
file->writeNumber(_field24);
file->writeNumber(_field38);
@@ -64,7 +64,7 @@ void CGameState::save(SimpleFile *file) const {
void CGameState::load(SimpleFile *file) {
_petActive = file->readNumber() != 0;
_passengerClass = file->readNumber();
- _fieldC = file->readNumber();
+ _priorClass = file->readNumber();
_field14 = file->readNumber();
_field24 = file->readNumber();
_field38 = file->readNumber();
diff --git a/engines/titanic/game_state.h b/engines/titanic/game_state.h
index ff39dc6752..65126120be 100644
--- a/engines/titanic/game_state.h
+++ b/engines/titanic/game_state.h
@@ -55,7 +55,7 @@ public:
CGameLocation _gameLocation;
CGameStateMovieList _movieList;
int _passengerClass;
- int _fieldC;
+ int _priorClass;
GameStateMode _mode;
int _field14;
bool _petActive;
diff --git a/engines/titanic/npcs/deskbot.cpp b/engines/titanic/npcs/deskbot.cpp
index dcd27466db..548738d930 100644
--- a/engines/titanic/npcs/deskbot.cpp
+++ b/engines/titanic/npcs/deskbot.cpp
@@ -110,7 +110,6 @@ bool CDeskbot::MovieEndMsg(CMovieEndMsg *msg) {
flag = true;
}
- bool flag = false;
if (_npcFlags & NPCFLAG_40000) {
_deskbotActive = false;
_npcFlags &= ~(NPCFLAG_40000 | NPCFLAG_20000);
@@ -155,7 +154,26 @@ bool CDeskbot::LeaveViewMsg(CLeaveViewMsg *msg) {
}
bool CDeskbot::TrueTalkTriggerActionMsg(CTrueTalkTriggerActionMsg *msg) {
- // TODO
+ switch (msg->_action) {
+ case 19:
+ inc54();
+ lockMouse();
+ setPetArea(PET_CONVERSATION);
+ playClip("ReprogramPETInHand", 4);
+ _npcFlags |= NPCFLAG_10000;
+ _field10C = msg->_param1;
+
+ switch (_field10C) {
+ case 1:
+ petDisplayMsg("You have been upgraded to 1st Class status. Enjoy hugely.");
+
+ break;
+ case 2:
+ petDisplayMsg("You have been upgraded to 2nd Class status. Enjoy.");
+ break;
+ }
+ }
+
return true;
}
diff --git a/engines/titanic/npcs/deskbot.h b/engines/titanic/npcs/deskbot.h
index 607255be57..8425f58f95 100644
--- a/engines/titanic/npcs/deskbot.h
+++ b/engines/titanic/npcs/deskbot.h
@@ -45,7 +45,7 @@ private:
static int _v2;
public:
bool _deskbotActive;
- bool _field10C;
+ int _field10C;
public:
CLASSDEF
CDeskbot();
diff --git a/engines/titanic/pet_control/pet_gfx_element.cpp b/engines/titanic/pet_control/pet_gfx_element.cpp
index 2686bd9ace..511fb5e4de 100644
--- a/engines/titanic/pet_control/pet_gfx_element.cpp
+++ b/engines/titanic/pet_control/pet_gfx_element.cpp
@@ -54,7 +54,7 @@ void CPetGfxElement::reset(const CString &name, CPetControl *petControl, PetElem
if (classNum >= 1 && classNum <= 3) {
numString = CString(classNum);
} else if (classNum == 4) {
- int stateC = petControl->getStateC();
+ int stateC = petControl->getPriorClass();
if (stateC == 1)
numString = CString(stateC);
}
diff --git a/engines/titanic/pet_control/pet_slider.cpp b/engines/titanic/pet_control/pet_slider.cpp
index 82b02af3fb..67f324aee1 100644
--- a/engines/titanic/pet_control/pet_slider.cpp
+++ b/engines/titanic/pet_control/pet_slider.cpp
@@ -202,7 +202,7 @@ void CPetSoundSlider::setupBackground2(const CString &name, CPetControl *petCont
if (mode <= 3) {
numStr = CString(mode);
} else if (mode == 4) {
- mode = petControl->getStateC();
+ mode = petControl->getPriorClass();
if (mode == 1) {
numStr = CString(mode);
}
@@ -220,7 +220,7 @@ void CPetSoundSlider::setupThumb2(const CString &name, CPetControl *petControl)
if (mode <= 3) {
numStr = CString(mode);
} else if (mode == 4) {
- mode = petControl->getStateC();
+ mode = petControl->getPriorClass();
if (mode == 1) {
numStr = CString(mode);
}