[Scummvm-git-logs] scummvm master -> f666cc5601c7cf29e630b2745c2122207d653b7a
dreammaster
noreply at scummvm.org
Fri Feb 14 05:40:00 UTC 2025
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
f666cc5601 M4: RIDDLE: Implement Options Menu scrolling toggle button
Commit: f666cc5601c7cf29e630b2745c2122207d653b7a
https://github.com/scummvm/scummvm/commit/f666cc5601c7cf29e630b2745c2122207d653b7a
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-02-13T21:39:48-08:00
Commit Message:
M4: RIDDLE: Implement Options Menu scrolling toggle button
Changed paths:
engines/m4/gui/gui_menu_items.cpp
engines/m4/gui/gui_menu_items.h
engines/m4/riddle/gui/game_menu.cpp
diff --git a/engines/m4/gui/gui_menu_items.cpp b/engines/m4/gui/gui_menu_items.cpp
index eeadd92cf8e..f69f02928b6 100644
--- a/engines/m4/gui/gui_menu_items.cpp
+++ b/engines/m4/gui/gui_menu_items.cpp
@@ -860,6 +860,7 @@ void menuItemButton::drawButton(menuItemButton *myItem, guiMenu *myMenu, int32 x
}
break;
+ /** ORION BURGER BUTTON TYPES **/
case BTN_TYPE_SL_SAVE:
switch (myItem->itemFlags) {
case BTN_STATE_NORM:
@@ -975,6 +976,40 @@ void menuItemButton::drawButton(menuItemButton *myItem, guiMenu *myMenu, int32 x
break;
}
break;
+
+ /** RIDDLE BUTTON TYPES **/
+ case BTN_TYPE_OM_SCROLLING_ON:
+ switch (myItem->itemFlags) {
+ case BTN_STATE_OVER:
+ mySprite = _GM(menuSprites)[Riddle::GUI::OM_SCROLLING_ON_BTN_OVER];
+ break;
+ case BTN_STATE_PRESS:
+ mySprite = _GM(menuSprites)[Riddle::GUI::OM_SCROLLING_ON_BTN_PRESS];
+ break;
+ case BTN_STATE_NORM:
+ default:
+ mySprite = _GM(menuSprites)[Riddle::GUI::OM_SCROLLING_ON_BTN_NORM];
+ break;
+ }
+ break;
+
+ case BTN_TYPE_OM_SCROLLING_OFF:
+ switch (myItem->itemFlags) {
+ case BTN_STATE_OVER:
+ mySprite = _GM(menuSprites)[Riddle::GUI::OM_SCROLLING_OFF_BTN_OVER];
+ break;
+ case BTN_STATE_PRESS:
+ mySprite = _GM(menuSprites)[Riddle::GUI::OM_SCROLLING_OFF_BTN_PRESS];
+ break;
+ case BTN_STATE_NORM:
+ default:
+ mySprite = _GM(menuSprites)[Riddle::GUI::OM_SCROLLING_OFF_BTN_NORM];
+ break;
+ }
+ break;
+
+ default:
+ break;
}
// Get the menu buffer
@@ -1070,6 +1105,11 @@ bool menuItemButton::handler(menuItemButton *myItem, int32 eventType, int32 even
if (menuItem::cursorInsideItem(myItem, x, y)) {
if (*currItem) {
execCallback = true;
+
+ if (myItem->buttonType == BTN_TYPE_OM_SCROLLING_ON)
+ myItem->buttonType = BTN_TYPE_OM_SCROLLING_OFF;
+ else if (myItem->buttonType == BTN_TYPE_OM_SCROLLING_OFF)
+ myItem->buttonType = BTN_TYPE_OM_SCROLLING_ON;
} else {
*currItem = myItem;
}
@@ -1117,7 +1157,9 @@ bool menuItemButton::handler(menuItemButton *myItem, int32 eventType, int32 even
// See if we need to call the callback function
if (execCallback && myItem->callback) {
- // digi_play(inv_click_snd, 2, 255, -1, inv_click_snd_room_lock);
+ if (IS_RIDDLE)
+ digi_play("950_s51", 2, 255, -1, 950);
+
currMenu = myItem->myMenu;
currTag = myItem->tag;
_GM(buttonClosesDialog) = false;
diff --git a/engines/m4/gui/gui_menu_items.h b/engines/m4/gui/gui_menu_items.h
index 5571374946f..52a1b345511 100644
--- a/engines/m4/gui/gui_menu_items.h
+++ b/engines/m4/gui/gui_menu_items.h
@@ -114,6 +114,41 @@ constexpr int SL_THUMBNAIL_H = 162;
} // namespace GUI
} // namespace Burger
+namespace Riddle {
+namespace GUI {
+
+enum options_menu_sprites {
+ OM_DIALOG_BOX,
+
+ OM_SCROLLING_ON_BTN_NORM = 8,
+ OM_SCROLLING_ON_BTN_OVER = 9,
+ OM_SCROLLING_ON_BTN_PRESS = 13,
+
+ OM_SCROLLING_OFF_BTN_NORM = 11,
+ OM_SCROLLING_OFF_BTN_OVER = 12,
+ OM_SCROLLING_OFF_BTN_PRESS = 10,
+#if 0
+ OM_SLIDER_BTN_NORM,
+ OM_SLIDER_BTN_OVER,
+ OM_SLIDER_BTN_PRESS,
+
+ OM_SLIDER_BAR,
+
+ OM_DONE_BTN_GREY,
+ OM_DONE_BTN_NORM,
+ OM_DONE_BTN_OVER,
+ OM_DONE_BTN_PRESS,
+
+ OM_CANCEL_BTN_NORM,
+ OM_CANCEL_BTN_OVER,
+ OM_CANCEL_BTN_PRESS,
+#endif
+ OM_TOTAL_SPRITES = 14
+};
+
+} // namespace GUI
+} // namespace Riddle
+
namespace GUI {
#define _GM(X) ::M4::g_vars->_menu.X
@@ -212,19 +247,17 @@ public:
enum button_types {
BTN_TYPE_GM_GENERIC,
- // Riddle
- BTN_TYPE_OM_SCROLLING_ON = 1,
- BTN_TYPE_OM_SCROLLING_OFF = 2,
-
// Burger
- BTN_TYPE_SL_SAVE = 1,
- BTN_TYPE_SL_LOAD = 2,
- BTN_TYPE_SL_CANCEL = 3,
- BTN_TYPE_SL_TEXT = 4,
- BTN_TYPE_OM_DONE = 5,
- BTN_TYPE_OM_CANCEL = 6,
-
- BTN_TYPE_TOTAL_NUMBER
+ BTN_TYPE_SL_SAVE,
+ BTN_TYPE_SL_LOAD,
+ BTN_TYPE_SL_CANCEL,
+ BTN_TYPE_SL_TEXT,
+ BTN_TYPE_OM_DONE,
+ BTN_TYPE_OM_CANCEL,
+
+ // Riddle
+ BTN_TYPE_OM_SCROLLING_ON,
+ BTN_TYPE_OM_SCROLLING_OFF
};
int32 itemFlags = 0;
diff --git a/engines/m4/riddle/gui/game_menu.cpp b/engines/m4/riddle/gui/game_menu.cpp
index 4a78068274e..339e8629b81 100644
--- a/engines/m4/riddle/gui/game_menu.cpp
+++ b/engines/m4/riddle/gui/game_menu.cpp
@@ -208,7 +208,6 @@ void GameMenu::cbLoad(void *, void *) {
#define OPTIONS_MENU_X 212
#define OPTIONS_MENU_Y 160
-#define OPTIONS_MENU_SPRITE 0
#define OM_TAG_GAMEMENU 1
#define OM_GAMEMENU_X 14
@@ -224,10 +223,10 @@ void GameMenu::cbLoad(void *, void *) {
void OptionsMenu::show() {
// Load in the options menu sprites
- if (!guiMenu::loadSprites("opmenu", GM_TOTAL_SPRITES))
+ if (!guiMenu::loadSprites("opmenu", OM_TOTAL_SPRITES))
error("Error loading opmenu");
- _GM(opMenu) = guiMenu::create(_GM(menuSprites)[OPTIONS_MENU_SPRITE],
+ _GM(opMenu) = guiMenu::create(_GM(menuSprites)[OM_DIALOG_BOX],
OPTIONS_MENU_X, OPTIONS_MENU_Y, MENU_DEPTH | SF_GET_ALL | SF_BLOCK_ALL | SF_IMMOVABLE);
if (!_GM(opMenu)) {
return;
@@ -239,7 +238,7 @@ void OptionsMenu::show() {
menuItemButton::add(_GM(opMenu), OM_TAG_GAMEMENU,
- OM_SCROLLING_X, OM_SCROLLING_Y, OM_SCROLLING_W, OM_SCROLLING_H, cbGameMenu,
+ OM_SCROLLING_X, OM_SCROLLING_Y, OM_SCROLLING_W, OM_SCROLLING_H, (CALLBACK)cbScrolling,
_G(kernel).cameraPans() ? menuItemButton::BTN_TYPE_OM_SCROLLING_ON :
menuItemButton::BTN_TYPE_OM_SCROLLING_OFF);
More information about the Scummvm-git-logs
mailing list