diff options
author | Paul Gilbert | 2016-05-28 21:42:18 -0400 |
---|---|---|
committer | Paul Gilbert | 2016-07-15 19:16:43 -0400 |
commit | 421812f27c59e53e68dfbaa777284c74a8fb7938 (patch) | |
tree | 0ca956f0212727260a7edb41272f1bbaa1bcf704 | |
parent | a7ecc6d601f1beabd0f5538d5e1cd7d6e983d2b9 (diff) | |
download | scummvm-rg350-421812f27c59e53e68dfbaa777284c74a8fb7938.tar.gz scummvm-rg350-421812f27c59e53e68dfbaa777284c74a8fb7938.tar.bz2 scummvm-rg350-421812f27c59e53e68dfbaa777284c74a8fb7938.zip |
TITANIC: More implementing deskbot message handlers
-rw-r--r-- | engines/titanic/core/tree_item.cpp | 18 | ||||
-rw-r--r-- | engines/titanic/core/tree_item.h | 10 | ||||
-rw-r--r-- | engines/titanic/game_state.cpp | 6 | ||||
-rw-r--r-- | engines/titanic/game_state.h | 2 | ||||
-rw-r--r-- | engines/titanic/npcs/deskbot.cpp | 22 | ||||
-rw-r--r-- | engines/titanic/npcs/deskbot.h | 2 | ||||
-rw-r--r-- | engines/titanic/pet_control/pet_gfx_element.cpp | 2 | ||||
-rw-r--r-- | engines/titanic/pet_control/pet_slider.cpp | 4 |
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); } |