aboutsummaryrefslogtreecommitdiff
path: root/engines/neverhood/scene.cpp
diff options
context:
space:
mode:
authorjohndoe1232011-07-09 18:45:51 +0000
committerWillem Jan Palenstijn2013-05-08 20:38:46 +0200
commit222cd4a6513770914d09630d1001a8159ba3d0f9 (patch)
treef8c9e71c549c9a9c6e41073d9b9d3c6c8729848a /engines/neverhood/scene.cpp
parent5c69ae21ddf535f862585a4fa5892a9a1146618f (diff)
downloadscummvm-rg350-222cd4a6513770914d09630d1001a8159ba3d0f9.tar.gz
scummvm-rg350-222cd4a6513770914d09630d1001a8159ba3d0f9.tar.bz2
scummvm-rg350-222cd4a6513770914d09630d1001a8159ba3d0f9.zip
NEVERHOOD: More work on Scene1001 and Klayman
- Fix a bug in Klayman's walking - The lever can now be used - Other stuff is still missing - Remove entity.cpp since it's not needed
Diffstat (limited to 'engines/neverhood/scene.cpp')
-rw-r--r--engines/neverhood/scene.cpp29
1 files changed, 15 insertions, 14 deletions
diff --git a/engines/neverhood/scene.cpp b/engines/neverhood/scene.cpp
index 9d7d550c2d..9e1f06bf0f 100644
--- a/engines/neverhood/scene.cpp
+++ b/engines/neverhood/scene.cpp
@@ -180,13 +180,13 @@ void Scene::update() {
if (_smkFileHash != 0) {
// TODO
//**** ALL TODO
- //_smackerPlayer = new SmackerPlayer(this, _smkFileHash, true, 0);
+ _smackerPlayer = new SmackerPlayer(_vm, this, _smkFileHash, true, 0);
_savedUpdateHandlerCb = _updateHandlerCb;
_savedMessageHandlerCb = _messageHandlerCb;
SetUpdateHandler(&Scene::smackerUpdate);
SetMessageHandler(&Scene::smackerHandleMessage);
_smackerDone = false;
- // smackerUpdate();
+ smackerUpdate();
// g_screen->smackerPlayer = _smackerPlayer;
_smkFileHash = 0;
} else {
@@ -219,7 +219,6 @@ void Scene::update() {
}
uint32 Scene::handleMessage(int messageNum, const MessageParam &param, Entity *sender) {
- // TODO
switch (messageNum) {
case 0: // mouse moved
#if 0
@@ -348,9 +347,8 @@ bool Scene::queryPositionRectList(int16 mouseX, int16 mouseY) {
}
}
}
- return true;
}
- return false;
+ return true;
}
void Scene::setMessageList(uint32 id, bool messageListFlag, bool systemCallbackFlag) {
@@ -358,6 +356,7 @@ void Scene::setMessageList(uint32 id, bool messageListFlag, bool systemCallbackF
}
void Scene::setMessageList(MessageList *messageList, bool messageListFlag, bool systemCallbackFlag) {
+ debug("Scene::setMessageList(%p)", (void*)messageList);
_messageList = messageList;
_messageListCount = _messageList ? _messageList->size() : 0;
_messageListIndex = 0;
@@ -366,6 +365,13 @@ void Scene::setMessageList(MessageList *messageList, bool messageListFlag, bool
_systemCallbackFlag = systemCallbackFlag;
_messageListStatus = 1;
_klayman->sendMessage(0x101C, 0, this);
+
+ // DEBUG: Show message list
+ for (uint i = 0; i < messageList->size(); i++) {
+ debug("%02d: %04X, %08X", i, (*messageList)[i].messageNum, (*messageList)[i].messageValue);
+ }
+ debug("================================================================");
+
}
bool Scene::setMessageList2(uint32 id, bool messageListFlag, bool systemCallbackFlag) {
@@ -404,24 +410,19 @@ bool Scene::setMessageList2(MessageList *messageList, bool messageListFlag, bool
}
_messageList2 = messageList;
setMessageList(messageList, messageListFlag, systemCallbackFlag);
+ result = true;
}
return result;
}
void Scene::runMessageList() {
+ debug("Scene::runMessageList() _messageListFlag2 = %d; _messageListFlag1 = %d", _messageListFlag2, _messageListFlag1);
- //debug("_messageListFlag2 = %d", _messageListFlag2);
-
- if (_messageListFlag2)
+ if (_messageListFlag2 || _messageListFlag1)
return;
_messageListFlag2 = true;
- if (_messageListFlag1) {
- _messageListFlag2 = false;
- return;
- }
-
if (!_messageList) {
_messageList2 = NULL;
_messageListStatus = 0;
@@ -433,7 +434,7 @@ void Scene::runMessageList() {
int messageNum = (*_messageList)[_messageListIndex].messageNum;
uint32 messageParam = (*_messageList)[_messageListIndex].messageValue;
- debug("$$$$$$$$$$$ Scene::runMessageList() %04X, %08X", messageNum, messageParam);
+ //debug("Scene::runMessageList() %04X, %08X", messageNum, messageParam);
_messageListIndex++;
if (_messageListIndex == _messageListCount) {