diff options
Diffstat (limited to 'engines/titanic/core')
| -rw-r--r-- | engines/titanic/core/background.cpp | 2 | ||||
| -rw-r--r-- | engines/titanic/core/game_object.cpp | 87 | ||||
| -rw-r--r-- | engines/titanic/core/game_object.h | 48 | ||||
| -rw-r--r-- | engines/titanic/core/saveable_object.cpp | 2 | ||||
| -rw-r--r-- | engines/titanic/core/tree_item.cpp | 2 | ||||
| -rw-r--r-- | engines/titanic/core/turn_on_turn_off.cpp | 4 | ||||
| -rw-r--r-- | engines/titanic/core/view_item.cpp | 2 |
7 files changed, 81 insertions, 66 deletions
diff --git a/engines/titanic/core/background.cpp b/engines/titanic/core/background.cpp index 9f22f1e992..d6419f23db 100644 --- a/engines/titanic/core/background.cpp +++ b/engines/titanic/core/background.cpp @@ -58,7 +58,7 @@ void CBackground::load(SimpleFile *file) { bool CBackground::StatusChangeMsg(CStatusChangeMsg *msg) { setVisible(true); if (_isBlocking) { - playMovie(_startFrame, _endFrame, MOVIE_GAMESTATE); + playMovie(_startFrame, _endFrame, MOVIE_WAIT_FOR_FINISH); } else { playMovie(_startFrame, _endFrame, 0); } diff --git a/engines/titanic/core/game_object.cpp b/engines/titanic/core/game_object.cpp index af7020532c..314746e496 100644 --- a/engines/titanic/core/game_object.cpp +++ b/engines/titanic/core/game_object.cpp @@ -56,26 +56,25 @@ void CGameObject::deinit() { CGameObject::CGameObject(): CNamedItem() { _bounds = Rect(0, 0, 15, 15); - _field34 = 0; - _field38 = 0; - _field3C = 0; + _unused1 = 0; + _unused2 = 0; + _unused3 = 0; _nonvisual = false; - _field44 = 0xF0; - _field48 = 0xF0; - _field4C = 0xFF; + _toggleR = 0xF0; + _toggleG = 0xF0; + _toggleB = 0xFF; _isPendingMail = false; _destRoomFlags = 0; _roomFlags = 0; _visible = true; - _field60 = 0; + _handleMouseFlag = false; _cursorId = CURSOR_ARROW; _initialFrame = 0; _frameNumber = -1; _text = nullptr; _textBorder = _textBorderRight = 0; - _field9C = 0; _surface = nullptr; - _fieldB8 = 0; + _unused4 = 0; } CGameObject::~CGameObject() { @@ -105,19 +104,19 @@ void CGameObject::save(SimpleFile *file, int indent) { file->writeNumberLine(getMovieFrame(), indent + 1); file->writeNumberLine(_cursorId, indent + 1); _movieClips.save(file, indent + 1); - file->writeNumberLine(_field60, indent + 1); + file->writeNumberLine(_handleMouseFlag, indent + 1); file->writeNumberLine(_nonvisual, indent + 1); file->writeQuotedLine(_resource, indent + 1); file->writeBounds(_bounds, indent + 1); - file->writeFloatLine(_field34, indent + 1); - file->writeFloatLine(_field38, indent + 1); - file->writeFloatLine(_field3C, indent + 1); + file->writeFloatLine(_unused1, indent + 1); + file->writeFloatLine(_unused2, indent + 1); + file->writeFloatLine(_unused3, indent + 1); - file->writeNumberLine(_field44, indent + 1); - file->writeNumberLine(_field48, indent + 1); - file->writeNumberLine(_field4C, indent + 1); - file->writeNumberLine(_fieldB8, indent + 1); + file->writeNumberLine(_toggleR, indent + 1); + file->writeNumberLine(_toggleG, indent + 1); + file->writeNumberLine(_toggleB, indent + 1); + file->writeNumberLine(_unused4, indent + 1); file->writeNumberLine(_visible, indent + 1); file->writeNumberLine(_isPendingMail, indent + 1); file->writeNumberLine(_destRoomFlags, indent + 1); @@ -153,7 +152,7 @@ void CGameObject::load(SimpleFile *file) { // Deliberate fall-through case 4: - _field60 = file->readNumber(); + _handleMouseFlag = file->readNumber(); // Deliberate fall-through case 3: @@ -166,13 +165,13 @@ void CGameObject::load(SimpleFile *file) { case 1: _bounds = file->readBounds(); - _field34 = file->readFloat(); - _field38 = file->readFloat(); - _field3C = file->readFloat(); - _field44 = file->readNumber(); - _field48 = file->readNumber(); - _field4C = file->readNumber(); - _fieldB8 = file->readNumber(); + _unused1 = file->readFloat(); + _unused2 = file->readFloat(); + _unused3 = file->readFloat(); + _toggleR = file->readNumber(); + _toggleG = file->readNumber(); + _toggleB = file->readNumber(); + _unused4 = file->readNumber(); _visible = file->readNumber() != 0; _isPendingMail = file->readNumber(); _destRoomFlags = file->readNumber(); @@ -543,15 +542,11 @@ void CGameObject::setGlobalSoundVolume(int mode, uint seconds, int handleIndex) } } -void CGameObject::sound8(bool flag) const { - getGameManager()->_sound.stopChannel(flag ? 3 : 0); +void CGameObject::stopSoundChannel(bool channel3) { + getGameManager()->_sound.stopChannel(channel3 ? 3 : 0); } void CGameObject::setVisible(bool val) { - if (_name.contains("ylinder")) { - warning("TODO"); - } - if (val != _visible) { _visible = val; makeDirty(); @@ -611,7 +606,7 @@ void CGameObject::playMovie(uint flags) { CGameObject *obj = (flags & MOVIE_NOTIFY_OBJECT) ? this : nullptr; if (_surface) { _surface->playMovie(flags, obj); - if (flags & MOVIE_GAMESTATE) + if (flags & MOVIE_WAIT_FOR_FINISH) getGameManager()->_gameState.addMovie(_surface->_movie); } } @@ -627,7 +622,7 @@ void CGameObject::playMovie(int startFrame, int endFrame, uint flags) { CGameObject *obj = (flags & MOVIE_NOTIFY_OBJECT) ? this : nullptr; if (_surface) { _surface->playMovie(startFrame, endFrame, flags, obj); - if (flags & MOVIE_GAMESTATE) + if (flags & MOVIE_WAIT_FOR_FINISH) getGameManager()->_gameState.addMovie(_surface->_movie); } } @@ -644,7 +639,7 @@ void CGameObject::playMovie(int startFrame, int endFrame, int initialFrame, uint CGameObject *obj = (flags & MOVIE_NOTIFY_OBJECT) ? this : nullptr; if (_surface) { _surface->playMovie(startFrame, endFrame, initialFrame, flags, obj); - if (flags & MOVIE_GAMESTATE) + if (flags & MOVIE_WAIT_FOR_FINISH) getGameManager()->_gameState.addMovie(_surface->_movie); } } @@ -1058,12 +1053,12 @@ bool CGameObject::stateGetParrotMet() const { return getGameManager()->_gameState.getParrotMet(); } -void CGameObject::stateInc38() { - getGameManager()->_gameState.inc38(); +void CGameObject::incParrotResponse() { + getGameManager()->_gameState.incParrotResponse(); } -int CGameObject::stateGet38() const { - return getGameManager()->_gameState._field38; +int CGameObject::getParrotResponse() const { + return getGameManager()->_gameState._parrotResponseIndex; } void CGameObject::quitGame() { @@ -1373,11 +1368,11 @@ void CGameObject::createCredits() { _credits->load(this, screenManager, _bounds); } -void CGameObject::fn10(int v1, int v2, int v3) { +void CGameObject::setToggleColor(byte r, byte g, byte b) { makeDirty(); - _field44 = v1; - _field48 = v2; - _field4C = v3; + _toggleR = r; + _toggleG = g; + _toggleB = b; } void CGameObject::movieSetAudioTiming(bool flag) { @@ -1429,8 +1424,8 @@ bool CGameObject::compareRoomFlags(RoomFlagsComparison compareType, uint flags1, } } -void CGameObject::setState1C(bool flag) { - getGameManager()->_gameState._field1C = flag; +void CGameObject::stateSetSoundMakerAllowed(bool flag) { + getGameManager()->_gameState._soundMakerAllowed = flag; } void CGameObject::addMail(uint destRoomFlags) { @@ -1648,9 +1643,9 @@ void CGameObject::starFn1(int v) { starControl->fn1(v); } -bool CGameObject::starFn2() { +bool CGameObject::starIsSolved() const { CStarControl *starControl = getStarControl(); - return starControl ? starControl->fn4() : false; + return starControl ? starControl->isSolved() : false; } /*------------------------------------------------------------------------*/ diff --git a/engines/titanic/core/game_object.h b/engines/titanic/core/game_object.h index a56095c60f..b214cf8c9e 100644 --- a/engines/titanic/core/game_object.h +++ b/engines/titanic/core/game_object.h @@ -77,13 +77,11 @@ private: protected: static CCreditText *_credits; protected: - double _field34; - double _field38; - double _field3C; + double _unused1; + double _unused2; + double _unused3; bool _nonvisual; - int _field44; - int _field48; - int _field4C; + byte _toggleR, _toggleG, _toggleB; CMovieClipList _movieClips; int _initialFrame; CMovieRangeInfoList _movieRangeInfoList; @@ -91,11 +89,10 @@ protected: CTextControl *_text; uint _textBorder; uint _textBorderRight; - int _field9C; Common::Point _savedPos; CVideoSurface *_surface; CString _resource; - int _fieldB8; + int _unused4; protected: /** * Saves the current position the object is located at @@ -277,7 +274,10 @@ protected: */ void setGlobalSoundVolume(int mode, uint seconds, int handleIndex); - void sound8(bool flag) const; + /** + * Stops sound channel 3 or 0 + */ + void stopSoundChannel(bool channel3); /** * Adds a timer @@ -462,7 +462,11 @@ protected: */ void setPassengerClass(PassengerClass newClass); - void fn10(int v1, int v2, int v3); + /** + * Sets color RGB for toggles + * @remarks The color set isn't actually used anywhere + */ + void setToggleColor(byte r, byte g, byte b); /** * Gets the duration of a specified clip in milliseconds @@ -523,7 +527,7 @@ public: bool _isPendingMail; uint _destRoomFlags; uint _roomFlags; - int _field60; + bool _handleMouseFlag; CursorId _cursorId; bool _visible; public: @@ -942,7 +946,11 @@ public: CStarControl *getStarControl() const; void starFn1(int v); - bool starFn2(); + + /** + * Returns true if the starmap puzzle has been solved + */ + bool starIsSolved() const; /*--- CTrueTalkManager Methods ---*/ @@ -987,7 +995,10 @@ public: /*--- CGameState Methods ---*/ - void setState1C(bool flag); + /** + * Sets whether a background sound maker is allowed for the rooms if available + */ + void stateSetSoundMakerAllowed(bool flag); /** * Change to the next season @@ -1009,8 +1020,15 @@ public: */ bool stateGetParrotMet() const; - void stateInc38(); - int stateGet38() const; + /** + * Moves the parrot to the next idle response + */ + void incParrotResponse(); + + /** + * Gets the index to use for parrot idle responses + */ + int getParrotResponse() const; /** * Gets the game state node changed counter diff --git a/engines/titanic/core/saveable_object.cpp b/engines/titanic/core/saveable_object.cpp index 8bb8a92b7f..0257f6a087 100644 --- a/engines/titanic/core/saveable_object.cpp +++ b/engines/titanic/core/saveable_object.cpp @@ -955,6 +955,7 @@ DEFFN(CUseWithCharMsg); DEFFN(CUseWithOtherMsg); DEFFN(CVirtualKeyCharMsg); DEFFN(CVisibleMsg); +DEFFN(CCheckCodeWheelsMsg); DEFFN(CEnterBombRoom); DEFFN(CEnterBridge); @@ -1538,6 +1539,7 @@ void CSaveableObject::initClassList() { ADDFN(CUseWithOtherMsg, CMessage); ADDFN(CVirtualKeyCharMsg, CMessage); ADDFN(CVisibleMsg, CMessage); + ADDFN(CCheckCodeWheelsMsg, CMessage); ADDFN(CMovePlayerTo, CGameObject); ADDFN(CMovePlayerToFrom, CGameObject); diff --git a/engines/titanic/core/tree_item.cpp b/engines/titanic/core/tree_item.cpp index 97d06d7bbe..b9b9aca67f 100644 --- a/engines/titanic/core/tree_item.cpp +++ b/engines/titanic/core/tree_item.cpp @@ -274,7 +274,7 @@ CNamedItem *CTreeItem::findByName(const CString &name, bool subMatch) { itemName.toLowercase(); if (subMatch) { - if (itemName.left(name.size()).compareTo(nameLower)) + if (!itemName.left(nameLower.size()).compareTo(nameLower)) return dynamic_cast<CNamedItem *>(treeItem); } else { if (!itemName.compareTo(nameLower)) diff --git a/engines/titanic/core/turn_on_turn_off.cpp b/engines/titanic/core/turn_on_turn_off.cpp index a6051c7c6f..3c1e623b6e 100644 --- a/engines/titanic/core/turn_on_turn_off.cpp +++ b/engines/titanic/core/turn_on_turn_off.cpp @@ -58,7 +58,7 @@ void CTurnOnTurnOff::load(SimpleFile *file) { bool CTurnOnTurnOff::TurnOn(CTurnOn *msg) { if (!_isOn) { if (_isBlocking) - playMovie(_startFrameOn, _endFrameOn, MOVIE_GAMESTATE); + playMovie(_startFrameOn, _endFrameOn, MOVIE_WAIT_FOR_FINISH); else playMovie(_startFrameOn, _endFrameOn, MOVIE_NOTIFY_OBJECT); _isOn = true; @@ -70,7 +70,7 @@ bool CTurnOnTurnOff::TurnOn(CTurnOn *msg) { bool CTurnOnTurnOff::TurnOff(CTurnOff *msg) { if (_isOn) { if (_isBlocking) - playMovie(_startFrameOff, _endFrameOff, MOVIE_GAMESTATE); + playMovie(_startFrameOff, _endFrameOff, MOVIE_WAIT_FOR_FINISH); else playMovie(_startFrameOff, _endFrameOff, MOVIE_NOTIFY_OBJECT); _isOn = false; diff --git a/engines/titanic/core/view_item.cpp b/engines/titanic/core/view_item.cpp index 9109bcc5b2..15d187e194 100644 --- a/engines/titanic/core/view_item.cpp +++ b/engines/titanic/core/view_item.cpp @@ -260,7 +260,7 @@ bool CViewItem::handleMouseMsg(CMouseMsg *msg, bool flag) { CGameObject *gameObject = dynamic_cast<CGameObject *>(treeItem); if (gameObject) { if (gameObject->checkPoint(msg->_mousePos, false, true) && - (!flag || !gameObject->_field60)) { + (!flag || !gameObject->_handleMouseFlag)) { if (gameObjects.size() < 256) gameObjects.push_back(gameObject); } |
