[Scummvm-git-logs] scummvm master -> edb10775a08f3e5918d9b6dba83219f3b1ea0131
dreammaster
noreply at scummvm.org
Sun Feb 16 05:32:58 UTC 2025
This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
37451dbec4 M4: RIDDLE: Move save load menu constants into SaveLoadMenuBase
e4e0bd10a8 M4: RIDDLE: Figuring out Riddle saveload constants
edb10775a0 M4: RIDDLE: Further work on save/load menu display
Commit: 37451dbec4db86f777c003ed229db6e0e0c6318b
https://github.com/scummvm/scummvm/commit/37451dbec4db86f777c003ed229db6e0e0c6318b
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-02-15T21:32:45-08:00
Commit Message:
M4: RIDDLE: Move save load menu constants into SaveLoadMenuBase
Changed paths:
engines/m4/burger/gui/game_menu.cpp
engines/m4/gui/game_menu.cpp
engines/m4/gui/game_menu.h
engines/m4/gui/gui_menu_items.cpp
engines/m4/gui/gui_menu_items.h
engines/m4/riddle/gui/game_menu.cpp
engines/m4/vars.cpp
diff --git a/engines/m4/burger/gui/game_menu.cpp b/engines/m4/burger/gui/game_menu.cpp
index 82b24207cc1..f0a5cc654e8 100644
--- a/engines/m4/burger/gui/game_menu.cpp
+++ b/engines/m4/burger/gui/game_menu.cpp
@@ -29,6 +29,7 @@
#include "m4/core/errors.h"
#include "m4/core/imath.h"
#include "m4/gui/gui_event.h"
+#include "m4/gui/gui_menu_items.h"
#include "m4/gui/hotkeys.h"
#include "m4/graphics/gr_line.h"
#include "m4/graphics/gr_sprite.h"
@@ -528,7 +529,7 @@ void SaveLoadMenu::show(RGB8 *myPalette, bool saveMenu) {
CompactMem();
// Load in the game menu sprites
- if (!guiMenu::loadSprites("slmenu", SL_TOTAL_SPRITES)) {
+ if (!guiMenu::loadSprites("slmenu", GUI::SaveLoadMenuBase::SL_TOTAL_SPRITES)) {
return;
}
@@ -539,7 +540,7 @@ void SaveLoadMenu::show(RGB8 *myPalette, bool saveMenu) {
_GM(thumbIndex) = 100;
_GM(currMenuIsSave) = saveMenu;
- _GM(slMenu) = guiMenu::create(_GM(menuSprites)[SL_DIALOG_BOX], SAVE_LOAD_MENU_X, SAVE_LOAD_MENU_Y,
+ _GM(slMenu) = guiMenu::create(_GM(menuSprites)[GUI::SaveLoadMenuBase::SL_DIALOG_BOX], SAVE_LOAD_MENU_X, SAVE_LOAD_MENU_Y,
MENU_DEPTH | SF_GET_ALL | SF_BLOCK_ALL | SF_IMMOVABLE);
if (!_GM(slMenu)) {
return;
@@ -588,10 +589,12 @@ void SaveLoadMenu::show(RGB8 *myPalette, bool saveMenu) {
} else {
updateThumbnails(0, _GM(slMenu));
- _GM(saveLoadThumbNail) = _GM(menuSprites)[SL_EMPTY_THUMB];
+ _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB];
}
- menuItemMsg::msgAdd(_GM(slMenu), SL_TAG_THUMBNAIL, SL_THUMBNAIL_X, SL_THUMBNAIL_Y, SL_THUMBNAIL_W, SL_THUMBNAIL_H, false);
+ menuItemMsg::msgAdd(_GM(slMenu), SL_TAG_THUMBNAIL, SL_THUMBNAIL_X, SL_THUMBNAIL_Y,
+ M4::GUI::SaveLoadMenuBase::SL_THUMBNAIL_W,
+ M4::GUI::SaveLoadMenuBase::SL_THUMBNAIL_H, false);
if (_GM(currMenuIsSave)) {
//<return> - if a slot has been selected, saves the game
@@ -808,7 +811,7 @@ void SaveLoadMenu::cb_SaveLoad_Cancel(menuItemButton *, guiMenu *myMenu) {
// Remove the thumbnail
if (_GM(saveLoadThumbNail)) {
- _GM(saveLoadThumbNail) = _GM(menuSprites)[SL_EMPTY_THUMB];
+ _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB];
guiMenu::itemRefresh(nullptr, SL_TAG_THUMBNAIL, myMenu);
}
}
@@ -949,7 +952,7 @@ bool SaveLoadMenu::load_Handler(menuItemButton *myItem, int32 eventType, int32 e
// Remove the thumbnail
if (_GM(saveLoadThumbNail)) {
- _GM(saveLoadThumbNail) = _GM(menuSprites)[SL_EMPTY_THUMB];
+ _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB];
guiMenu::itemRefresh(nullptr, SL_TAG_THUMBNAIL, (guiMenu *)myItem->myMenu);
}
}
diff --git a/engines/m4/gui/game_menu.cpp b/engines/m4/gui/game_menu.cpp
index 15caeff3b3f..000297ad261 100644
--- a/engines/m4/gui/game_menu.cpp
+++ b/engines/m4/gui/game_menu.cpp
@@ -28,6 +28,88 @@
namespace M4 {
namespace GUI {
+uint16 SaveLoadMenuBase::SL_THUMBNAIL_W;
+uint16 SaveLoadMenuBase::SL_THUMBNAIL_H;
+uint16 SaveLoadMenuBase::SL_DIALOG_BOX;
+uint16 SaveLoadMenuBase::SL_EMPTY_THUMB;
+uint16 SaveLoadMenuBase::SL_SAVE_BTN_GREY;
+uint16 SaveLoadMenuBase::SL_SAVE_BTN_NORM;
+uint16 SaveLoadMenuBase::SL_SAVE_BTN_OVER;
+uint16 SaveLoadMenuBase::SL_SAVE_BTN_PRESS;
+uint16 SaveLoadMenuBase::SL_LOAD_BTN_GREY;
+uint16 SaveLoadMenuBase::SL_LOAD_BTN_NORM;
+uint16 SaveLoadMenuBase::SL_LOAD_BTN_OVER;
+uint16 SaveLoadMenuBase::SL_LOAD_BTN_PRESS;
+uint16 SaveLoadMenuBase::SL_CANCEL_BTN_NORM;
+uint16 SaveLoadMenuBase::SL_CANCEL_BTN_OVER;
+uint16 SaveLoadMenuBase::SL_CANCEL_BTN_PRESS;
+uint16 SaveLoadMenuBase::SL_UP_BTN_GREY;
+uint16 SaveLoadMenuBase::SL_UP_BTN_NORM;
+uint16 SaveLoadMenuBase::SL_UP_BTN_OVER;
+uint16 SaveLoadMenuBase::SL_UP_BTN_PRESS;
+uint16 SaveLoadMenuBase::SL_DOWN_BTN_GREY;
+uint16 SaveLoadMenuBase::SL_DOWN_BTN_NORM;
+uint16 SaveLoadMenuBase::SL_DOWN_BTN_OVER;
+uint16 SaveLoadMenuBase::SL_DOWN_BTN_PRESS;
+uint16 SaveLoadMenuBase::SL_SAVE_LABEL;
+uint16 SaveLoadMenuBase::SL_LOAD_LABEL;
+uint16 SaveLoadMenuBase::SL_SLIDER_BTN_NORM;
+uint16 SaveLoadMenuBase::SL_SLIDER_BTN_OVER;
+uint16 SaveLoadMenuBase::SL_SLIDER_BTN_PRESS;
+uint16 SaveLoadMenuBase::SL_LINE_NORM;
+uint16 SaveLoadMenuBase::SL_LINE_OVER;
+uint16 SaveLoadMenuBase::SL_LINE_PRESS;
+uint16 SaveLoadMenuBase::SL_SCROLL_BAR;
+uint16 SaveLoadMenuBase::SL_TOTAL_SPRITES;
+
+void SaveLoadMenuBase::init() {
+ SL_DIALOG_BOX = 0;
+
+ if (IS_RIDDLE) {
+ SL_THUMBNAIL_W = 213;
+ SL_THUMBNAIL_H = 160;
+
+ SL_UP_BTN_NORM = 13;
+ SL_SLIDER_BTN_NORM = 21;
+
+ } else {
+ SL_THUMBNAIL_W = 215;
+ SL_THUMBNAIL_H = 162;
+
+ SL_EMPTY_THUMB = 1;
+ SL_SAVE_BTN_GREY = 2;
+ SL_SAVE_BTN_NORM = 3;
+ SL_SAVE_BTN_OVER = 4;
+ SL_SAVE_BTN_PRESS = 5;
+ SL_LOAD_BTN_GREY = 6;
+ SL_LOAD_BTN_NORM = 7;
+ SL_LOAD_BTN_OVER = 8;
+ SL_LOAD_BTN_PRESS = 9;
+ SL_CANCEL_BTN_NORM = 10;
+ SL_CANCEL_BTN_OVER = 11;
+ SL_CANCEL_BTN_PRESS = 12;
+ SL_UP_BTN_GREY = 13;
+ SL_UP_BTN_NORM = 14;
+ SL_UP_BTN_OVER = 15;
+ SL_UP_BTN_PRESS = 16;
+ SL_DOWN_BTN_GREY = 17;
+ SL_DOWN_BTN_NORM = 18;
+ SL_DOWN_BTN_OVER = 19;
+ SL_DOWN_BTN_PRESS = 20;
+ SL_SAVE_LABEL = 21;
+ SL_LOAD_LABEL = 22;
+ SL_SLIDER_BTN_NORM = 23;
+ SL_SLIDER_BTN_OVER = 24;
+ SL_SLIDER_BTN_PRESS = 25;
+ SL_LINE_NORM = 26;
+ SL_LINE_OVER = 27;
+ SL_LINE_PRESS = 28;
+ SL_SCROLL_BAR = 29;
+
+ SL_TOTAL_SPRITES = 30;
+ }
+}
+
void SaveLoadMenuBase::initializeSlotTables(void) {
const SaveStateList saves = g_engine->listSaves();
diff --git a/engines/m4/gui/game_menu.h b/engines/m4/gui/game_menu.h
index e33b1251d3c..19995b35d4d 100644
--- a/engines/m4/gui/game_menu.h
+++ b/engines/m4/gui/game_menu.h
@@ -30,6 +30,44 @@ namespace M4 {
namespace GUI {
class SaveLoadMenuBase {
+public:
+ static void init();
+
+ static uint16 SL_THUMBNAIL_W;
+ static uint16 SL_THUMBNAIL_H;
+
+ static uint16 SL_DIALOG_BOX;
+ static uint16 SL_EMPTY_THUMB;
+ static uint16 SL_SAVE_BTN_GREY;
+ static uint16 SL_SAVE_BTN_NORM;
+ static uint16 SL_SAVE_BTN_OVER;
+ static uint16 SL_SAVE_BTN_PRESS;
+ static uint16 SL_LOAD_BTN_GREY;
+ static uint16 SL_LOAD_BTN_NORM;
+ static uint16 SL_LOAD_BTN_OVER;
+ static uint16 SL_LOAD_BTN_PRESS;
+ static uint16 SL_CANCEL_BTN_NORM;
+ static uint16 SL_CANCEL_BTN_OVER;
+ static uint16 SL_CANCEL_BTN_PRESS;
+ static uint16 SL_UP_BTN_GREY;
+ static uint16 SL_UP_BTN_NORM;
+ static uint16 SL_UP_BTN_OVER;
+ static uint16 SL_UP_BTN_PRESS;
+ static uint16 SL_DOWN_BTN_GREY;
+ static uint16 SL_DOWN_BTN_NORM;
+ static uint16 SL_DOWN_BTN_OVER;
+ static uint16 SL_DOWN_BTN_PRESS;
+ static uint16 SL_SAVE_LABEL;
+ static uint16 SL_LOAD_LABEL;
+ static uint16 SL_SLIDER_BTN_NORM;
+ static uint16 SL_SLIDER_BTN_OVER;
+ static uint16 SL_SLIDER_BTN_PRESS;
+ static uint16 SL_LINE_NORM;
+ static uint16 SL_LINE_OVER;
+ static uint16 SL_LINE_PRESS;
+ static uint16 SL_SCROLL_BAR;
+ static uint16 SL_TOTAL_SPRITES;
+
protected:
static void initializeSlotTables();
static Sprite *menu_CreateThumbnail(int32 *spriteSize);
diff --git a/engines/m4/gui/gui_menu_items.cpp b/engines/m4/gui/gui_menu_items.cpp
index ac737f02dca..b4df5c662cb 100644
--- a/engines/m4/gui/gui_menu_items.cpp
+++ b/engines/m4/gui/gui_menu_items.cpp
@@ -767,17 +767,17 @@ void menuItemButton::drawButton(menuItemButton *myItem, guiMenu *myMenu, int32 x
case BTN_TYPE_SL_SAVE:
switch (myItem->itemFlags) {
case BTN_STATE_NORM:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_SAVE_BTN_NORM];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_SAVE_BTN_NORM];
break;
case BTN_STATE_OVER:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_SAVE_BTN_OVER];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_SAVE_BTN_OVER];
break;
case BTN_STATE_PRESS:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_SAVE_BTN_PRESS];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_SAVE_BTN_PRESS];
break;
default:
case BTN_STATE_GREY:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_SAVE_BTN_GREY];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_SAVE_BTN_GREY];
break;
}
break;
@@ -785,17 +785,17 @@ void menuItemButton::drawButton(menuItemButton *myItem, guiMenu *myMenu, int32 x
case BTN_TYPE_SL_LOAD:
switch (myItem->itemFlags) {
case BTN_STATE_NORM:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_LOAD_BTN_NORM];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LOAD_BTN_NORM];
break;
case BTN_STATE_OVER:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_LOAD_BTN_OVER];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LOAD_BTN_OVER];
break;
case BTN_STATE_PRESS:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_LOAD_BTN_PRESS];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LOAD_BTN_PRESS];
break;
default:
case BTN_STATE_GREY:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_LOAD_BTN_GREY];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LOAD_BTN_GREY];
break;
}
break;
@@ -805,23 +805,23 @@ void menuItemButton::drawButton(menuItemButton *myItem, guiMenu *myMenu, int32 x
case BTN_STATE_OVER:
font_set_colors(TEXT_COLOR_OVER_SHADOW, TEXT_COLOR_OVER_FOREGROUND, TEXT_COLOR_OVER_HILITE);
// Gr_font_set_color(TEXT_COLOR_OVER);
- mySprite = _GM(menuSprites)[Burger::GUI::SL_LINE_OVER];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LINE_OVER];
break;
case BTN_STATE_PRESS:
font_set_colors(TEXT_COLOR_PRESS_SHADOW, TEXT_COLOR_PRESS_FOREGROUND, TEXT_COLOR_PRESS_HILITE);
// Gr_font_set_color(TEXT_COLOR_PRESS);
- mySprite = _GM(menuSprites)[Burger::GUI::SL_LINE_PRESS];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LINE_PRESS];
break;
case BTN_STATE_GREY:
font_set_colors(TEXT_COLOR_GREY_SHADOW, TEXT_COLOR_GREY_FOREGROUND, TEXT_COLOR_GREY_HILITE);
// Gr_font_set_color(TEXT_COLOR_GREY);
- mySprite = _GM(menuSprites)[Burger::GUI::SL_LINE_NORM];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LINE_NORM];
break;
default:
case BTN_STATE_NORM:
font_set_colors(TEXT_COLOR_NORM_SHADOW, TEXT_COLOR_NORM_FOREGROUND, TEXT_COLOR_NORM_HILITE);
// Gr_font_set_color(TEXT_COLOR_NORM);
- mySprite = _GM(menuSprites)[Burger::GUI::SL_LINE_NORM];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LINE_NORM];
break;
}
break;
@@ -829,17 +829,17 @@ void menuItemButton::drawButton(menuItemButton *myItem, guiMenu *myMenu, int32 x
case BTN_TYPE_SL_CANCEL:
switch (myItem->itemFlags) {
case BTN_STATE_NORM:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_CANCEL_BTN_NORM];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_CANCEL_BTN_NORM];
break;
case BTN_STATE_OVER:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_CANCEL_BTN_OVER];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_CANCEL_BTN_OVER];
break;
case BTN_STATE_PRESS:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_CANCEL_BTN_PRESS];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_CANCEL_BTN_PRESS];
break;
default:
case BTN_STATE_GREY:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_CANCEL_BTN_NORM];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_CANCEL_BTN_NORM];
break;
}
break;
@@ -1257,13 +1257,13 @@ void menuItemMsg::drawMsg(menuItemMsg *myItem, guiMenu *myMenu, int32 x, int32 y
// Select the sprite
switch (myItem->tag) {
- case Burger::GUI::SL_TAG_SAVE_LABEL:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_SAVE_LABEL];
+ case SL_TAG_SAVE_LABEL:
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_SAVE_LABEL];
break;
- case Burger::GUI::SL_TAG_LOAD_LABEL:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_LOAD_LABEL];
+ case SL_TAG_LOAD_LABEL:
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LOAD_LABEL];
break;
- case Burger::GUI::SL_TAG_THUMBNAIL:
+ case SL_TAG_THUMBNAIL:
mySprite = _GM(saveLoadThumbNail);
break;
}
@@ -1278,11 +1278,11 @@ void menuItemMsg::drawMsg(menuItemMsg *myItem, guiMenu *myMenu, int32 x, int32 y
if (backgroundBuff) {
gr_buffer_rect_copy_2(backgroundBuff, myBuff, 0, 0, x, y, backgroundBuff->w, backgroundBuff->h);
myItem->background->release();
- } else if (myItem->tag == Burger::GUI::SL_TAG_THUMBNAIL && mySprite->w == 160) {
+ } else if (myItem->tag == SL_TAG_THUMBNAIL && mySprite->w == 160) {
// Hack for handling smaller ScummVM thumbnails
- for (int yp = y; yp < (y + Burger::GUI::SL_THUMBNAIL_H); ++yp) {
+ for (int yp = y; yp < (y + SaveLoadMenuBase::SL_THUMBNAIL_H); ++yp) {
byte *line = myBuff->data + myBuff->stride * yp + x;
- Common::fill(line, line + Burger::GUI::SL_THUMBNAIL_W, 0);
+ Common::fill(line, line + SaveLoadMenuBase::SL_THUMBNAIL_W, 0);
}
x += 25;
@@ -1578,6 +1578,85 @@ menuItemHSlider *menuItemHSlider::add(guiMenu *myMenu, int32 tag, int32 x, int32
//------------------------------- VSLIDER MENU ITEM ---------------------------------//
+menuItemVSlider *menuItemVSlider::add(guiMenu *myMenu, int32 tag, int32 x, int32 y, int32 w, int32 h,
+ int32 initPercent, CALLBACK callback, bool transparent) {
+ menuItemVSlider *newItem;
+ ScreenContext *myScreen;
+ int32 status;
+
+ // Verify params
+ if (!myMenu)
+ return nullptr;
+
+ // Allocate a new one
+ newItem = new menuItemVSlider();
+
+ // Initialize the struct
+ newItem->next = myMenu->itemList;
+ newItem->prev = nullptr;
+ if (myMenu->itemList) {
+ myMenu->itemList->prev = newItem;
+ }
+ myMenu->itemList = newItem;
+
+ newItem->myMenu = myMenu;
+ newItem->tag = tag;
+ newItem->x1 = x;
+ newItem->y1 = y;
+ newItem->x2 = x + w - 1;
+ newItem->y2 = y + h - 1;
+ newItem->callback = callback;
+
+ if (!transparent) {
+ newItem->transparent = false;
+ newItem->background = nullptr;
+ } else {
+ newItem->transparent = true;
+ newItem->background = guiMenu::copyBackground(myMenu, x, y, w, h);
+ }
+
+ newItem->itemFlags = menuItemVSlider::VS_NORM;
+
+ if (IS_RIDDLE) {
+ newItem->thumbW = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM]->w;
+ newItem->thumbH = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM]->h;
+
+ newItem->minThumbY = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_NORM]->h;
+ newItem->maxThumbY = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_NORM]->h +
+ _GM(menuSprites)[SaveLoadMenuBase::SL_SCROLL_BAR]->h
+ - _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM]->h - 1;
+ } else {
+ newItem->thumbW = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM]->w;
+ newItem->thumbH = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM]->h;
+
+ newItem->minThumbY = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_NORM]->h + 1;
+ newItem->maxThumbY = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_NORM]->h +
+ _GM(menuSprites)[SaveLoadMenuBase::SL_SCROLL_BAR]->h
+ - _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM]->h - 1;
+ }
+
+ // Calculate the initial thumbY
+ newItem->percent = imath_max(imath_min(initPercent, 100), 0);
+ newItem->thumbY = newItem->minThumbY +
+ ((newItem->percent * (newItem->maxThumbY - newItem->minThumbY)) / 100);
+
+ newItem->redraw = (DrawFunction)menuItemVSlider::drawVSlider;
+ newItem->destroy = (DestroyFunction)menuItem::destroyItem;
+ newItem->itemEventHandler = (ItemHandlerFunction)menuItemVSlider::handler;
+
+ // Draw the vslider in now
+ (newItem->redraw)(newItem, myMenu, x, y, 0, 0);
+
+ // See if the screen is currently visible
+ myScreen = vmng_screen_find(myMenu, &status);
+ if (myScreen && (status == SCRN_ACTIVE)) {
+ RestoreScreens(myScreen->x1 + newItem->x1, myScreen->y1 + newItem->y1,
+ myScreen->x1 + newItem->x2, myScreen->y1 + newItem->y2);
+ }
+
+ return newItem;
+}
+
void menuItemVSlider::drawVSlider(menuItemVSlider *myItem, guiMenu *myMenu, int32 x, int32 y, int32, int32) {
Buffer *myBuff = nullptr;
Buffer *backgroundBuff = nullptr;
@@ -1614,30 +1693,30 @@ void menuItemVSlider::drawVSlider(menuItemVSlider *myItem, guiMenu *myMenu, int3
}
// Set the different sprite components
- vbarSprite = _GM(menuSprites)[Burger::GUI::SL_SCROLL_BAR];
- upSprite = _GM(menuSprites)[Burger::GUI::SL_UP_BTN_NORM];
- thumbSprite = _GM(menuSprites)[Burger::GUI::SL_SLIDER_BTN_NORM];
- downSprite = _GM(menuSprites)[Burger::GUI::SL_DOWN_BTN_NORM];
+ vbarSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SCROLL_BAR];
+ upSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_NORM];
+ thumbSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM];
+ downSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_DOWN_BTN_NORM];
if ((myItem->itemFlags & VS_STATUS) == VS_GREY) {
- upSprite = _GM(menuSprites)[Burger::GUI::SL_UP_BTN_GREY];
+ upSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_GREY];
thumbSprite = nullptr;
- downSprite = _GM(menuSprites)[Burger::GUI::SL_DOWN_BTN_GREY];
+ downSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_DOWN_BTN_GREY];
} else if ((myItem->itemFlags & VS_STATUS) == VS_OVER) {
if ((myItem->itemFlags & VS_COMPONENT) == VS_UP) {
- upSprite = _GM(menuSprites)[Burger::GUI::SL_UP_BTN_OVER];
+ upSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_OVER];
} else if ((myItem->itemFlags & VS_COMPONENT) == VS_THUMB) {
- thumbSprite = _GM(menuSprites)[Burger::GUI::SL_SLIDER_BTN_OVER];
+ thumbSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_OVER];
} else if ((myItem->itemFlags & VS_COMPONENT) == VS_DOWN) {
- downSprite = _GM(menuSprites)[Burger::GUI::SL_DOWN_BTN_OVER];
+ downSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_DOWN_BTN_OVER];
}
} else if ((myItem->itemFlags & VS_STATUS) == VS_PRESS) {
if ((myItem->itemFlags & VS_COMPONENT) == VS_UP) {
- upSprite = _GM(menuSprites)[Burger::GUI::SL_UP_BTN_PRESS];
+ upSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_PRESS];
} else if ((myItem->itemFlags & VS_COMPONENT) == VS_THUMB) {
- thumbSprite = _GM(menuSprites)[Burger::GUI::SL_SLIDER_BTN_PRESS];
+ thumbSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_PRESS];
} else if ((myItem->itemFlags & VS_COMPONENT) == VS_DOWN) {
- downSprite = _GM(menuSprites)[Burger::GUI::SL_DOWN_BTN_PRESS];
+ downSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_DOWN_BTN_PRESS];
}
}
@@ -1859,75 +1938,6 @@ bool menuItemVSlider::handler(menuItemVSlider *myItem, int32 eventType, int32 ev
return handled;
}
-
-menuItemVSlider *menuItemVSlider::add(guiMenu *myMenu, int32 tag, int32 x, int32 y, int32 w, int32 h,
- int32 initPercent, CALLBACK callback, bool transparent) {
- menuItemVSlider *newItem;
- ScreenContext *myScreen;
- int32 status;
-
- // Verify params
- if (!myMenu)
- return nullptr;
-
- // Allocate a new one
- newItem = new menuItemVSlider();
-
- // Initialize the struct
- newItem->next = myMenu->itemList;
- newItem->prev = nullptr;
- if (myMenu->itemList) {
- myMenu->itemList->prev = newItem;
- }
- myMenu->itemList = newItem;
-
- newItem->myMenu = myMenu;
- newItem->tag = tag;
- newItem->x1 = x;
- newItem->y1 = y;
- newItem->x2 = x + w - 1;
- newItem->y2 = y + h - 1;
- newItem->callback = callback;
-
- if (!transparent) {
- newItem->transparent = false;
- newItem->background = nullptr;
- } else {
- newItem->transparent = true;
- newItem->background = guiMenu::copyBackground(myMenu, x, y, w, h);
- }
-
- newItem->itemFlags = menuItemVSlider::VS_NORM;
-
- newItem->thumbW = _GM(menuSprites)[Burger::GUI::SL_SLIDER_BTN_NORM]->w;
- newItem->thumbH = _GM(menuSprites)[Burger::GUI::SL_SLIDER_BTN_NORM]->h;
-
- newItem->minThumbY = _GM(menuSprites)[Burger::GUI::SL_UP_BTN_NORM]->h + 1;
- newItem->maxThumbY = _GM(menuSprites)[Burger::GUI::SL_UP_BTN_NORM]->h + _GM(menuSprites)[Burger::GUI::SL_SCROLL_BAR]->h
- - _GM(menuSprites)[Burger::GUI::SL_SLIDER_BTN_NORM]->h - 1;
-
- // Calculate the initial thumbY
- newItem->percent = imath_max(imath_min(initPercent, 100), 0);
- newItem->thumbY = newItem->minThumbY +
- ((newItem->percent * (newItem->maxThumbY - newItem->minThumbY)) / 100);
-
- newItem->redraw = (DrawFunction)menuItemVSlider::drawVSlider;
- newItem->destroy = (DestroyFunction)menuItem::destroyItem;
- newItem->itemEventHandler = (ItemHandlerFunction)menuItemVSlider::handler;
-
- // Draw the vslider in now
- (newItem->redraw)(newItem, myMenu, x, y, 0, 0);
-
- // See if the screen is currently visible
- myScreen = vmng_screen_find(myMenu, &status);
- if (myScreen && (status == SCRN_ACTIVE)) {
- RestoreScreens(myScreen->x1 + newItem->x1, myScreen->y1 + newItem->y1,
- myScreen->x1 + newItem->x2, myScreen->y1 + newItem->y2);
- }
-
- return newItem;
-}
-
void menuItemVSlider::disableVSlider(menuItemVSlider *myItem, int32 tag, guiMenu *myMenu) {
// Verify params
if (!myMenu)
@@ -1983,16 +1993,16 @@ void menuItemTextField::drawTextField(menuItemTextField *myItem, guiMenu *myMenu
// Select the sprite
switch (myText->itemFlags) {
case TF_GREY:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_LINE_NORM];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LINE_NORM];
break;
case TF_OVER:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_LINE_OVER];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LINE_OVER];
break;
case TF_NORM:
default:
- mySprite = _GM(menuSprites)[Burger::GUI::SL_LINE_OVER];
+ mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LINE_OVER];
break;
}
diff --git a/engines/m4/gui/gui_menu_items.h b/engines/m4/gui/gui_menu_items.h
index 8d2917ca2f4..5c8e5e24eef 100644
--- a/engines/m4/gui/gui_menu_items.h
+++ b/engines/m4/gui/gui_menu_items.h
@@ -33,50 +33,6 @@ namespace M4 {
namespace Burger {
namespace GUI {
-enum save_load_menu_sprites {
- SL_DIALOG_BOX,
- SL_EMPTY_THUMB,
-
- SL_SAVE_BTN_GREY,
- SL_SAVE_BTN_NORM,
- SL_SAVE_BTN_OVER,
- SL_SAVE_BTN_PRESS,
-
- SL_LOAD_BTN_GREY,
- SL_LOAD_BTN_NORM,
- SL_LOAD_BTN_OVER,
- SL_LOAD_BTN_PRESS,
-
- SL_CANCEL_BTN_NORM,
- SL_CANCEL_BTN_OVER,
- SL_CANCEL_BTN_PRESS,
-
- SL_UP_BTN_GREY,
- SL_UP_BTN_NORM,
- SL_UP_BTN_OVER,
- SL_UP_BTN_PRESS,
-
- SL_DOWN_BTN_GREY,
- SL_DOWN_BTN_NORM,
- SL_DOWN_BTN_OVER,
- SL_DOWN_BTN_PRESS,
-
- SL_SAVE_LABEL,
- SL_LOAD_LABEL,
-
- SL_SLIDER_BTN_NORM,
- SL_SLIDER_BTN_OVER,
- SL_SLIDER_BTN_PRESS,
-
- SL_LINE_NORM,
- SL_LINE_OVER,
- SL_LINE_PRESS,
-
- SL_SCROLL_BAR,
-
- SL_TOTAL_SPRITES
-};
-
enum options_menu_sprites {
OM_DIALOG_BOX,
@@ -98,19 +54,6 @@ enum options_menu_sprites {
OM_TOTAL_SPRITES
};
-enum save_load_menu_item_tags {
- SL_TAG_SAVE = 100,
- SL_TAG_SAVE_LABEL,
- SL_TAG_LOAD,
- SL_TAG_LOAD_LABEL,
- SL_TAG_CANCEL,
- SL_TAG_VSLIDER,
- SL_TAG_THUMBNAIL
-};
-
-constexpr int SL_THUMBNAIL_W = 215;
-constexpr int SL_THUMBNAIL_H = 162;
-
} // namespace GUI
} // namespace Burger
@@ -135,52 +78,6 @@ enum options_menu_sprites {
OM_TOTAL_SPRITES = 14
};
-enum save_load_menu_sprites {
- SL_DIALOG_BOX,
-
-#ifdef TODO
- SL_SAVE_BTN_GREY,
- SL_SAVE_BTN_NORM,
- SL_SAVE_BTN_OVER,
- SL_SAVE_BTN_PRESS,
-
- SL_LOAD_BTN_GREY,
- SL_LOAD_BTN_NORM,
- SL_LOAD_BTN_OVER,
- SL_LOAD_BTN_PRESS,
-
- SL_CANCEL_BTN_NORM,
- SL_CANCEL_BTN_OVER,
- SL_CANCEL_BTN_PRESS,
-
- SL_UP_BTN_GREY,
- SL_UP_BTN_NORM,
- SL_UP_BTN_OVER,
- SL_UP_BTN_PRESS,
-
- SL_DOWN_BTN_GREY,
- SL_DOWN_BTN_NORM,
- SL_DOWN_BTN_OVER,
- SL_DOWN_BTN_PRESS,
-
- SL_SAVE_LABEL,
- SL_LOAD_LABEL,
-
- SL_SLIDER_BTN_NORM,
- SL_SLIDER_BTN_OVER,
- SL_SLIDER_BTN_PRESS,
-
- SL_LINE_NORM,
- SL_LINE_OVER,
- SL_LINE_PRESS,
-
- SL_SCROLL_BAR,
-#endif
- SL_EMPTY_THUMB = 25,
-
- SL_TOTAL_SPRITES = 26
-};
-
} // namespace GUI
} // namespace Riddle
@@ -190,6 +87,16 @@ namespace GUI {
#define LockMouseSprite mouse_lock_sprite
#define UnlockMouseSprite mouse_unlock_sprite
+enum save_load_menu_item_tags {
+ SL_TAG_SAVE = 100,
+ SL_TAG_SAVE_LABEL,
+ SL_TAG_LOAD,
+ SL_TAG_LOAD_LABEL,
+ SL_TAG_CANCEL,
+ SL_TAG_VSLIDER,
+ SL_TAG_THUMBNAIL
+};
+
struct menuItem;
struct guiMenu;
diff --git a/engines/m4/riddle/gui/game_menu.cpp b/engines/m4/riddle/gui/game_menu.cpp
index e7424ff1797..17274cbfa14 100644
--- a/engines/m4/riddle/gui/game_menu.cpp
+++ b/engines/m4/riddle/gui/game_menu.cpp
@@ -309,33 +309,24 @@ void OptionsMenu::cbSetMidi(M4::GUI::menuItemHSlider *myItem, M4::GUI::guiMenu *
#define SAVE_LOAD_MENU_X 42
#define SAVE_LOAD_MENU_Y 155
-#define SL_TAG_SAVE_LABEL 1
-#define SL_TAG_LOAD_LABEL 2
#define SL_LABEL_X 111
#define SL_LABEL_Y 2
#define SL_LABEL_W 110
#define SL_LABEL_H 17
-#define SL_TAG_THUMBNAIL 5
#define SL_THUMBNAIL_X 333
#define SL_THUMBNAIL_Y 5
-#define SL_THUMBNAIL_W 213
-#define SL_THUMBNAIL_H 160
-#define SL_TAG_SAVE 100
-#define SL_TAG_LOAD 101
#define SL_SAVELOAD_X 10
#define SL_SAVELOAD_Y 74
#define SL_SAVELOAD_W 26
#define SL_SAVELOAD_H 26
-#define SL_TAG_CANCEL 102
#define SL_CANCEL_X 10
#define SL_CANCEL_Y 122
#define SL_CANCEL_W 26
#define SL_CANCEL_H 26
-#define SL_TAG_VSLIDER 103
#define SL_SLIDER_X 305
#define SL_SLIDER_Y 21
#define SL_SLIDER_W 20
@@ -360,7 +351,7 @@ void SaveLoadMenu::show(RGB8 *myPalette, bool saveMenu) {
CompactMem();
// Load in the game menu sprites
- if (!guiMenu::loadSprites("slmenu", SL_TOTAL_SPRITES)) {
+ if (!guiMenu::loadSprites("slmenu", GUI::SaveLoadMenuBase::SL_TOTAL_SPRITES)) {
return;
}
@@ -371,7 +362,7 @@ void SaveLoadMenu::show(RGB8 *myPalette, bool saveMenu) {
_GM(thumbIndex) = 100;
_GM(currMenuIsSave) = saveMenu;
- _GM(slMenu) = guiMenu::create(_GM(menuSprites)[SL_DIALOG_BOX], SAVE_LOAD_MENU_X, SAVE_LOAD_MENU_Y,
+ _GM(slMenu) = guiMenu::create(_GM(menuSprites)[GUI::SaveLoadMenuBase::SL_DIALOG_BOX], SAVE_LOAD_MENU_X, SAVE_LOAD_MENU_Y,
MENU_DEPTH | SF_GET_ALL | SF_BLOCK_ALL | SF_IMMOVABLE);
if (!_GM(slMenu)) {
return;
@@ -425,10 +416,11 @@ void SaveLoadMenu::show(RGB8 *myPalette, bool saveMenu) {
} else {
updateThumbnails(0, _GM(slMenu));
- _GM(saveLoadThumbNail) = _GM(menuSprites)[SL_EMPTY_THUMB];
+ _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB];
}
- menuItemMsg::msgAdd(_GM(slMenu), SL_TAG_THUMBNAIL, SL_THUMBNAIL_X, SL_THUMBNAIL_Y, SL_THUMBNAIL_W, SL_THUMBNAIL_H, false);
+ menuItemMsg::msgAdd(_GM(slMenu), SL_TAG_THUMBNAIL, SL_THUMBNAIL_X, SL_THUMBNAIL_Y,
+ SaveLoadMenuBase::SL_THUMBNAIL_W, SaveLoadMenuBase::SL_THUMBNAIL_H, false);
if (_GM(currMenuIsSave)) {
//<return> - if a slot has been selected, saves the game
@@ -516,7 +508,7 @@ bool SaveLoadMenu::load_Handler(M4::GUI::menuItemButton *myItem, int32 eventType
// Remove the thumbnail
if (_GM(saveLoadThumbNail)) {
- _GM(saveLoadThumbNail) = _GM(menuSprites)[SL_EMPTY_THUMB];
+ _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB];
guiMenu::itemRefresh(nullptr, SL_TAG_THUMBNAIL, (guiMenu *)myItem->myMenu);
}
}
@@ -634,7 +626,7 @@ void SaveLoadMenu::cbCancel(M4::GUI::menuItemButton *, M4::GUI::guiMenu *myMenu)
// Remove the thumbnail
if (_GM(saveLoadThumbNail)) {
- _GM(saveLoadThumbNail) = _GM(menuSprites)[SL_EMPTY_THUMB];
+ _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB];
guiMenu::itemRefresh(nullptr, SL_TAG_THUMBNAIL, myMenu);
}
}
diff --git a/engines/m4/vars.cpp b/engines/m4/vars.cpp
index ffe71cf1f13..f316478839a 100644
--- a/engines/m4/vars.cpp
+++ b/engines/m4/vars.cpp
@@ -26,6 +26,7 @@
#include "m4/core/errors.h"
#include "m4/dbg/debug.h"
#include "m4/graphics/gr_pal.h"
+#include "m4/gui/game_menu.h"
#include "m4/gui/gui_buffer.h"
#include "m4/gui/gui_dialog.h"
#include "m4/gui/gui_mouse.h"
@@ -69,6 +70,7 @@ Vars::~Vars() {
bool Vars::init() {
param_init();
parse_all_flags();
+ GUI::SaveLoadMenuBase::init();
if (_G(system_shutting_down))
return false;
Commit: e4e0bd10a8db1724db182daa565020b1fe53cf56
https://github.com/scummvm/scummvm/commit/e4e0bd10a8db1724db182daa565020b1fe53cf56
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-02-15T21:32:45-08:00
Commit Message:
M4: RIDDLE: Figuring out Riddle saveload constants
Changed paths:
engines/m4/burger/gui/game_menu.cpp
engines/m4/gui/game_menu.cpp
engines/m4/gui/game_menu.h
engines/m4/gui/gui_menu_items.cpp
engines/m4/riddle/gui/game_menu.cpp
diff --git a/engines/m4/burger/gui/game_menu.cpp b/engines/m4/burger/gui/game_menu.cpp
index f0a5cc654e8..b68a5f1c222 100644
--- a/engines/m4/burger/gui/game_menu.cpp
+++ b/engines/m4/burger/gui/game_menu.cpp
@@ -589,7 +589,7 @@ void SaveLoadMenu::show(RGB8 *myPalette, bool saveMenu) {
} else {
updateThumbnails(0, _GM(slMenu));
- _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB];
+ _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB_25];
}
menuItemMsg::msgAdd(_GM(slMenu), SL_TAG_THUMBNAIL, SL_THUMBNAIL_X, SL_THUMBNAIL_Y,
@@ -811,7 +811,7 @@ void SaveLoadMenu::cb_SaveLoad_Cancel(menuItemButton *, guiMenu *myMenu) {
// Remove the thumbnail
if (_GM(saveLoadThumbNail)) {
- _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB];
+ _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB_25];
guiMenu::itemRefresh(nullptr, SL_TAG_THUMBNAIL, myMenu);
}
}
@@ -952,7 +952,7 @@ bool SaveLoadMenu::load_Handler(menuItemButton *myItem, int32 eventType, int32 e
// Remove the thumbnail
if (_GM(saveLoadThumbNail)) {
- _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB];
+ _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB_25];
guiMenu::itemRefresh(nullptr, SL_TAG_THUMBNAIL, (guiMenu *)myItem->myMenu);
}
}
diff --git a/engines/m4/gui/game_menu.cpp b/engines/m4/gui/game_menu.cpp
index 000297ad261..5266c094176 100644
--- a/engines/m4/gui/game_menu.cpp
+++ b/engines/m4/gui/game_menu.cpp
@@ -28,39 +28,39 @@
namespace M4 {
namespace GUI {
-uint16 SaveLoadMenuBase::SL_THUMBNAIL_W;
-uint16 SaveLoadMenuBase::SL_THUMBNAIL_H;
-uint16 SaveLoadMenuBase::SL_DIALOG_BOX;
-uint16 SaveLoadMenuBase::SL_EMPTY_THUMB;
-uint16 SaveLoadMenuBase::SL_SAVE_BTN_GREY;
-uint16 SaveLoadMenuBase::SL_SAVE_BTN_NORM;
-uint16 SaveLoadMenuBase::SL_SAVE_BTN_OVER;
-uint16 SaveLoadMenuBase::SL_SAVE_BTN_PRESS;
-uint16 SaveLoadMenuBase::SL_LOAD_BTN_GREY;
-uint16 SaveLoadMenuBase::SL_LOAD_BTN_NORM;
-uint16 SaveLoadMenuBase::SL_LOAD_BTN_OVER;
-uint16 SaveLoadMenuBase::SL_LOAD_BTN_PRESS;
-uint16 SaveLoadMenuBase::SL_CANCEL_BTN_NORM;
-uint16 SaveLoadMenuBase::SL_CANCEL_BTN_OVER;
-uint16 SaveLoadMenuBase::SL_CANCEL_BTN_PRESS;
-uint16 SaveLoadMenuBase::SL_UP_BTN_GREY;
-uint16 SaveLoadMenuBase::SL_UP_BTN_NORM;
-uint16 SaveLoadMenuBase::SL_UP_BTN_OVER;
-uint16 SaveLoadMenuBase::SL_UP_BTN_PRESS;
-uint16 SaveLoadMenuBase::SL_DOWN_BTN_GREY;
-uint16 SaveLoadMenuBase::SL_DOWN_BTN_NORM;
-uint16 SaveLoadMenuBase::SL_DOWN_BTN_OVER;
-uint16 SaveLoadMenuBase::SL_DOWN_BTN_PRESS;
-uint16 SaveLoadMenuBase::SL_SAVE_LABEL;
-uint16 SaveLoadMenuBase::SL_LOAD_LABEL;
-uint16 SaveLoadMenuBase::SL_SLIDER_BTN_NORM;
-uint16 SaveLoadMenuBase::SL_SLIDER_BTN_OVER;
-uint16 SaveLoadMenuBase::SL_SLIDER_BTN_PRESS;
-uint16 SaveLoadMenuBase::SL_LINE_NORM;
-uint16 SaveLoadMenuBase::SL_LINE_OVER;
-uint16 SaveLoadMenuBase::SL_LINE_PRESS;
-uint16 SaveLoadMenuBase::SL_SCROLL_BAR;
-uint16 SaveLoadMenuBase::SL_TOTAL_SPRITES;
+int16 SaveLoadMenuBase::SL_THUMBNAIL_W;
+int16 SaveLoadMenuBase::SL_THUMBNAIL_H;
+int16 SaveLoadMenuBase::SL_DIALOG_BOX;
+int16 SaveLoadMenuBase::SL_EMPTY_THUMB_25;
+int16 SaveLoadMenuBase::SL_SAVE_BTN_GREY;
+int16 SaveLoadMenuBase::SL_SAVE_BTN_NORM;
+int16 SaveLoadMenuBase::SL_SAVE_BTN_OVER;
+int16 SaveLoadMenuBase::SL_SAVE_BTN_PRESS;
+int16 SaveLoadMenuBase::SL_LOAD_BTN_GREY;
+int16 SaveLoadMenuBase::SL_LOAD_BTN_NORM;
+int16 SaveLoadMenuBase::SL_LOAD_BTN_OVER;
+int16 SaveLoadMenuBase::SL_LOAD_BTN_PRESS;
+int16 SaveLoadMenuBase::SL_CANCEL_BTN_NORM;
+int16 SaveLoadMenuBase::SL_CANCEL_BTN_OVER;
+int16 SaveLoadMenuBase::SL_CANCEL_BTN_PRESS;
+int16 SaveLoadMenuBase::SL_UP_BTN_GREY_19;
+int16 SaveLoadMenuBase::SL_UP_BTN_NORM_13;
+int16 SaveLoadMenuBase::SL_UP_BTN_OVER_15;
+int16 SaveLoadMenuBase::SL_UP_BTN_PRESS_17;
+int16 SaveLoadMenuBase::SL_DOWN_BTN_GREY_20;
+int16 SaveLoadMenuBase::SL_DOWN_BTN_NORM_14;
+int16 SaveLoadMenuBase::SL_DOWN_BTN_OVER_16;
+int16 SaveLoadMenuBase::SL_DOWN_BTN_PRESS_18;
+int16 SaveLoadMenuBase::SL_SAVE_LABEL_11;
+int16 SaveLoadMenuBase::SL_LOAD_LABEL_12;
+int16 SaveLoadMenuBase::SL_SLIDER_BTN_NORM_21;
+int16 SaveLoadMenuBase::SL_SLIDER_BTN_OVER_22;
+int16 SaveLoadMenuBase::SL_SLIDER_BTN_PRESS_23;
+int16 SaveLoadMenuBase::SL_LINE_NORM;
+int16 SaveLoadMenuBase::SL_LINE_OVER;
+int16 SaveLoadMenuBase::SL_LINE_PRESS;
+int16 SaveLoadMenuBase::SL_SCROLL_BAR_24;
+int16 SaveLoadMenuBase::SL_TOTAL_SPRITES;
void SaveLoadMenuBase::init() {
SL_DIALOG_BOX = 0;
@@ -69,14 +69,46 @@ void SaveLoadMenuBase::init() {
SL_THUMBNAIL_W = 213;
SL_THUMBNAIL_H = 160;
- SL_UP_BTN_NORM = 13;
- SL_SLIDER_BTN_NORM = 21;
+ SL_LINE_NORM = 5;
+ SL_LINE_OVER = 6;
+ SL_LINE_PRESS = 6;
+
+ SL_SAVE_LABEL_11 = 11;
+ SL_LOAD_LABEL_12 = 12;
+ SL_UP_BTN_NORM_13 = 13;
+ SL_DOWN_BTN_NORM_14 = 14;
+ SL_UP_BTN_OVER_15 = 15;
+ SL_DOWN_BTN_OVER_16 = 16;
+ SL_UP_BTN_PRESS_17 = 17;
+ SL_DOWN_BTN_PRESS_18 = 18;
+ SL_UP_BTN_GREY_19 = 19;
+ SL_DOWN_BTN_GREY_20 = 20;
+ SL_SLIDER_BTN_NORM_21 = 21;
+ SL_SLIDER_BTN_OVER_22 = 22;
+ SL_SLIDER_BTN_PRESS_23 = 23;
+ SL_SCROLL_BAR_24 = 24;
+ SL_EMPTY_THUMB_25 = 25;
+
+ SL_TOTAL_SPRITES = 26;
+
+ // Unused
+ SL_SAVE_BTN_GREY = -1;
+ SL_SAVE_BTN_NORM = -1;
+ SL_SAVE_BTN_OVER = -1;
+ SL_SAVE_BTN_PRESS = -1;
+ SL_LOAD_BTN_GREY = -1;
+ SL_LOAD_BTN_NORM = -1;
+ SL_LOAD_BTN_OVER = -1;
+ SL_LOAD_BTN_PRESS = -1;
+ SL_CANCEL_BTN_NORM = -1;
+ SL_CANCEL_BTN_OVER = -1;
+ SL_CANCEL_BTN_PRESS = -1;
} else {
SL_THUMBNAIL_W = 215;
SL_THUMBNAIL_H = 162;
- SL_EMPTY_THUMB = 1;
+ SL_EMPTY_THUMB_25 = 1;
SL_SAVE_BTN_GREY = 2;
SL_SAVE_BTN_NORM = 3;
SL_SAVE_BTN_OVER = 4;
@@ -88,23 +120,23 @@ void SaveLoadMenuBase::init() {
SL_CANCEL_BTN_NORM = 10;
SL_CANCEL_BTN_OVER = 11;
SL_CANCEL_BTN_PRESS = 12;
- SL_UP_BTN_GREY = 13;
- SL_UP_BTN_NORM = 14;
- SL_UP_BTN_OVER = 15;
- SL_UP_BTN_PRESS = 16;
- SL_DOWN_BTN_GREY = 17;
- SL_DOWN_BTN_NORM = 18;
- SL_DOWN_BTN_OVER = 19;
- SL_DOWN_BTN_PRESS = 20;
- SL_SAVE_LABEL = 21;
- SL_LOAD_LABEL = 22;
- SL_SLIDER_BTN_NORM = 23;
- SL_SLIDER_BTN_OVER = 24;
- SL_SLIDER_BTN_PRESS = 25;
+ SL_UP_BTN_GREY_19 = 13;
+ SL_UP_BTN_NORM_13 = 14;
+ SL_UP_BTN_OVER_15 = 15;
+ SL_UP_BTN_PRESS_17 = 16;
+ SL_DOWN_BTN_GREY_20 = 17;
+ SL_DOWN_BTN_NORM_14 = 18;
+ SL_DOWN_BTN_OVER_16 = 19;
+ SL_DOWN_BTN_PRESS_18 = 20;
+ SL_SAVE_LABEL_11 = 21;
+ SL_LOAD_LABEL_12 = 22;
+ SL_SLIDER_BTN_NORM_21 = 23;
+ SL_SLIDER_BTN_OVER_22 = 24;
+ SL_SLIDER_BTN_PRESS_23 = 25;
SL_LINE_NORM = 26;
SL_LINE_OVER = 27;
SL_LINE_PRESS = 28;
- SL_SCROLL_BAR = 29;
+ SL_SCROLL_BAR_24 = 29;
SL_TOTAL_SPRITES = 30;
}
diff --git a/engines/m4/gui/game_menu.h b/engines/m4/gui/game_menu.h
index 19995b35d4d..3c42b152749 100644
--- a/engines/m4/gui/game_menu.h
+++ b/engines/m4/gui/game_menu.h
@@ -33,40 +33,40 @@ class SaveLoadMenuBase {
public:
static void init();
- static uint16 SL_THUMBNAIL_W;
- static uint16 SL_THUMBNAIL_H;
+ static int16 SL_THUMBNAIL_W;
+ static int16 SL_THUMBNAIL_H;
- static uint16 SL_DIALOG_BOX;
- static uint16 SL_EMPTY_THUMB;
- static uint16 SL_SAVE_BTN_GREY;
- static uint16 SL_SAVE_BTN_NORM;
- static uint16 SL_SAVE_BTN_OVER;
- static uint16 SL_SAVE_BTN_PRESS;
- static uint16 SL_LOAD_BTN_GREY;
- static uint16 SL_LOAD_BTN_NORM;
- static uint16 SL_LOAD_BTN_OVER;
- static uint16 SL_LOAD_BTN_PRESS;
- static uint16 SL_CANCEL_BTN_NORM;
- static uint16 SL_CANCEL_BTN_OVER;
- static uint16 SL_CANCEL_BTN_PRESS;
- static uint16 SL_UP_BTN_GREY;
- static uint16 SL_UP_BTN_NORM;
- static uint16 SL_UP_BTN_OVER;
- static uint16 SL_UP_BTN_PRESS;
- static uint16 SL_DOWN_BTN_GREY;
- static uint16 SL_DOWN_BTN_NORM;
- static uint16 SL_DOWN_BTN_OVER;
- static uint16 SL_DOWN_BTN_PRESS;
- static uint16 SL_SAVE_LABEL;
- static uint16 SL_LOAD_LABEL;
- static uint16 SL_SLIDER_BTN_NORM;
- static uint16 SL_SLIDER_BTN_OVER;
- static uint16 SL_SLIDER_BTN_PRESS;
- static uint16 SL_LINE_NORM;
- static uint16 SL_LINE_OVER;
- static uint16 SL_LINE_PRESS;
- static uint16 SL_SCROLL_BAR;
- static uint16 SL_TOTAL_SPRITES;
+ static int16 SL_DIALOG_BOX;
+ static int16 SL_EMPTY_THUMB_25;
+ static int16 SL_SAVE_BTN_GREY;
+ static int16 SL_SAVE_BTN_NORM;
+ static int16 SL_SAVE_BTN_OVER;
+ static int16 SL_SAVE_BTN_PRESS;
+ static int16 SL_LOAD_BTN_GREY;
+ static int16 SL_LOAD_BTN_NORM;
+ static int16 SL_LOAD_BTN_OVER;
+ static int16 SL_LOAD_BTN_PRESS;
+ static int16 SL_CANCEL_BTN_NORM;
+ static int16 SL_CANCEL_BTN_OVER;
+ static int16 SL_CANCEL_BTN_PRESS;
+ static int16 SL_UP_BTN_GREY_19;
+ static int16 SL_UP_BTN_NORM_13;
+ static int16 SL_UP_BTN_OVER_15;
+ static int16 SL_UP_BTN_PRESS_17;
+ static int16 SL_DOWN_BTN_GREY_20;
+ static int16 SL_DOWN_BTN_NORM_14;
+ static int16 SL_DOWN_BTN_OVER_16;
+ static int16 SL_DOWN_BTN_PRESS_18;
+ static int16 SL_SAVE_LABEL_11;
+ static int16 SL_LOAD_LABEL_12;
+ static int16 SL_SLIDER_BTN_NORM_21;
+ static int16 SL_SLIDER_BTN_OVER_22;
+ static int16 SL_SLIDER_BTN_PRESS_23;
+ static int16 SL_LINE_NORM;
+ static int16 SL_LINE_OVER;
+ static int16 SL_LINE_PRESS;
+ static int16 SL_SCROLL_BAR_24;
+ static int16 SL_TOTAL_SPRITES;
protected:
static void initializeSlotTables();
diff --git a/engines/m4/gui/gui_menu_items.cpp b/engines/m4/gui/gui_menu_items.cpp
index b4df5c662cb..03508a61b0b 100644
--- a/engines/m4/gui/gui_menu_items.cpp
+++ b/engines/m4/gui/gui_menu_items.cpp
@@ -763,65 +763,80 @@ void menuItemButton::drawButton(menuItemButton *myItem, guiMenu *myMenu, int32 x
}
break;
- /** ORION BURGER BUTTON TYPES **/
- case BTN_TYPE_SL_SAVE:
+ case BTN_TYPE_SL_TEXT:
switch (myItem->itemFlags) {
- case BTN_STATE_NORM:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_SAVE_BTN_NORM];
- break;
case BTN_STATE_OVER:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_SAVE_BTN_OVER];
+ if (IS_RIDDLE)
+ gr_font_set_color(96);
+ else
+ font_set_colors(TEXT_COLOR_OVER_SHADOW, TEXT_COLOR_OVER_FOREGROUND, TEXT_COLOR_OVER_HILITE);
+
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_LINE_OVER];
break;
+
case BTN_STATE_PRESS:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_SAVE_BTN_PRESS];
+ if (IS_RIDDLE)
+ gr_font_set_color(96);
+ else
+ font_set_colors(TEXT_COLOR_PRESS_SHADOW, TEXT_COLOR_PRESS_FOREGROUND, TEXT_COLOR_PRESS_HILITE);
+
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_LINE_PRESS];
break;
- default:
+
case BTN_STATE_GREY:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_SAVE_BTN_GREY];
+ if (IS_RIDDLE)
+ gr_font_set_color(202);
+ else
+ font_set_colors(TEXT_COLOR_GREY_SHADOW, TEXT_COLOR_GREY_FOREGROUND, TEXT_COLOR_GREY_HILITE);
+
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_LINE_NORM];
+ break;
+
+ default:
+ case BTN_STATE_NORM:
+ if (IS_RIDDLE)
+ gr_font_set_color(96);
+ else
+ font_set_colors(TEXT_COLOR_NORM_SHADOW, TEXT_COLOR_NORM_FOREGROUND, TEXT_COLOR_NORM_HILITE);
+
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_LINE_NORM];
break;
}
break;
- case BTN_TYPE_SL_LOAD:
+ /** ORION BURGER BUTTON TYPES **/
+ case BTN_TYPE_SL_SAVE:
switch (myItem->itemFlags) {
case BTN_STATE_NORM:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LOAD_BTN_NORM];
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SAVE_BTN_NORM];
break;
case BTN_STATE_OVER:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LOAD_BTN_OVER];
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SAVE_BTN_OVER];
break;
case BTN_STATE_PRESS:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LOAD_BTN_PRESS];
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SAVE_BTN_PRESS];
break;
default:
case BTN_STATE_GREY:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LOAD_BTN_GREY];
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SAVE_BTN_GREY];
break;
}
break;
- case BTN_TYPE_SL_TEXT:
+ case BTN_TYPE_SL_LOAD:
switch (myItem->itemFlags) {
+ case BTN_STATE_NORM:
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_LOAD_BTN_NORM];
+ break;
case BTN_STATE_OVER:
- font_set_colors(TEXT_COLOR_OVER_SHADOW, TEXT_COLOR_OVER_FOREGROUND, TEXT_COLOR_OVER_HILITE);
- // Gr_font_set_color(TEXT_COLOR_OVER);
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LINE_OVER];
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_LOAD_BTN_OVER];
break;
case BTN_STATE_PRESS:
- font_set_colors(TEXT_COLOR_PRESS_SHADOW, TEXT_COLOR_PRESS_FOREGROUND, TEXT_COLOR_PRESS_HILITE);
- // Gr_font_set_color(TEXT_COLOR_PRESS);
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LINE_PRESS];
- break;
- case BTN_STATE_GREY:
- font_set_colors(TEXT_COLOR_GREY_SHADOW, TEXT_COLOR_GREY_FOREGROUND, TEXT_COLOR_GREY_HILITE);
- // Gr_font_set_color(TEXT_COLOR_GREY);
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LINE_NORM];
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_LOAD_BTN_PRESS];
break;
default:
- case BTN_STATE_NORM:
- font_set_colors(TEXT_COLOR_NORM_SHADOW, TEXT_COLOR_NORM_FOREGROUND, TEXT_COLOR_NORM_HILITE);
- // Gr_font_set_color(TEXT_COLOR_NORM);
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LINE_NORM];
+ case BTN_STATE_GREY:
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_LOAD_BTN_GREY];
break;
}
break;
@@ -829,17 +844,17 @@ void menuItemButton::drawButton(menuItemButton *myItem, guiMenu *myMenu, int32 x
case BTN_TYPE_SL_CANCEL:
switch (myItem->itemFlags) {
case BTN_STATE_NORM:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_CANCEL_BTN_NORM];
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_CANCEL_BTN_NORM];
break;
case BTN_STATE_OVER:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_CANCEL_BTN_OVER];
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_CANCEL_BTN_OVER];
break;
case BTN_STATE_PRESS:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_CANCEL_BTN_PRESS];
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_CANCEL_BTN_PRESS];
break;
default:
case BTN_STATE_GREY:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_CANCEL_BTN_NORM];
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_CANCEL_BTN_NORM];
break;
}
break;
@@ -1258,10 +1273,10 @@ void menuItemMsg::drawMsg(menuItemMsg *myItem, guiMenu *myMenu, int32 x, int32 y
// Select the sprite
switch (myItem->tag) {
case SL_TAG_SAVE_LABEL:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_SAVE_LABEL];
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SAVE_LABEL_11];
break;
case SL_TAG_LOAD_LABEL:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LOAD_LABEL];
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_LOAD_LABEL_12];
break;
case SL_TAG_THUMBNAIL:
mySprite = _GM(saveLoadThumbNail);
@@ -1618,21 +1633,21 @@ menuItemVSlider *menuItemVSlider::add(guiMenu *myMenu, int32 tag, int32 x, int32
newItem->itemFlags = menuItemVSlider::VS_NORM;
if (IS_RIDDLE) {
- newItem->thumbW = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM]->w;
- newItem->thumbH = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM]->h;
+ newItem->thumbW = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM_21]->w;
+ newItem->thumbH = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM_21]->h;
- newItem->minThumbY = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_NORM]->h;
- newItem->maxThumbY = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_NORM]->h +
- _GM(menuSprites)[SaveLoadMenuBase::SL_SCROLL_BAR]->h
- - _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM]->h - 1;
+ newItem->minThumbY = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_NORM_13]->h;
+ newItem->maxThumbY = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_NORM_13]->h +
+ _GM(menuSprites)[SaveLoadMenuBase::SL_SCROLL_BAR_24]->h
+ - _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM_21]->h - 1;
} else {
- newItem->thumbW = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM]->w;
- newItem->thumbH = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM]->h;
+ newItem->thumbW = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM_21]->w;
+ newItem->thumbH = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM_21]->h;
- newItem->minThumbY = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_NORM]->h + 1;
- newItem->maxThumbY = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_NORM]->h +
- _GM(menuSprites)[SaveLoadMenuBase::SL_SCROLL_BAR]->h
- - _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM]->h - 1;
+ newItem->minThumbY = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_NORM_13]->h + 1;
+ newItem->maxThumbY = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_NORM_13]->h +
+ _GM(menuSprites)[SaveLoadMenuBase::SL_SCROLL_BAR_24]->h
+ - _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM_21]->h - 1;
}
// Calculate the initial thumbY
@@ -1693,30 +1708,30 @@ void menuItemVSlider::drawVSlider(menuItemVSlider *myItem, guiMenu *myMenu, int3
}
// Set the different sprite components
- vbarSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SCROLL_BAR];
- upSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_NORM];
- thumbSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM];
- downSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_DOWN_BTN_NORM];
+ vbarSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SCROLL_BAR_24];
+ upSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_NORM_13];
+ thumbSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_NORM_21];
+ downSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_DOWN_BTN_NORM_14];
if ((myItem->itemFlags & VS_STATUS) == VS_GREY) {
- upSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_GREY];
+ upSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_GREY_19];
thumbSprite = nullptr;
- downSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_DOWN_BTN_GREY];
+ downSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_DOWN_BTN_GREY_20];
} else if ((myItem->itemFlags & VS_STATUS) == VS_OVER) {
if ((myItem->itemFlags & VS_COMPONENT) == VS_UP) {
- upSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_OVER];
+ upSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_OVER_15];
} else if ((myItem->itemFlags & VS_COMPONENT) == VS_THUMB) {
- thumbSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_OVER];
+ thumbSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_OVER_22];
} else if ((myItem->itemFlags & VS_COMPONENT) == VS_DOWN) {
- downSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_DOWN_BTN_OVER];
+ downSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_DOWN_BTN_OVER_16];
}
} else if ((myItem->itemFlags & VS_STATUS) == VS_PRESS) {
if ((myItem->itemFlags & VS_COMPONENT) == VS_UP) {
- upSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_PRESS];
+ upSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_UP_BTN_PRESS_17];
} else if ((myItem->itemFlags & VS_COMPONENT) == VS_THUMB) {
- thumbSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_PRESS];
+ thumbSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SLIDER_BTN_PRESS_23];
} else if ((myItem->itemFlags & VS_COMPONENT) == VS_DOWN) {
- downSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_DOWN_BTN_PRESS];
+ downSprite = _GM(menuSprites)[SaveLoadMenuBase::SL_DOWN_BTN_PRESS_18];
}
}
@@ -1993,16 +2008,16 @@ void menuItemTextField::drawTextField(menuItemTextField *myItem, guiMenu *myMenu
// Select the sprite
switch (myText->itemFlags) {
case TF_GREY:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LINE_NORM];
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_LINE_NORM];
break;
case TF_OVER:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LINE_OVER];
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_LINE_OVER];
break;
case TF_NORM:
default:
- mySprite = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_LINE_OVER];
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_LINE_OVER];
break;
}
diff --git a/engines/m4/riddle/gui/game_menu.cpp b/engines/m4/riddle/gui/game_menu.cpp
index 17274cbfa14..84e88c825a3 100644
--- a/engines/m4/riddle/gui/game_menu.cpp
+++ b/engines/m4/riddle/gui/game_menu.cpp
@@ -362,7 +362,8 @@ void SaveLoadMenu::show(RGB8 *myPalette, bool saveMenu) {
_GM(thumbIndex) = 100;
_GM(currMenuIsSave) = saveMenu;
- _GM(slMenu) = guiMenu::create(_GM(menuSprites)[GUI::SaveLoadMenuBase::SL_DIALOG_BOX], SAVE_LOAD_MENU_X, SAVE_LOAD_MENU_Y,
+ _GM(slMenu) = guiMenu::create(_GM(menuSprites)[GUI::SaveLoadMenuBase::SL_DIALOG_BOX],
+ SAVE_LOAD_MENU_X, SAVE_LOAD_MENU_Y,
MENU_DEPTH | SF_GET_ALL | SF_BLOCK_ALL | SF_IMMOVABLE);
if (!_GM(slMenu)) {
return;
@@ -373,17 +374,17 @@ void SaveLoadMenu::show(RGB8 *myPalette, bool saveMenu) {
SL_LABEL_W, SL_LABEL_H);
menuItemButton::add(_GM(slMenu), SL_TAG_SAVE, SL_SAVELOAD_X, SL_SAVELOAD_Y,
SL_SAVELOAD_W, SL_SAVELOAD_H, (CALLBACK)cbSave,
- menuItemButton::BTN_TYPE_SL_SAVE, true);
+ menuItemButton::BTN_TYPE_GM_GENERIC, true);
} else {
menuItemMsg::msgAdd(_GM(slMenu), SL_TAG_LOAD_LABEL, SL_LABEL_X, SL_LABEL_Y,
SL_LABEL_W, SL_LABEL_H);
menuItemButton::add(_GM(slMenu), SL_TAG_LOAD, SL_SAVELOAD_X, SL_SAVELOAD_Y,
SL_SAVELOAD_W, SL_SAVELOAD_H, (CALLBACK)cbSave,
- menuItemButton::BTN_TYPE_SL_SAVE, true);
+ menuItemButton::BTN_TYPE_GM_GENERIC, true);
}
menuItemButton::add(_GM(slMenu), SL_TAG_CANCEL, SL_CANCEL_X, SL_CANCEL_Y, SL_CANCEL_W, SL_CANCEL_H,
- (CALLBACK)cbCancel, menuItemButton::BTN_TYPE_SL_CANCEL);
+ (CALLBACK)cbCancel, menuItemButton::BTN_TYPE_GM_GENERIC);
menuItemVSlider::add(_GM(slMenu), SL_TAG_VSLIDER, SL_SLIDER_X, SL_SLIDER_Y, SL_SLIDER_W, SL_SLIDER_H,
0, (CALLBACK)cbVSlider);
@@ -416,7 +417,7 @@ void SaveLoadMenu::show(RGB8 *myPalette, bool saveMenu) {
} else {
updateThumbnails(0, _GM(slMenu));
- _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB];
+ _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB_25];
}
menuItemMsg::msgAdd(_GM(slMenu), SL_TAG_THUMBNAIL, SL_THUMBNAIL_X, SL_THUMBNAIL_Y,
@@ -508,7 +509,7 @@ bool SaveLoadMenu::load_Handler(M4::GUI::menuItemButton *myItem, int32 eventType
// Remove the thumbnail
if (_GM(saveLoadThumbNail)) {
- _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB];
+ _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB_25];
guiMenu::itemRefresh(nullptr, SL_TAG_THUMBNAIL, (guiMenu *)myItem->myMenu);
}
}
@@ -626,7 +627,7 @@ void SaveLoadMenu::cbCancel(M4::GUI::menuItemButton *, M4::GUI::guiMenu *myMenu)
// Remove the thumbnail
if (_GM(saveLoadThumbNail)) {
- _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB];
+ _GM(saveLoadThumbNail) = _GM(menuSprites)[GUI::SaveLoadMenuBase::SL_EMPTY_THUMB_25];
guiMenu::itemRefresh(nullptr, SL_TAG_THUMBNAIL, myMenu);
}
}
Commit: edb10775a08f3e5918d9b6dba83219f3b1ea0131
https://github.com/scummvm/scummvm/commit/edb10775a08f3e5918d9b6dba83219f3b1ea0131
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-02-15T21:32:45-08:00
Commit Message:
M4: RIDDLE: Further work on save/load menu display
Changed paths:
engines/m4/gui/game_menu.cpp
engines/m4/gui/game_menu.h
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/game_menu.cpp b/engines/m4/gui/game_menu.cpp
index 5266c094176..8810b4ae26b 100644
--- a/engines/m4/gui/game_menu.cpp
+++ b/engines/m4/gui/game_menu.cpp
@@ -51,8 +51,8 @@ int16 SaveLoadMenuBase::SL_DOWN_BTN_GREY_20;
int16 SaveLoadMenuBase::SL_DOWN_BTN_NORM_14;
int16 SaveLoadMenuBase::SL_DOWN_BTN_OVER_16;
int16 SaveLoadMenuBase::SL_DOWN_BTN_PRESS_18;
-int16 SaveLoadMenuBase::SL_SAVE_LABEL_11;
-int16 SaveLoadMenuBase::SL_LOAD_LABEL_12;
+int16 SaveLoadMenuBase::SL_SAVE_LABEL_7;
+int16 SaveLoadMenuBase::SL_LOAD_LABEL_9;
int16 SaveLoadMenuBase::SL_SLIDER_BTN_NORM_21;
int16 SaveLoadMenuBase::SL_SLIDER_BTN_OVER_22;
int16 SaveLoadMenuBase::SL_SLIDER_BTN_PRESS_23;
@@ -73,8 +73,8 @@ void SaveLoadMenuBase::init() {
SL_LINE_OVER = 6;
SL_LINE_PRESS = 6;
- SL_SAVE_LABEL_11 = 11;
- SL_LOAD_LABEL_12 = 12;
+ SL_SAVE_LABEL_7 = 7;
+ SL_LOAD_LABEL_9 = 9;
SL_UP_BTN_NORM_13 = 13;
SL_DOWN_BTN_NORM_14 = 14;
SL_UP_BTN_OVER_15 = 15;
@@ -128,8 +128,8 @@ void SaveLoadMenuBase::init() {
SL_DOWN_BTN_NORM_14 = 18;
SL_DOWN_BTN_OVER_16 = 19;
SL_DOWN_BTN_PRESS_18 = 20;
- SL_SAVE_LABEL_11 = 21;
- SL_LOAD_LABEL_12 = 22;
+ SL_SAVE_LABEL_7 = 21;
+ SL_LOAD_LABEL_9 = 22;
SL_SLIDER_BTN_NORM_21 = 23;
SL_SLIDER_BTN_OVER_22 = 24;
SL_SLIDER_BTN_PRESS_23 = 25;
diff --git a/engines/m4/gui/game_menu.h b/engines/m4/gui/game_menu.h
index 3c42b152749..4389c36c5fb 100644
--- a/engines/m4/gui/game_menu.h
+++ b/engines/m4/gui/game_menu.h
@@ -57,8 +57,8 @@ public:
static int16 SL_DOWN_BTN_NORM_14;
static int16 SL_DOWN_BTN_OVER_16;
static int16 SL_DOWN_BTN_PRESS_18;
- static int16 SL_SAVE_LABEL_11;
- static int16 SL_LOAD_LABEL_12;
+ static int16 SL_SAVE_LABEL_7;
+ static int16 SL_LOAD_LABEL_9;
static int16 SL_SLIDER_BTN_NORM_21;
static int16 SL_SLIDER_BTN_OVER_22;
static int16 SL_SLIDER_BTN_PRESS_23;
@@ -68,6 +68,11 @@ public:
static int16 SL_SCROLL_BAR_24;
static int16 SL_TOTAL_SPRITES;
+ static constexpr int16 SL_SAVE_TITLE = 11;
+ static constexpr int16 SL_LOAD_TITLE = 12;
+ static constexpr int16 SL_SAVE_LABEL_GREY = 8;
+ static constexpr int16 SL_LOAD_LABEL_GREY = 10;
+
protected:
static void initializeSlotTables();
static Sprite *menu_CreateThumbnail(int32 *spriteSize);
diff --git a/engines/m4/gui/gui_menu_items.cpp b/engines/m4/gui/gui_menu_items.cpp
index 03508a61b0b..a164b6fc1a1 100644
--- a/engines/m4/gui/gui_menu_items.cpp
+++ b/engines/m4/gui/gui_menu_items.cpp
@@ -1272,11 +1272,19 @@ void menuItemMsg::drawMsg(menuItemMsg *myItem, guiMenu *myMenu, int32 x, int32 y
// Select the sprite
switch (myItem->tag) {
+ case SL_TAG_SAVE_TITLE_LABEL:
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SAVE_TITLE];
+ break;
+ case SL_TAG_LOAD_TITLE_LABEL:
+ mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_LOAD_TITLE];
+ break;
case SL_TAG_SAVE_LABEL:
- mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_SAVE_LABEL_11];
+ mySprite = _GM(menuSprites)[myItem->itemFlags ?
+ SaveLoadMenuBase::SL_SAVE_LABEL_GREY : SaveLoadMenuBase::SL_SAVE_LABEL_7];
break;
case SL_TAG_LOAD_LABEL:
- mySprite = _GM(menuSprites)[SaveLoadMenuBase::SL_LOAD_LABEL_12];
+ mySprite = _GM(menuSprites)[myItem->itemFlags ?
+ SaveLoadMenuBase::SL_LOAD_LABEL_GREY : SaveLoadMenuBase::SL_LOAD_LABEL_9];
break;
case SL_TAG_THUMBNAIL:
mySprite = _GM(saveLoadThumbNail);
diff --git a/engines/m4/gui/gui_menu_items.h b/engines/m4/gui/gui_menu_items.h
index 5c8e5e24eef..48366e8d91d 100644
--- a/engines/m4/gui/gui_menu_items.h
+++ b/engines/m4/gui/gui_menu_items.h
@@ -93,6 +93,8 @@ enum save_load_menu_item_tags {
SL_TAG_LOAD,
SL_TAG_LOAD_LABEL,
SL_TAG_CANCEL,
+ SL_TAG_SAVE_TITLE_LABEL,
+ SL_TAG_LOAD_TITLE_LABEL,
SL_TAG_VSLIDER,
SL_TAG_THUMBNAIL
};
diff --git a/engines/m4/riddle/gui/game_menu.cpp b/engines/m4/riddle/gui/game_menu.cpp
index 84e88c825a3..fe582d579ae 100644
--- a/engines/m4/riddle/gui/game_menu.cpp
+++ b/engines/m4/riddle/gui/game_menu.cpp
@@ -309,10 +309,10 @@ void OptionsMenu::cbSetMidi(M4::GUI::menuItemHSlider *myItem, M4::GUI::guiMenu *
#define SAVE_LOAD_MENU_X 42
#define SAVE_LOAD_MENU_Y 155
-#define SL_LABEL_X 111
-#define SL_LABEL_Y 2
-#define SL_LABEL_W 110
-#define SL_LABEL_H 17
+#define SL_TITLE_X 111
+#define SL_TITLE_Y 2
+#define SL_TITLE_W 110
+#define SL_TITLE_H 17
#define SL_THUMBNAIL_X 333
#define SL_THUMBNAIL_Y 5
@@ -322,6 +322,11 @@ void OptionsMenu::cbSetMidi(M4::GUI::menuItemHSlider *myItem, M4::GUI::guiMenu *
#define SL_SAVELOAD_W 26
#define SL_SAVELOAD_H 26
+#define SL_SAVELOAD_LABEL_X 8
+#define SL_SAVELOAD_LABEL_Y 103
+#define SL_SAVELOAD_LABEL_W 30
+#define SL_SAVELOAD_LABEL_H 14
+
#define SL_CANCEL_X 10
#define SL_CANCEL_Y 122
#define SL_CANCEL_W 26
@@ -370,17 +375,27 @@ void SaveLoadMenu::show(RGB8 *myPalette, bool saveMenu) {
}
if (_GM(currMenuIsSave)) {
- menuItemMsg::msgAdd(_GM(slMenu), SL_TAG_SAVE_LABEL, SL_LABEL_X, SL_LABEL_Y,
- SL_LABEL_W, SL_LABEL_H);
- menuItemButton::add(_GM(slMenu), SL_TAG_SAVE, SL_SAVELOAD_X, SL_SAVELOAD_Y,
+ menuItemMsg::msgAdd(_GM(slMenu), SL_TAG_SAVE_TITLE_LABEL,
+ SL_TITLE_X, SL_TITLE_Y, SL_TITLE_W, SL_TITLE_H);
+
+ menuItemButton::add(_GM(slMenu), SL_TAG_SAVE,
+ SL_SAVELOAD_X, SL_SAVELOAD_Y,
SL_SAVELOAD_W, SL_SAVELOAD_H, (CALLBACK)cbSave,
menuItemButton::BTN_TYPE_GM_GENERIC, true);
+ menuItemMsg::msgAdd(_GM(slMenu), SL_TAG_SAVE_LABEL,
+ SL_SAVELOAD_LABEL_X, SL_SAVELOAD_LABEL_Y,
+ SL_SAVELOAD_LABEL_W, SL_SAVELOAD_LABEL_H);
} else {
- menuItemMsg::msgAdd(_GM(slMenu), SL_TAG_LOAD_LABEL, SL_LABEL_X, SL_LABEL_Y,
- SL_LABEL_W, SL_LABEL_H);
- menuItemButton::add(_GM(slMenu), SL_TAG_LOAD, SL_SAVELOAD_X, SL_SAVELOAD_Y,
+ menuItemMsg::msgAdd(_GM(slMenu), SL_TAG_LOAD_TITLE_LABEL,
+ SL_TITLE_X, SL_TITLE_Y, SL_TITLE_W, SL_TITLE_H);
+
+ menuItemButton::add(_GM(slMenu), SL_TAG_LOAD,
+ SL_SAVELOAD_X, SL_SAVELOAD_Y,
SL_SAVELOAD_W, SL_SAVELOAD_H, (CALLBACK)cbSave,
menuItemButton::BTN_TYPE_GM_GENERIC, true);
+ menuItemMsg::msgAdd(_GM(slMenu), SL_TAG_LOAD_LABEL,
+ SL_SAVELOAD_LABEL_X, SL_SAVELOAD_LABEL_Y,
+ SL_SAVELOAD_LABEL_W, SL_SAVELOAD_LABEL_H);
}
menuItemButton::add(_GM(slMenu), SL_TAG_CANCEL, SL_CANCEL_X, SL_CANCEL_Y, SL_CANCEL_W, SL_CANCEL_H,
More information about the Scummvm-git-logs
mailing list