LAB: Rename fromCrumbs() to processEvent() and simplify it a bit

This commit is contained in:
Filippos Karapetis 2015-12-25 14:11:39 +02:00
parent 9239f4d774
commit 7f2b69b75c
3 changed files with 41 additions and 60 deletions

View file

@ -498,7 +498,7 @@ void LabEngine::mainGameLoop() {
gotMessage = true; gotMessage = true;
mayShowCrumbIndicator(); mayShowCrumbIndicator();
_graphics->screenUpdate(); _graphics->screenUpdate();
if (!fromCrumbs(kMessageButtonUp, code, 0, _event->updateAndGetMousePos(), curInv, curMsg, forceDraw, code, actionMode)) if (!processEvent(kMessageButtonUp, code, 0, _event->updateAndGetMousePos(), curInv, curMsg, forceDraw, code, actionMode))
break; break;
} }
} }
@ -508,7 +508,7 @@ void LabEngine::mainGameLoop() {
} else { } else {
gotMessage = true; gotMessage = true;
_followingCrumbs = false; _followingCrumbs = false;
if (!fromCrumbs(curMsg->_msgClass, curMsg->_code, curMsg->_qualifier, curMsg->_mouse, curInv, curMsg, forceDraw, curMsg->_code, actionMode)) if (!processEvent(curMsg->_msgClass, curMsg->_code, curMsg->_qualifier, curMsg->_mouse, curInv, curMsg, forceDraw, curMsg->_code, actionMode))
break; break;
} }
} }
@ -533,59 +533,46 @@ void LabEngine::showLab2Teaser() {
} }
} }
bool LabEngine::fromCrumbs(uint32 tmpClass, uint16 code, uint16 qualifier, Common::Point tmpPos, bool LabEngine::processEvent(MessageClass tmpClass, uint16 code, uint16 qualifier, Common::Point tmpPos,
uint16 &curInv, IntuiMessage *curMsg, bool &forceDraw, uint16 buttonId, uint16 &actionMode) { uint16 &curInv, IntuiMessage *curMsg, bool &forceDraw, uint16 buttonId, uint16 &actionMode) {
uint32 msgClass = tmpClass; MessageClass msgClass = tmpClass;
Common::Point curPos = tmpPos; Common::Point curPos = tmpPos;
uint16 oldDirection = 0; uint16 oldDirection = 0;
uint16 lastInv = kItemMap; uint16 lastInv = kItemMap;
bool leftButtonClick = false;
bool rightButtonClick = false; if (code == Common::KEYCODE_RETURN)
msgClass = kMessageLeftClick;
bool leftButtonClick = (msgClass == kMessageLeftClick);
bool rightButtonClick = (msgClass == kMessageRightClick);
_anim->_doBlack = false; _anim->_doBlack = false;
if (shouldQuit()) if (shouldQuit())
return false; return false;
if ((msgClass == kMessageRawKey) && !_graphics->_longWinInFront) { if (msgClass == kMessageRawKey && !_graphics->_longWinInFront) {
if (!processKey(curMsg, msgClass, qualifier, curPos, curInv, forceDraw, code)) if (!processKey(curMsg, msgClass, qualifier, curPos, curInv, forceDraw, code))
return false; return false;
} } else if ((msgClass == kMessageRawKey || leftButtonClick || rightButtonClick) && _graphics->_longWinInFront) {
_graphics->_longWinInFront = false;
leftButtonClick = (msgClass == kMessageLeftClick); _graphics->drawPanel();
rightButtonClick = (msgClass == kMessageRightClick); drawRoomMessage(curInv, _closeDataPtr);
_graphics->screenUpdate();
if (_graphics->_longWinInFront) { } else if (msgClass == kMessageButtonUp) {
if ((msgClass == kMessageRawKey) || (leftButtonClick || rightButtonClick)) { if (!_alternate)
_graphics->_longWinInFront = false; processMainButton(curInv, lastInv, oldDirection, forceDraw, buttonId, actionMode);
_graphics->drawPanel(); else
drawRoomMessage(curInv, _closeDataPtr); processAltButton(curInv, lastInv, buttonId, actionMode);
_graphics->screenUpdate();
}
} else if ((msgClass == kMessageButtonUp) && !_alternate) {
processMainButton(curInv, lastInv, oldDirection, forceDraw, buttonId, actionMode);
} else if ((msgClass == kMessageButtonUp) && _alternate) {
processAltButton(curInv, lastInv, buttonId, actionMode);
} else if (leftButtonClick && _mainDisplay) { } else if (leftButtonClick && _mainDisplay) {
interfaceOff(); interfaceOff();
_mainDisplay = true; _mainDisplay = true;
if (_closeDataPtr) { if (_closeDataPtr && _closeDataPtr->_closeUpType == SPECIALLOCK)
switch (_closeDataPtr->_closeUpType) { _tilePuzzle->mouseCombination(curPos);
case SPECIALLOCK: else if (_closeDataPtr && _closeDataPtr->_closeUpType == SPECIALBRICK)
if (_mainDisplay) _tilePuzzle->mouseTile(curPos);
_tilePuzzle->mouseCombination(curPos); else
break;
case SPECIALBRICK:
if (_mainDisplay)
_tilePuzzle->mouseTile(curPos);
break;
default:
performAction(actionMode, curPos, curInv);
break;
}
} else
performAction(actionMode, curPos, curInv); performAction(actionMode, curPos, curInv);
mayShowCrumbIndicator(); mayShowCrumbIndicator();
@ -610,7 +597,7 @@ bool LabEngine::fromCrumbs(uint32 tmpClass, uint16 code, uint16 qualifier, Commo
mayShowCrumbIndicator(); mayShowCrumbIndicator();
_graphics->screenUpdate(); _graphics->screenUpdate();
} else if (msgClass == kMessageMoveCursorToCloseup) { } else if (code == Common::KEYCODE_TAB) {
CloseDataPtr tmpClosePtr = _closeDataPtr; CloseDataPtr tmpClosePtr = _closeDataPtr;
// get next close-up in list after the one pointed to by curPos // get next close-up in list after the one pointed to by curPos
@ -623,13 +610,8 @@ bool LabEngine::fromCrumbs(uint32 tmpClass, uint16 code, uint16 qualifier, Commo
return true; return true;
} }
bool LabEngine::processKey(IntuiMessage *curMsg, uint32 &msgClass, uint16 &qualifier, Common::Point &curPos, uint16 &curInv, bool &forceDraw, uint16 code) { bool LabEngine::processKey(IntuiMessage *curMsg, uint32 msgClass, uint16 &qualifier, Common::Point &curPos, uint16 &curInv, bool &forceDraw, uint16 code) {
if (code == Common::KEYCODE_RETURN) { if ((getPlatform() == Common::kPlatformWindows) && (code == Common::KEYCODE_b)) {
// The return key
msgClass = kMessageLeftClick;
qualifier = 0;
curPos = _event->getMousePos();
} else if ((getPlatform() == Common::kPlatformWindows) && (code == Common::KEYCODE_b)) {
// Start bread crumbs // Start bread crumbs
_breadCrumbs[0]._roomNum = 0; _breadCrumbs[0]._roomNum = 0;
_numCrumbs = 0; _numCrumbs = 0;
@ -697,9 +679,7 @@ bool LabEngine::processKey(IntuiMessage *curMsg, uint32 &msgClass, uint16 &quali
forceDraw = true; forceDraw = true;
interfaceOn(); interfaceOn();
} else if (code == Common::KEYCODE_TAB) } else if (code == Common::KEYCODE_ESCAPE)
msgClass = kMessageMoveCursorToCloseup;
else if (code == Common::KEYCODE_ESCAPE)
_closeDataPtr = nullptr; _closeDataPtr = nullptr;
eatMessages(); eatMessages();
@ -734,6 +714,7 @@ void LabEngine::processMainButton(uint16 &curInv, uint16 &lastInv, uint16 &oldDi
drawStaticMessage(kTextTakeWhat + buttonId); drawStaticMessage(kTextTakeWhat + buttonId);
} }
break; break;
case kButtonInventory: case kButtonInventory:
eatMessages(); eatMessages();
@ -835,6 +816,7 @@ void LabEngine::processMainButton(uint16 &curInv, uint16 &lastInv, uint16 &oldDi
mayShowCrumbIndicator(); mayShowCrumbIndicator();
break; break;
case kButtonMap: case kButtonMap:
doUse(kItemMap); doUse(kItemMap);

View file

@ -38,14 +38,6 @@ namespace Lab {
class LabEngine; class LabEngine;
class Image; class Image;
enum MessageClass {
kMessageLeftClick,
kMessageRightClick,
kMessageButtonUp,
kMessageRawKey,
kMessageMoveCursorToCloseup
};
struct IntuiMessage { struct IntuiMessage {
MessageClass _msgClass; MessageClass _msgClass;
uint16 _code; // KeyCode or Button Id uint16 _code; // KeyCode or Button Id

View file

@ -114,6 +114,13 @@ enum MainButton {
kButtonMap kButtonMap
}; };
enum MessageClass {
kMessageLeftClick,
kMessageRightClick,
kMessageButtonUp,
kMessageRawKey
};
class LabEngine : public Engine { class LabEngine : public Engine {
private: private:
bool _interfaceOff; bool _interfaceOff;
@ -366,7 +373,7 @@ private:
MainButton followCrumbs(); MainButton followCrumbs();
void freeMapData(); void freeMapData();
void freeScreens(); void freeScreens();
bool fromCrumbs(uint32 tmpClass, uint16 code, uint16 qualifier, Common::Point tmpPos, bool processEvent(MessageClass tmpClass, uint16 code, uint16 qualifier, Common::Point tmpPos,
uint16 &curInv, IntuiMessage *curMsg, bool &forceDraw, uint16 buttonId, uint16 &actionMode); uint16 &curInv, IntuiMessage *curMsg, bool &forceDraw, uint16 buttonId, uint16 &actionMode);
/** /**
@ -469,7 +476,7 @@ private:
* Does the turn page wipe. * Does the turn page wipe.
*/ */
void turnPage(bool fromLeft); void turnPage(bool fromLeft);
bool processKey(IntuiMessage *curMsg, uint32 &msgClass, uint16 &qualifier, Common::Point &curPos, uint16 &curInv, bool &forceDraw, uint16 code); bool processKey(IntuiMessage *curMsg, uint32 msgClass, uint16 &qualifier, Common::Point &curPos, uint16 &curInv, bool &forceDraw, uint16 code);
void processMainButton(uint16 &curInv, uint16 &lastInv, uint16 &oldDirection, bool &forceDraw, uint16 buttonId, uint16 &actionMode); void processMainButton(uint16 &curInv, uint16 &lastInv, uint16 &oldDirection, bool &forceDraw, uint16 buttonId, uint16 &actionMode);
void processAltButton(uint16 &curInv, uint16 &lastInv, uint16 buttonId, uint16 &actionMode); void processAltButton(uint16 &curInv, uint16 &lastInv, uint16 buttonId, uint16 &actionMode);
void performAction(uint16 actionMode, Common::Point curPos, uint16 &curInv); void performAction(uint16 actionMode, Common::Point curPos, uint16 &curInv);