[Scummvm-git-logs] scummvm master -> fe5b5423167f784116b8cd98c4018d12d01abe35
dreammaster
noreply at scummvm.org
Sat Feb 15 03:41:40 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:
fe5b542316 M4: RIDDLE: Implement options menu horiontal sliders
Commit: fe5b5423167f784116b8cd98c4018d12d01abe35
https://github.com/scummvm/scummvm/commit/fe5b5423167f784116b8cd98c4018d12d01abe35
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2025-02-14T19:41:32-08:00
Commit Message:
M4: RIDDLE: Implement options menu horiontal sliders
Changed paths:
engines/m4/burger/gui/game_menu.cpp
engines/m4/burger/gui/game_menu.h
engines/m4/gui/gui_menu_items.cpp
engines/m4/gui/gui_menu_items.h
engines/m4/platform/sound/midi.cpp
engines/m4/platform/sound/midi.h
engines/m4/riddle/gui/game_menu.cpp
engines/m4/riddle/gui/game_menu.h
engines/m4/vars.cpp
diff --git a/engines/m4/burger/gui/game_menu.cpp b/engines/m4/burger/gui/game_menu.cpp
index 095175035a7..d1b02b017e2 100644
--- a/engines/m4/burger/gui/game_menu.cpp
+++ b/engines/m4/burger/gui/game_menu.cpp
@@ -409,6 +409,34 @@ void CreateGameMenuMain(RGB8 *myPalette) {
#define OPTIONS_MENU_W 298
#define OPTIONS_MENU_H 218
+
+enum option_menu_item_tags {
+ OM_TAG_DONE = 1,
+ OM_TAG_CANCEL,
+ OM_TAG_DIGI,
+ OM_TAG_DIGESTABILITY,
+};
+
+#define OM_DONE_X 168
+#define OM_DONE_Y 141
+#define OM_DONE_W 74
+#define OM_DONE_H 43
+
+#define OM_CANCEL_X 93
+#define OM_CANCEL_Y 141
+#define OM_CANCEL_W 74
+#define OM_CANCEL_H 43
+
+#define OM_DIGI_X 47
+#define OM_DIGI_Y 64
+#define OM_DIGI_W 212
+#define OM_DIGI_H 24
+
+#define OM_DIGESTABILITY_X 47
+#define OM_DIGESTABILITY_Y 104
+#define OM_DIGESTABILITY_W 212
+#define OM_DIGESTABILITY_H 24
+
void DestroyOptionsMenu();
diff --git a/engines/m4/burger/gui/game_menu.h b/engines/m4/burger/gui/game_menu.h
index 0ac19b19479..b228eee5835 100644
--- a/engines/m4/burger/gui/game_menu.h
+++ b/engines/m4/burger/gui/game_menu.h
@@ -128,37 +128,6 @@ enum game_menu_button_tags {
#define SL_THUMBNAIL_X 66
#define SL_THUMBNAIL_Y 28
-/**
- * Options menu defines
- */
-
-enum option_menu_item_tags {
- OM_TAG_DONE = 1,
- OM_TAG_CANCEL,
- OM_TAG_DIGI,
- OM_TAG_DIGESTABILITY,
-};
-
-#define OM_DONE_X 168
-#define OM_DONE_Y 141
-#define OM_DONE_W 74
-#define OM_DONE_H 43
-
-#define OM_CANCEL_X 93
-#define OM_CANCEL_Y 141
-#define OM_CANCEL_W 74
-#define OM_CANCEL_H 43
-
-#define OM_DIGI_X 47
-#define OM_DIGI_Y 64
-#define OM_DIGI_W 212
-#define OM_DIGI_H 24
-
-#define OM_DIGESTABILITY_X 47
-#define OM_DIGESTABILITY_Y 104
-#define OM_DIGESTABILITY_W 212
-#define OM_DIGESTABILITY_H 24
-
/**
* Error menu enums and defines
*/
diff --git a/engines/m4/gui/gui_menu_items.cpp b/engines/m4/gui/gui_menu_items.cpp
index f69f02928b6..49c0afe744c 100644
--- a/engines/m4/gui/gui_menu_items.cpp
+++ b/engines/m4/gui/gui_menu_items.cpp
@@ -1431,21 +1431,31 @@ void menuItemHSlider::drawHSlider(menuItemHSlider *myItem, guiMenu *myMenu, int3
// Get the slider info and select the thumb sprite
switch (myItem->itemFlags) {
case H_THUMB_OVER:
- mySprite = _GM(menuSprites)[Burger::GUI::OM_SLIDER_BTN_OVER];
+ mySprite = _GM(menuSprites)[IS_RIDDLE ? Riddle::GUI::OM_SLIDER_BTN_OVER :
+ Burger::GUI::OM_SLIDER_BTN_OVER];
break;
case H_THUMB_PRESS:
- mySprite = _GM(menuSprites)[Burger::GUI::OM_SLIDER_BTN_PRESS];
+ mySprite = _GM(menuSprites)[IS_RIDDLE ? Riddle::GUI::OM_SLIDER_BTN_PRESS :
+ Burger::GUI::OM_SLIDER_BTN_PRESS];
break;
default:
case H_THUMB_NORM:
- mySprite = _GM(menuSprites)[Burger::GUI::OM_SLIDER_BTN_NORM];
+ mySprite = _GM(menuSprites)[IS_RIDDLE ? Riddle::GUI::OM_SLIDER_BTN_NORM :
+ Burger::GUI::OM_SLIDER_BTN_NORM];
break;
}
// Fill in everything left of the thumb with a hilite color
if (myItem->thumbX > 2) {
- gr_color_set(menuItem::SLIDER_BAR_COLOR);
- gr_buffer_rect_fill(myBuff, myItem->x1 + 3, myItem->y1 + 9, myItem->thumbX, myItem->thumbH - 18);
+ if (IS_RIDDLE) {
+ gr_color_set(120);
+ gr_buffer_rect_fill(myBuff, myItem->x1 + 2, myItem->y1 + 3,
+ myItem->thumbX - 2, myItem->thumbH - 6);
+ } else {
+ gr_color_set(129);
+ gr_buffer_rect_fill(myBuff, myItem->x1 + 3, myItem->y1 + 9,
+ myItem->thumbX, myItem->thumbH - 18);
+ }
}
// Draw in the thumb
@@ -1629,9 +1639,11 @@ menuItemHSlider *menuItemHSlider::add(guiMenu *myMenu, int32 tag, int32 x, int32
// Intialize the new slider
newItem->itemFlags = H_THUMB_NORM;
- newItem->thumbW = _GM(menuSprites)[Burger::GUI::OM_SLIDER_BTN_NORM]->w;
- newItem->thumbH = _GM(menuSprites)[Burger::GUI::OM_SLIDER_BTN_NORM]->h;
- newItem->maxThumbX = w - _GM(menuSprites)[Burger::GUI::OM_SLIDER_BTN_NORM]->w;
+ auto *thumb = _GM(menuSprites)[IS_RIDDLE ? Riddle::GUI::OM_SLIDER_BTN_NORM :
+ Burger::GUI::OM_SLIDER_BTN_NORM];
+ newItem->thumbW = thumb->w;
+ newItem->thumbH = thumb->h;
+ newItem->maxThumbX = w - thumb->w;
if (initPercent < 0) {
initPercent = 0;
diff --git a/engines/m4/gui/gui_menu_items.h b/engines/m4/gui/gui_menu_items.h
index 52a1b345511..1c7fc33bed4 100644
--- a/engines/m4/gui/gui_menu_items.h
+++ b/engines/m4/gui/gui_menu_items.h
@@ -120,6 +120,10 @@ namespace GUI {
enum options_menu_sprites {
OM_DIALOG_BOX,
+ OM_SLIDER_BTN_NORM = 5,
+ OM_SLIDER_BTN_OVER = 6,
+ OM_SLIDER_BTN_PRESS = 7,
+
OM_SCROLLING_ON_BTN_NORM = 8,
OM_SCROLLING_ON_BTN_OVER = 9,
OM_SCROLLING_ON_BTN_PRESS = 13,
@@ -195,8 +199,6 @@ struct menuItem {
TEXT_COLOR_PRESS_HILITE = 3,
TEXT_COLOR_PRESS_FOREGROUND = 2,
TEXT_COLOR_PRESS_SHADOW = 1,
-
- SLIDER_BAR_COLOR = 129
};
menuItem *next = nullptr;
diff --git a/engines/m4/platform/sound/midi.cpp b/engines/m4/platform/sound/midi.cpp
index 1402a57541c..ff7f7dd533e 100644
--- a/engines/m4/platform/sound/midi.cpp
+++ b/engines/m4/platform/sound/midi.cpp
@@ -29,7 +29,7 @@ namespace Sound {
int Midi::_midiEndTrigger;
-Midi::Midi() {
+Midi::Midi(Audio::Mixer *mixer) : _mixer(mixer) {
Midi::createDriver();
int ret = _driver->open();
@@ -91,7 +91,11 @@ void Midi::loop() {
}
void Midi::set_overall_volume(int vol) {
- // No implementation
+ _mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, vol);
+}
+
+int Midi::get_overall_volume() const {
+ return _mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType);
}
} // namespace Sound
@@ -112,6 +116,10 @@ void midi_set_overall_volume(int vol) {
_G(midi).set_overall_volume(vol);
}
+int midi_get_overall_volume() {
+ return _G(midi).get_overall_volume();
+}
+
void midi_fade_volume(int val1, int val2) {
warning("TODO: midi_fade_volume");
}
diff --git a/engines/m4/platform/sound/midi.h b/engines/m4/platform/sound/midi.h
index 0c6ef46b791..413972ad10d 100644
--- a/engines/m4/platform/sound/midi.h
+++ b/engines/m4/platform/sound/midi.h
@@ -32,13 +32,15 @@ namespace Sound {
class Midi : public Audio::MidiPlayer {
private:
static int _midiEndTrigger;
+ Audio::Mixer *_mixer;
public:
- Midi();
+ Midi(Audio::Mixer *mixer);
void midi_play(const char *name, int volume, int loop, int trigger, int roomNum);
void task();
void loop();
void set_overall_volume(int vol);
+ int get_overall_volume() const;
};
} // namespace Sound
@@ -47,6 +49,7 @@ void midi_play(const char *name, int volume, int loop, int trigger, int roomNum)
void midi_loop();
void midi_stop();
void midi_set_overall_volume(int vol);
+int midi_get_overall_volume();
void midi_fade_volume(int val1, int val2);
} // namespace M4
diff --git a/engines/m4/riddle/gui/game_menu.cpp b/engines/m4/riddle/gui/game_menu.cpp
index 339e8629b81..54519378947 100644
--- a/engines/m4/riddle/gui/game_menu.cpp
+++ b/engines/m4/riddle/gui/game_menu.cpp
@@ -215,6 +215,18 @@ void GameMenu::cbLoad(void *, void *) {
#define OM_GAMEMENU_W 26
#define OM_GAMEMENU_H 26
+#define OM_TAG_DIGI 2
+#define OM_DIGI_X 70
+#define OM_DIGI_Y 29
+#define OM_DIGI_W 108
+#define OM_DIGI_H 14
+
+#define OM_TAG_MIDI 3
+#define OM_MIDI_X 70
+#define OM_MIDI_Y 72
+#define OM_MIDI_W 108
+#define OM_MIDI_H 14
+
#define OM_TAG_SCROLLING 4
#define OM_SCROLLING_X 131
#define OM_SCROLLING_Y 113
@@ -228,16 +240,21 @@ void OptionsMenu::show() {
_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;
- }
+ assert(_GM(opMenu));
+
+ int digiPercent = digi_get_overall_volume();
+ int midiPercent = midi_get_overall_volume();
menuItemButton::add(_GM(opMenu), OM_TAG_GAMEMENU,
OM_GAMEMENU_X, OM_GAMEMENU_Y, OM_GAMEMENU_W, OM_GAMEMENU_H,
cbGameMenu, menuItemButton::BTN_TYPE_GM_GENERIC);
-
-
- menuItemButton::add(_GM(opMenu), OM_TAG_GAMEMENU,
+ menuItemHSlider::add(_GM(opMenu), OM_TAG_DIGI,
+ OM_DIGI_X, OM_DIGI_Y, OM_DIGI_W, OM_DIGI_H,
+ digiPercent, (CALLBACK)cbSetDigi, true);
+ menuItemHSlider::add(_GM(opMenu), OM_TAG_MIDI,
+ OM_MIDI_X, OM_MIDI_Y, OM_MIDI_W, OM_MIDI_H,
+ midiPercent, (CALLBACK)cbSetMidi, true);
+ menuItemButton::add(_GM(opMenu), OM_TAG_SCROLLING,
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);
@@ -269,6 +286,14 @@ void OptionsMenu::cbScrolling(M4::GUI::menuItemButton *myItem, M4::GUI::guiMenu
menuItemButton::BTN_TYPE_OM_SCROLLING_ON;
}
+void OptionsMenu::cbSetDigi(M4::GUI::menuItemHSlider *myItem, M4::GUI::guiMenu *) {
+ digi_set_overall_volume(myItem->percent);
+}
+
+void OptionsMenu::cbSetMidi(M4::GUI::menuItemHSlider *myItem, M4::GUI::guiMenu *) {
+ midi_set_overall_volume(myItem->percent);
+}
+
/*-------------------- ACCESS METHODS --------------------*/
void CreateGameMenu(RGB8 *myPalette) {
diff --git a/engines/m4/riddle/gui/game_menu.h b/engines/m4/riddle/gui/game_menu.h
index 83ec58c9a7e..64d1af006d9 100644
--- a/engines/m4/riddle/gui/game_menu.h
+++ b/engines/m4/riddle/gui/game_menu.h
@@ -48,6 +48,8 @@ private:
static void destroyOptionsMenu();
static void cbGameMenu(void *, void *);
static void cbScrolling(M4::GUI::menuItemButton *myItem, M4::GUI::guiMenu *);
+ static void cbSetDigi(M4::GUI::menuItemHSlider *myItem, M4::GUI::guiMenu *);
+ static void cbSetMidi(M4::GUI::menuItemHSlider *myItem, M4::GUI::guiMenu *);
public:
static void show();
diff --git a/engines/m4/vars.cpp b/engines/m4/vars.cpp
index 038e93e64fb..ffe71cf1f13 100644
--- a/engines/m4/vars.cpp
+++ b/engines/m4/vars.cpp
@@ -40,7 +40,7 @@ namespace M4 {
Vars *g_vars;
-Vars::Vars() : _digi(g_engine->_mixer) {
+Vars::Vars() : _digi(g_engine->_mixer), _midi(g_engine->_mixer) {
g_vars = this;
Common::fill(_sizeMem, _sizeMem + _MEMTYPE_LIMIT, 0);
More information about the Scummvm-git-logs
mailing list