diff options
Diffstat (limited to 'engines/titanic/core/game_object.cpp')
-rw-r--r-- | engines/titanic/core/game_object.cpp | 56 |
1 files changed, 31 insertions, 25 deletions
diff --git a/engines/titanic/core/game_object.cpp b/engines/titanic/core/game_object.cpp index 8f71b3d995..76a2f2d5c0 100644 --- a/engines/titanic/core/game_object.cpp +++ b/engines/titanic/core/game_object.cpp @@ -403,8 +403,11 @@ void CGameObject::loadImage(const CString &name, bool pendingFlag) { void CGameObject::loadFrame(int frameNumber) { _frameNumber = -1; - if (!_resource.empty()) + + if (!_surface && !_resource.empty()) { loadResource(_resource); + _resource.clear(); + } if (_surface) _surface->setMovieFrame(frameNumber); @@ -612,9 +615,8 @@ void CGameObject::playMovie(uint flags) { void CGameObject::playMovie(int startFrame, int endFrame, uint flags) { _frameNumber = -1; - if (!_surface) { - if (!_resource.empty()) - loadResource(_resource); + if (!_surface && !_resource.empty()) { + loadResource(_resource); _resource.clear(); } @@ -630,9 +632,8 @@ void CGameObject::playMovie(int startFrame, int endFrame, uint flags) { void CGameObject::playMovie(int startFrame, int endFrame, int initialFrame, uint flags) { _frameNumber = -1; - if (!_surface) { - if (!_resource.empty()) - loadResource(_resource); + if (!_surface && !_resource.empty()) { + loadResource(_resource); _resource.clear(); } @@ -645,6 +646,8 @@ void CGameObject::playMovie(int startFrame, int endFrame, int initialFrame, uint } void CGameObject::playClip(const CString &name, uint flags) { + debugC(ERROR_DETAILED, kDebugScripts, "playClip - %s", name.c_str()); + _frameNumber = -1; CMovieClip *clip = _movieClips.findByName(name); if (clip) @@ -652,6 +655,8 @@ void CGameObject::playClip(const CString &name, uint flags) { } void CGameObject::playClip(uint startFrame, uint endFrame) { + debugC(ERROR_DETAILED, kDebugScripts, "playClip - %d to %d", startFrame, endFrame); + CMovieClip *clip = new CMovieClip("", startFrame, endFrame); CGameManager *gameManager = getGameManager(); CRoomItem *room = gameManager->getRoom(); @@ -753,7 +758,7 @@ int CGameObject::playSound(const CString &name, CProximity &prox) { if (gameManager && !name.empty()) { g_vm->_filesManager->preload(name); - gameManager->_sound.playSound(name, prox); + return gameManager->_sound.playSound(name, prox); } return -1; @@ -864,7 +869,8 @@ CViewItem *CGameObject::parseView(const CString &viewString) { if (project) { if (room->getName() != roomName) { // Scan for the correct room - for (room = project->findFirstRoom(); room && room->getName() != roomName; + for (room = project->findFirstRoom(); + room && room->getName() != roomName; room = project->findNextRoom(room)) ; } } @@ -912,12 +918,12 @@ Point CGameObject::getMousePos() const { } bool CGameObject::compareViewNameTo(const CString &name) const { - return getViewFullName().compareToIgnoreCase(name); + return !getViewFullName().compareToIgnoreCase(name); } int CGameObject::compareRoomNameTo(const CString &name) { CRoomItem *room = getGameManager()->getRoom(); - return room->getName().compareToIgnoreCase(name); + return !room->getName().compareToIgnoreCase(name); } CString CGameObject::getRoomName() const { @@ -1142,11 +1148,11 @@ void CGameObject::lockMouse() { } void CGameObject::hideMouse() { - CScreenManager::_screenManagerPtr->_mouseCursor->hide(); + CScreenManager::_screenManagerPtr->_mouseCursor->incHideCounter(); } void CGameObject::showMouse() { - CScreenManager::_screenManagerPtr->_mouseCursor->show(); + CScreenManager::_screenManagerPtr->_mouseCursor->decHideCounter(); } void CGameObject::disableMouse() { @@ -1159,12 +1165,12 @@ void CGameObject::enableMouse() { showMouse(); } -void CGameObject::mouseLockE4() { - CScreenManager::_screenManagerPtr->_mouseCursor->lockE4(); +void CGameObject::mouseDisableControl() { + CScreenManager::_screenManagerPtr->_mouseCursor->disableControl(); } -void CGameObject::mouseUnlockE4() { - CScreenManager::_screenManagerPtr->_mouseCursor->unlockE4(); +void CGameObject::mouseEnableControl() { + CScreenManager::_screenManagerPtr->_mouseCursor->enableControl(); } void CGameObject::mouseSetPosition(const Point &pt, double rate) { @@ -1330,17 +1336,17 @@ CMusicRoom *CGameObject::getMusicRoom() const { return gameManager ? &gameManager->_musicRoom : nullptr; } -int CGameObject::getPassengerClass() const { +PassengerClass CGameObject::getPassengerClass() const { CGameManager *gameManager = getGameManager(); - return gameManager ? gameManager->_gameState._passengerClass : 3; + return gameManager ? gameManager->_gameState._passengerClass : THIRD_CLASS; } -int CGameObject::getPriorClass() const { +PassengerClass CGameObject::getPriorClass() const { CGameManager *gameManager = getGameManager(); - return gameManager ? gameManager->_gameState._priorClass : 3; + return gameManager ? gameManager->_gameState._priorClass : THIRD_CLASS; } -void CGameObject::setPassengerClass(int newClass) { +void CGameObject::setPassengerClass(PassengerClass newClass) { if (newClass >= 1 && newClass <= 4) { // Change the passenger class CGameManager *gameMan = getGameManager(); @@ -1575,7 +1581,7 @@ void CGameObject::petMoveToHiddenRoom() { } } -void CGameObject::petReassignRoom(int passClassNum) { +void CGameObject::petReassignRoom(PassengerClass passClassNum) { CPetControl *petControl = getPetControl(); if (petControl) petControl->reassignRoom(passClassNum); @@ -1607,7 +1613,7 @@ void CGameObject::petSetRooms1D4(int v) { void CGameObject::petOnSummonBot(const CString &name, int val) { CPetControl *pet = getPetControl(); if (pet) - pet->summonBot(name, val); + pet->onSummonBot(name, val); } void CGameObject::petUnlockInput() { @@ -1654,7 +1660,7 @@ void CGameObject::startTalking(CTrueTalkNPC *npc, uint id, CViewItem *view) { } } -void CGameObject::endTalking(CTrueTalkNPC *npc, bool viewFlag, CViewItem *view) { +void CGameObject::setTalking(CTrueTalkNPC *npc, bool viewFlag, CViewItem *view) { CPetControl *pet = getPetControl(); if (pet) pet->setActiveNPC(npc); |