aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2014-04-10 06:49:15 +0300
committerEugene Sandulenko2014-04-10 06:49:15 +0300
commitb4d06ccfe0dde0d9399616a7c67d7bfea196e43f (patch)
tree6a42fa1d003267611cd785849e3ae466fe20e564
parentd991a139f056c52dd15ac2a931bfcca317273f94 (diff)
downloadscummvm-rg350-b4d06ccfe0dde0d9399616a7c67d7bfea196e43f.tar.gz
scummvm-rg350-b4d06ccfe0dde0d9399616a7c67d7bfea196e43f.tar.bz2
scummvm-rg350-b4d06ccfe0dde0d9399616a7c67d7bfea196e43f.zip
FULLPIPE: Implement ModalMainMenu::handleMessage()
-rw-r--r--engines/fullpipe/modal.cpp61
-rw-r--r--engines/fullpipe/modal.h8
2 files changed, 63 insertions, 6 deletions
diff --git a/engines/fullpipe/modal.cpp b/engines/fullpipe/modal.cpp
index 999bcc4544..46830fce35 100644
--- a/engines/fullpipe/modal.cpp
+++ b/engines/fullpipe/modal.cpp
@@ -753,7 +753,7 @@ ModalMainMenu::ModalMainMenu() {
_areas.clear();
_lastArea = 0;
- _mfield_C = 0;
+ _hoverAreaId = 0;
_mfield_34 = 0;
_scene = g_fp->accessScene(SC_MAINMENU);
_debugKeyCount = 0;
@@ -850,13 +850,70 @@ void ModalMainMenu::update() {
_scene->draw();
}
+bool ModalMainMenu::handleMessage(ExCommand *message) {
+ if (message->_messageKind != 17)
+ return false;
+
+ Common::Point point;
+
+ if (message->_messageNum == 29) {
+ point.x = message->_x;
+ point.y = message->_y;
+
+ int numarea = checkHover(point);
+
+ if (numarea >= 0) {
+ if (numarea == _menuSliderIdx) {
+ _lastArea = _areas[_menuSliderIdx];
+ _sliderOffset = _lastArea->picObjL->_ox - point.x;
+
+ return false;
+ }
+
+ if (numarea == _musicSliderIdx) {
+ _lastArea = _areas[_musicSliderIdx];
+ _sliderOffset = _lastArea->picObjL->_ox - point.x;
+
+ return false;
+ }
+
+ _hoverAreaId = _areas[numarea]->picIdL;
+ }
+
+ return false;
+ }
+
+ if (message->_messageNum == 30) {
+ if (_lastArea)
+ _lastArea = 0;
+
+ return false;
+ }
+
+ if (message->_messageNum != 36)
+ return false;
+
+ if (message->_keyCode == 27)
+ _hoverAreaId = PIC_MNU_CONTINUE_L;
+ else
+ enableDebugMenu(message->_keyCode);
+
+ return false;
+}
+
+int ModalMainMenu::checkHover(Common::Point &point) {
+ warning("STUB: ModalMainMenu::checkHover()");
+
+ return 0;
+}
+
bool ModalMainMenu::isSaveAllowed() {
warning("STUB: ModalMainMenu::isSaveAllowed()");
return true;
}
-void ModalMainMenu::enableDebugMenu(int objId, char c) {
+void ModalMainMenu::enableDebugMenu(char c) {
const char deb[] = "DEBUGER";
if (c == deb[_debugKeyCount]) {
diff --git a/engines/fullpipe/modal.h b/engines/fullpipe/modal.h
index 1530b6130a..b932b695b1 100644
--- a/engines/fullpipe/modal.h
+++ b/engines/fullpipe/modal.h
@@ -156,7 +156,7 @@ struct MenuArea {
class ModalMainMenu : public BaseModalObject {
public:
Scene *_scene;
- int _mfield_C;
+ int _hoverAreaId;
Common::Array<MenuArea *> _areas;
int _menuSliderIdx;
int _musicSliderIdx;
@@ -173,7 +173,7 @@ public:
virtual ~ModalMainMenu() {}
virtual bool pollEvent() { return true; }
- virtual bool handleMessage(ExCommand *message) { return false; }
+ virtual bool handleMessage(ExCommand *message);
virtual bool init(int counterdiff) { return true; }
virtual void update();
virtual void saveload() {}
@@ -182,8 +182,8 @@ private:
bool isSaveAllowed();
void enableDebugMenuButton();
void setSliderPos();
- void enableDebugMenu(int objId, char c);
-
+ void enableDebugMenu(char c);
+ int checkHover(Common::Point &point);
};
class ModalHelp : public BaseModalObject {