[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