[Scummvm-git-logs] scummvm master -> 0c6c59768e0735e6a18ed8c3dfa43dccbd1067ea
sev-
noreply at scummvm.org
Sat Sep 2 08:55:58 UTC 2023
This automated email contains information about 17 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
f572c1b60c CRAB: Move noisy warning to debug
d8e1f78e46 CRAB: Implement missing functionality in MusicManager
f95ee46dda CRAB: Start implementing missing functionality in GeneralSettingsMenu
e0e5ac2305 CRAB: Fix bugs in slider.cpp
7a5e1f0d75 CRAB: Implement OptionMenu::handleTabs()
d1ce8e38e4 CRAB: Fix fps drop when opening OptionsMenu
2cd0d2018e CRAB: Fix unsigned/signed comparision warning in OptionMenu
1727750cbe CRAB: Allow greying out slider
d713ba5824 CRAB: Set brightness slider in GfxSettingsMenu to disabled
582f429cfc CRAB: STUB ScreenSettings::saveState()
43dc8f8a1d CRAB: Implement toggling of vsync and fullScreen from OptionMenu
fd1110d534 CRAB: Add more kemappings for UI elements
677367ec72 CRAB: Add and fix keymaps
86c27bf69a CRAB: Save action description to variable for later use in keybind menu
6c142050a6 CRAB: Implement stubbed out funcs in KeyBindMenu
8992eafdd6 CRAB: JANITORIAL: Code cleanup in KeyBindMenu.cpp
0c6c59768e CRAB: Save keymaps to disk when required
Commit: f572c1b60c204e2c434ffb54632af23a1137c420
https://github.com/scummvm/scummvm/commit/f572c1b60c204e2c434ffb54632af23a1137c420
Author: hax0kartik (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: Move noisy warning to debug
Changed paths:
engines/crab/image/Image.h
diff --git a/engines/crab/image/Image.h b/engines/crab/image/Image.h
index f83bb6d1141..d7adadb79e4 100644
--- a/engines/crab/image/Image.h
+++ b/engines/crab/image/Image.h
@@ -84,7 +84,7 @@ public:
#if 0
return SDL_SetTextureAlphaMod(texture, alpha);
#endif
- warning("Setting alpha modulation for texture: %d ", alpha);
+ debug(5, "Setting alpha modulation for texture: %d ", alpha);
return 0;
}
Commit: d8e1f78e460e3eee4cadd40bd27b2be0af9e3caa
https://github.com/scummvm/scummvm/commit/d8e1f78e460e3eee4cadd40bd27b2be0af9e3caa
Author: hax0kartik (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: Implement missing functionality in MusicManager
Changed paths:
engines/crab/music/MusicManager.cpp
engines/crab/music/MusicManager.h
diff --git a/engines/crab/music/MusicManager.cpp b/engines/crab/music/MusicManager.cpp
index 9a9bf8efb84..9ae77dd66e0 100644
--- a/engines/crab/music/MusicManager.cpp
+++ b/engines/crab/music/MusicManager.cpp
@@ -149,8 +149,20 @@ bool MusicManager::load(rapidxml::xml_node<char> *node) {
return true;
}
-// Function is not needed as of now, keeping it incase its needed in future.
-void MusicManager::saveState(rapidxml::xml_document<> &doc, rapidxml::xml_node<char> *root) {
+void MusicManager::saveState() {
+ bool unmute = volEffects() > 0 || volMusic() > 0;
+
+ // set flag in case either value is greater than 0
+ if (ConfMan.hasKey("mute"))
+ ConfMan.setBool("mute", !unmute);
+
+ ConfMan.setInt("sfx_volume", volEffects());
+ ConfMan.setInt("music_volume", volMusic());
+
+ ConfMan.flushToDisk();
+
+ g_engine->syncSoundSettings();
+
#if 0
rapidxml::xml_node<char> *child = doc.allocate_node(rapidxml::node_element, "sound");
child->append_attribute(doc.allocate_attribute("music", g_engine->_stringPool->Get(Mix_VolumeMusic(-1))));
diff --git a/engines/crab/music/MusicManager.h b/engines/crab/music/MusicManager.h
index dc4aa4eb5eb..463dcdef383 100644
--- a/engines/crab/music/MusicManager.h
+++ b/engines/crab/music/MusicManager.h
@@ -85,7 +85,9 @@ public:
g_system->getMixer()->stopAll();
}
- static void volEffects(const int &volume) {
+ static void volEffects(const int &volume, const bool &unmute = false) {
+ if (unmute)
+ g_system->getMixer()->muteSoundType(Audio::Mixer::kSFXSoundType, false);
g_system->getMixer()->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, volume);
}
@@ -93,7 +95,9 @@ public:
return g_system->getMixer()->getVolumeForSoundType(Audio::Mixer::kSFXSoundType);
}
- static void volMusic(const int &volume) {
+ static void volMusic(const int &volume, const bool &unmute = false) {
+ if (unmute)
+ g_system->getMixer()->muteSoundType(Audio::Mixer::kMusicSoundType, false);
g_system->getMixer()->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, volume);
}
@@ -101,7 +105,7 @@ public:
return g_system->getMixer()->getVolumeForSoundType(Audio::Mixer::kMusicSoundType);
}
- void saveState(rapidxml::xml_document<> &doc, rapidxml::xml_node<char> *root);
+ void saveState();
void freeMusic();
void freeChunk();
Commit: f95ee46dda93c376b11d1bee38a95a929993f684
https://github.com/scummvm/scummvm/commit/f95ee46dda93c376b11d1bee38a95a929993f684
Author: hax0kartik (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: Start implementing missing functionality in GeneralSettingsMenu
Changed paths:
engines/crab/ui/GeneralSettingMenu.cpp
engines/crab/ui/GeneralSettingMenu.h
diff --git a/engines/crab/ui/GeneralSettingMenu.cpp b/engines/crab/ui/GeneralSettingMenu.cpp
index b4c65f648df..86ec994efe6 100644
--- a/engines/crab/ui/GeneralSettingMenu.cpp
+++ b/engines/crab/ui/GeneralSettingMenu.cpp
@@ -47,11 +47,19 @@ void GeneralSettingMenu::load(rapidxml::xml_node<char> *node) {
if (nodeValid("desc", musnode))
_noticeVolume.load(musnode->first_node("desc"));
- // if (nodeValid("music", musnode))
- // vol_music.load(musnode->first_node("music"), 0, MIX_MAX_VOLUME, g_engine->_musicManager->VolMusic());
-
- // if (nodeValid("effects", musnode))
- // vol_effects.load(musnode->first_node("effects"), 0, MIX_MAX_VOLUME, g_engine->_musicManager->VolEffects());
+ if (nodeValid("music", musnode)) {
+ int val = g_engine->_musicManager->volMusic();
+ if (ConfMan.hasKey("mute") && ConfMan.getBool("mute"))
+ val = 0;
+ _volMusic.load(musnode->first_node("music"), 0, 255, val);
+ }
+
+ if (nodeValid("effects", musnode)) {
+ int val = g_engine->_musicManager->volEffects();
+ if (ConfMan.hasKey("mute") && ConfMan.getBool("mute"))
+ val = 0;
+ _volEffects.load(musnode->first_node("effects"), 0, 255, val);
+ }
}
if (nodeValid("mouse_trap", node))
@@ -66,17 +74,24 @@ void GeneralSettingMenu::load(rapidxml::xml_node<char> *node) {
// Sync popup text value with actual value
for (auto &i : _textSpeed._element)
i._state = (i._val == g_engine->_screenSettings->_textSpeed);
+
+ setUI();
+ createBackup();
}
//------------------------------------------------------------------------
// Purpose: Handle user input
//------------------------------------------------------------------------
void GeneralSettingMenu::handleEvents(const Common::Event &event) {
- if (_volMusic.handleEvents(event))
- g_engine->_musicManager->volMusic(_volMusic.Value());
+ if (_volMusic.handleEvents(event)) {
+ bool unmute = _volMusic.Value() > 0 && ConfMan.hasKey("mute") && ConfMan.getBool("mute");
+ g_engine->_musicManager->volMusic(_volMusic.Value(), unmute);
+ }
- if (_volEffects.handleEvents(event))
- g_engine->_musicManager->volEffects(_volEffects.Value());
+ if (_volEffects.handleEvents(event)) {
+ bool unmute = _volEffects.Value() > 0 && ConfMan.hasKey("mute") && ConfMan.getBool("mute");
+ g_engine->_musicManager->volEffects(_volEffects.Value(), unmute);
+ }
// No need to change screen here
if (_saveOnExit.handleEvents(event) != BUAC_IGNORE)
@@ -119,7 +134,7 @@ void GeneralSettingMenu::draw() {
//------------------------------------------------------------------------
// Purpose: Revert to previously backed up settings
//------------------------------------------------------------------------
-void GeneralSettingMenu::RestoreBackup() {
+void GeneralSettingMenu::restoreBackup() {
_volMusic.restoreBackup();
g_engine->_musicManager->volMusic(_volMusic.Value());
diff --git a/engines/crab/ui/GeneralSettingMenu.h b/engines/crab/ui/GeneralSettingMenu.h
index be9d6d97b52..52464355874 100644
--- a/engines/crab/ui/GeneralSettingMenu.h
+++ b/engines/crab/ui/GeneralSettingMenu.h
@@ -63,12 +63,12 @@ public:
void draw();
void setUI();
- void CreateBackup() {
+ void createBackup() {
_volMusic.createBackup();
_volEffects.createBackup();
}
- void RestoreBackup();
+ void restoreBackup();
};
} // End of namespace ui
} // End of namespace pyrodactyl
Commit: e0e5ac23056272927a74bf5c57b0bf6c5056b462
https://github.com/scummvm/scummvm/commit/e0e5ac23056272927a74bf5c57b0bf6c5056b462
Author: hax0kartik (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: Fix bugs in slider.cpp
Changed paths:
engines/crab/ui/slider.cpp
engines/crab/ui/slider.h
diff --git a/engines/crab/ui/slider.cpp b/engines/crab/ui/slider.cpp
index 0a406c00442..b6ee0c70f65 100644
--- a/engines/crab/ui/slider.cpp
+++ b/engines/crab/ui/slider.cpp
@@ -43,6 +43,7 @@ void Slider::load(rapidxml::xml_node<char> *node, const int &min, const int &max
_knob.load(node->first_node("knob"), false);
_bar.load(node->first_node("bar"));
+ _knob.x = _bar.x + ((_bar.w - _knob.w) * _value / (_max - _min));
_knob.y = _bar.y;
_knob.w = g_engine->_imageManager->getTexture(_knob._img._normal).w();
_knob.h = g_engine->_imageManager->getTexture(_knob._img._normal).h();
@@ -54,8 +55,6 @@ void Slider::load(rapidxml::xml_node<char> *node, const int &min, const int &max
_caption.load(node->first_node("caption"), &_bar);
}
-
- createBackup();
}
bool Slider::handleEvents(const Common::Event &Event) {
diff --git a/engines/crab/ui/slider.h b/engines/crab/ui/slider.h
index 261bd06990c..5a78b6239da 100644
--- a/engines/crab/ui/slider.h
+++ b/engines/crab/ui/slider.h
@@ -80,6 +80,7 @@ public:
void restoreBackup() {
_value = _backup;
+ setUI();
}
void setUI();
Commit: 7a5e1f0d7569d6e5063402506f2db596cc8665ad
https://github.com/scummvm/scummvm/commit/7a5e1f0d7569d6e5063402506f2db596cc8665ad
Author: hax0kartik (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: Implement OptionMenu::handleTabs()
Changed paths:
engines/crab/ui/OptionMenu.cpp
diff --git a/engines/crab/ui/OptionMenu.cpp b/engines/crab/ui/OptionMenu.cpp
index 5baeed0aab4..7f923c5e3ba 100644
--- a/engines/crab/ui/OptionMenu.cpp
+++ b/engines/crab/ui/OptionMenu.cpp
@@ -221,7 +221,52 @@ bool OptionMenu::handleEvents(Button &back, const Common::Event &event) {
}
bool OptionMenu::handleTabs(Button &back, const Common::Event &event) {
- warning("STUB: OptionMenu::handleTabs()");
+ if (back.handleEvents(event) == BUAC_LCLICK) {
+ reset();
+ return true;
+ }
+
+ int choice = _menu.handleEvents(event);
+ if (choice >= 0) {
+ if (choice < 4)
+ for (uint i = 0; i < _menu._element.size(); ++i)
+ _menu._element[i].state(i == choice);
+
+ switch (choice) {
+ case 0:
+ _state = STATE_GENERAL;
+ break;
+ case 1:
+ _state = STATE_GRAPHICS;
+ break;
+ case 2:
+ _state = STATE_KEYBOARD;
+ break;
+ case 3:
+ _state = STATE_CONTROLLER;
+ break;
+
+ case 4:
+ // Save settings to file
+ //g_engine->_inputManager->Save();
+ g_engine->_musicManager->saveState();
+ saveState();
+ //general.CreateBackup();
+ //g_engine->_screenSettings->CreateBackup();
+ return true;
+
+ case 5:
+ // Revert all changes made to settings and exit
+ //g_engine->_inputManager->RestoreBackup();
+ //keybind.SetCaption();
+ //g_engine->_screenSettings->RestoreBackup();
+ _general.restoreBackup();
+ _general.setUI();
+ return true;
+ default:
+ break;
+ }
+ }
return false;
}
Commit: d1ce8e38e4c67b23dc2009a11281086928fa53b4
https://github.com/scummvm/scummvm/commit/d1ce8e38e4c67b23dc2009a11281086928fa53b4
Author: hax0kartik (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: Fix fps drop when opening OptionsMenu
Changed paths:
engines/crab/ui/OptionMenu.cpp
diff --git a/engines/crab/ui/OptionMenu.cpp b/engines/crab/ui/OptionMenu.cpp
index 7f923c5e3ba..6e989791404 100644
--- a/engines/crab/ui/OptionMenu.cpp
+++ b/engines/crab/ui/OptionMenu.cpp
@@ -152,8 +152,6 @@ void OptionMenu::draw(Button &back) {
bool OptionMenu::handleEvents(Button &back, const Common::Event &event) {
if (_state < STATE_ENTER_W) {
- _bg.draw();
-
switch (_state) {
case STATE_GENERAL:
_general.handleEvents(event);
Commit: 2cd0d2018ec9348bdf93bec7543b2ec04475ccc0
https://github.com/scummvm/scummvm/commit/2cd0d2018ec9348bdf93bec7543b2ec04475ccc0
Author: hax0kartik (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: Fix unsigned/signed comparision warning in OptionMenu
Changed paths:
engines/crab/ui/OptionMenu.cpp
diff --git a/engines/crab/ui/OptionMenu.cpp b/engines/crab/ui/OptionMenu.cpp
index 6e989791404..125c4e7b578 100644
--- a/engines/crab/ui/OptionMenu.cpp
+++ b/engines/crab/ui/OptionMenu.cpp
@@ -227,7 +227,7 @@ bool OptionMenu::handleTabs(Button &back, const Common::Event &event) {
int choice = _menu.handleEvents(event);
if (choice >= 0) {
if (choice < 4)
- for (uint i = 0; i < _menu._element.size(); ++i)
+ for (int i = 0; i < (int)_menu._element.size(); ++i)
_menu._element[i].state(i == choice);
switch (choice) {
Commit: 1727750cbe58b78cde3389d8d2acf290fd9268c2
https://github.com/scummvm/scummvm/commit/1727750cbe58b78cde3389d8d2acf290fd9268c2
Author: hax0kartik (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: Allow greying out slider
Changed paths:
engines/crab/ui/slider.cpp
engines/crab/ui/slider.h
diff --git a/engines/crab/ui/slider.cpp b/engines/crab/ui/slider.cpp
index b6ee0c70f65..266b83947a8 100644
--- a/engines/crab/ui/slider.cpp
+++ b/engines/crab/ui/slider.cpp
@@ -28,6 +28,7 @@
*
*/
+#include "graphics/screen.h"
#include "crab/crab.h"
#include "crab/input/cursor.h"
#include "crab/ui/slider.h"
@@ -58,6 +59,9 @@ void Slider::load(rapidxml::xml_node<char> *node, const int &min, const int &max
}
bool Slider::handleEvents(const Common::Event &Event) {
+ if (_isGreyed) // do not entertain events when greyed is set
+ return false;
+
// A person is moving the knob
if (_knob.handleEvents(Event) == BUAC_GRABBED) {
int dx = g_engine->_mouse->_motion.x - _bar.x;
@@ -91,6 +95,36 @@ void Slider::draw() {
_bar.draw();
_caption.draw(false);
_knob.draw();
+ greyOut();
+}
+
+// This function only works when slider is drawn over the textured background in Unrest
+// Constants have been found by hit and trial
+void Slider::greyOut() {
+ if (!_isGreyed)
+ return;
+
+ int w = _bar.w + _bar.x - _caption.x;
+ int h = _knob.h > _caption.h ? _knob.h : _caption.h;
+
+ byte a, r, g, b;
+ for (int y = _caption.y; y < _caption.y + h; y++) {
+ uint32 *ptr = (uint32 *)g_engine->_screen->getBasePtr(_caption.x, y);
+ for (int x = 0; x < w; x++, ptr++) {
+ g_engine->_format->colorToARGB(*ptr, a, r, g, b);
+ if (x >= _knob.x - _caption.x && x <= _knob.w + _knob.x - _caption.x) {
+ r /= 3;
+ g /= 3;
+ b /= 2;
+ *ptr = g_engine->_format->ARGBToColor(a, r, g, b);
+ } else if (g > 0x37) {
+ r >>= 1;
+ g >>= 1;
+ b >>= 1;
+ *ptr = g_engine->_format->ARGBToColor(a, r, g, b);
+ }
+ }
+ }
}
void Slider::value(const int val) {
diff --git a/engines/crab/ui/slider.h b/engines/crab/ui/slider.h
index 5a78b6239da..2628053f6a1 100644
--- a/engines/crab/ui/slider.h
+++ b/engines/crab/ui/slider.h
@@ -55,12 +55,16 @@ class Slider {
// The maximum and minimum values for the slider
int _max, _min;
+ // Grey out?
+ bool _isGreyed;
+
public:
Slider() {
_max = 100;
_min = 0;
_value = ((_max - _min) / 2);
_backup = _value;
+ _isGreyed = false;
}
~Slider() {}
@@ -83,6 +87,12 @@ public:
setUI();
}
+ void setEnabled(bool enabled) {
+ _isGreyed = !enabled;
+ }
+
+ void greyOut();
+
void setUI();
};
} // End of namespace ui
Commit: d713ba5824d79da10a41d41445194b5b0a1cb2dc
https://github.com/scummvm/scummvm/commit/d713ba5824d79da10a41d41445194b5b0a1cb2dc
Author: hax0kartik (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: Set brightness slider in GfxSettingsMenu to disabled
Changed paths:
engines/crab/ui/GfxSettingMenu.cpp
diff --git a/engines/crab/ui/GfxSettingMenu.cpp b/engines/crab/ui/GfxSettingMenu.cpp
index 90690967e15..5084829f488 100644
--- a/engines/crab/ui/GfxSettingMenu.cpp
+++ b/engines/crab/ui/GfxSettingMenu.cpp
@@ -61,6 +61,9 @@ void GfxSettingMenu::load(rapidxml::xml_node<char> *node) {
if (nodeValid("brightness", node))
_brightness.load(node->first_node("brightness"), 0, 100, g_engine->_screenSettings->_gamma * 100);
+
+ // This functionality has been disabled in ScummVM.
+ _brightness.setEnabled(false);
}
//------------------------------------------------------------------------
Commit: 582f429cfcb5cd7c17edb9efeaada330e2152099
https://github.com/scummvm/scummvm/commit/582f429cfcb5cd7c17edb9efeaada330e2152099
Author: hax0kartik (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: STUB ScreenSettings::saveState()
Changed paths:
engines/crab/ScreenSettings.cpp
engines/crab/ScreenSettings.h
diff --git a/engines/crab/ScreenSettings.cpp b/engines/crab/ScreenSettings.cpp
index 79de7e4b312..303aff63394 100644
--- a/engines/crab/ScreenSettings.cpp
+++ b/engines/crab/ScreenSettings.cpp
@@ -50,7 +50,8 @@ void ScreenSettings::load(rapidxml::xml_node<char> *node) {
loadBool(_quality, "quality", node);
}
-void ScreenSettings::saveState(rapidxml::xml_document<> &doc, rapidxml::xml_node<char> *root) {
+void ScreenSettings::saveState() {
+#if 0
root->append_attribute(doc.allocate_attribute("version", g_engine->_stringPool->get(_version)));
rapidxml::xml_node<char> *child = doc.allocate_node(rapidxml::node_element, "screen");
@@ -69,6 +70,7 @@ void ScreenSettings::saveState(rapidxml::xml_document<> &doc, rapidxml::xml_node
saveBool(_mouseTrap, "mouse_trap", doc, child);
root->append_node(child);
+#endif
}
} // End of namespace Crab
diff --git a/engines/crab/ScreenSettings.h b/engines/crab/ScreenSettings.h
index 40c3b399566..64f4738bb8d 100644
--- a/engines/crab/ScreenSettings.h
+++ b/engines/crab/ScreenSettings.h
@@ -126,7 +126,7 @@ public:
}
void load(rapidxml::xml_node<char> *node);
- void saveState(rapidxml::xml_document<> &doc, rapidxml::xml_node<char> *root);
+ void saveState();
};
}
Commit: 43dc8f8a1df6cc0220951521491174dde14dd7b8
https://github.com/scummvm/scummvm/commit/43dc8f8a1df6cc0220951521491174dde14dd7b8
Author: hax0kartik (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: Implement toggling of vsync and fullScreen from OptionMenu
Changed paths:
engines/crab/ScreenSettings.cpp
engines/crab/ScreenSettings.h
engines/crab/ui/GfxSettingMenu.cpp
engines/crab/ui/OptionMenu.cpp
diff --git a/engines/crab/ScreenSettings.cpp b/engines/crab/ScreenSettings.cpp
index 303aff63394..b842c15cb10 100644
--- a/engines/crab/ScreenSettings.cpp
+++ b/engines/crab/ScreenSettings.cpp
@@ -28,6 +28,8 @@
*
*/
+#include "common/config-manager.h"
+#include "common/system.h"
#include "crab/crab.h"
#include "crab/GameParam.h"
#include "crab/loaders.h"
@@ -42,15 +44,43 @@ void ScreenSettings::load(rapidxml::xml_node<char> *node) {
loadNum(_gamma, "gamma", node);
loadNum(_textSpeed, "text_speed", node);
- loadBool(_vsync, "vsync", node);
+ // The following values are read from ConfMan instead of the XML
+ //loadBool(_vsync, "vsync", node);
+ //loadBool(_fullscreen, "fullscreen", node);
loadBool(_border, "border", node);
- loadBool(_fullscreen, "fullscreen", node);
loadBool(_saveOnExit, "save_on_exit", node);
loadBool(_mouseTrap, "mouse_trap", node);
loadBool(_quality, "quality", node);
+
+ if (ConfMan.hasKey("fullscreen"))
+ _fullscreen = ConfMan.getBool("fullscreen");
+
+ if (ConfMan.hasKey("vsync"))
+ _vsync = ConfMan.getBool("vsync");
+}
+
+void ScreenSettings::toggleFullScreen() {
+ if (g_system->hasFeature(OSystem::kFeatureFullscreenMode)) {
+ _fullscreen = !_fullscreen;
+ g_system->beginGFXTransaction();
+ g_system->setFeatureState(OSystem::kFeatureFullscreenMode, _fullscreen);
+ g_system->endGFXTransaction();
+ }
+}
+
+void ScreenSettings::toggleVsync() {
+ if (g_system->hasFeature(OSystem::kFeatureVSync)) {
+ _vsync = !_vsync;
+ g_system->beginGFXTransaction();
+ g_system->setFeatureState(OSystem::kFeatureVSync, _vsync);
+ g_system->endGFXTransaction();
+ }
}
void ScreenSettings::saveState() {
+ ConfMan.setBool("fullscreen", _fullscreen);
+ ConfMan.setBool("vsync", _vsync);
+
#if 0
root->append_attribute(doc.allocate_attribute("version", g_engine->_stringPool->get(_version)));
diff --git a/engines/crab/ScreenSettings.h b/engines/crab/ScreenSettings.h
index 64f4738bb8d..e799898f533 100644
--- a/engines/crab/ScreenSettings.h
+++ b/engines/crab/ScreenSettings.h
@@ -126,6 +126,10 @@ public:
}
void load(rapidxml::xml_node<char> *node);
+
+ void toggleFullScreen();
+ void toggleVsync();
+
void saveState();
};
diff --git a/engines/crab/ui/GfxSettingMenu.cpp b/engines/crab/ui/GfxSettingMenu.cpp
index 5084829f488..08160c1e793 100644
--- a/engines/crab/ui/GfxSettingMenu.cpp
+++ b/engines/crab/ui/GfxSettingMenu.cpp
@@ -94,15 +94,11 @@ void GfxSettingMenu::draw() {
// Purpose: Handle input
//------------------------------------------------------------------------
int GfxSettingMenu::handleEvents(const Common::Event &event) {
- if (_fullscreen.handleEvents(event) != BUAC_IGNORE) {
- // Setting video flags is necessary when toggling fullscreen
- g_engine->_screenSettings->_fullscreen = !g_engine->_screenSettings->_fullscreen;
- }
+ if (_fullscreen.handleEvents(event) != BUAC_IGNORE)
+ g_engine->_screenSettings->toggleFullScreen();
- // Vsync doesn't need to set the change value
- if (_vsync.handleEvents(event) != BUAC_IGNORE) {
- g_engine->_screenSettings->_vsync = !g_engine->_screenSettings->_vsync;
- }
+ if (_vsync.handleEvents(event) != BUAC_IGNORE)
+ g_engine->_screenSettings->toggleVsync();
// Quality and resolution can only be changed in the main menu
if (!g_engine->_screenSettings->_inGame) {
diff --git a/engines/crab/ui/OptionMenu.cpp b/engines/crab/ui/OptionMenu.cpp
index 125c4e7b578..29369e7b65e 100644
--- a/engines/crab/ui/OptionMenu.cpp
+++ b/engines/crab/ui/OptionMenu.cpp
@@ -247,6 +247,7 @@ bool OptionMenu::handleTabs(Button &back, const Common::Event &event) {
case 4:
// Save settings to file
//g_engine->_inputManager->Save();
+ g_engine->_screenSettings->saveState();
g_engine->_musicManager->saveState();
saveState();
//general.CreateBackup();
Commit: fd1110d53453291fe39c5080d6d2a02771764f7c
https://github.com/scummvm/scummvm/commit/fd1110d53453291fe39c5080d6d2a02771764f7c
Author: Kartik Agarwala (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: Add more kemappings for UI elements
Changed paths:
engines/crab/input/input.cpp
diff --git a/engines/crab/input/input.cpp b/engines/crab/input/input.cpp
index 71c907e13cc..0477ae6450e 100644
--- a/engines/crab/input/input.cpp
+++ b/engines/crab/input/input.cpp
@@ -161,6 +161,22 @@ Common::Keymap* InputManager::getDefaultKeyMapsForUI() {
act->addDefaultInputMapping("JOY_A");
uiKeymap->addAction(act);
+ act = new Action("UI_BACK", _("Back"));
+ act->setCustomEngineActionEvent(IU_BACK);
+ act->addDefaultInputMapping("ESCAPE");
+ act->addDefaultInputMapping("JOY_B");
+ uiKeymap->addAction(act);
+
+ act = new Action("UI_NEXT", _("Next"));
+ act->setCustomEngineActionEvent(IU_NEXT);
+ act->addDefaultInputMapping("TAB");
+ uiKeymap->addAction(act);
+
+ act = new Action("UI_PREV", _("Previous"));
+ act->setCustomEngineActionEvent(IU_PREV);
+ act->addDefaultInputMapping("r");
+ uiKeymap->addAction(act);
+
act = new Action("REPLY1", _("Reply 1"));
act->setCustomEngineActionEvent(IU_REPLY_0);
act->addDefaultInputMapping("1");
@@ -191,6 +207,16 @@ Common::Keymap* InputManager::getDefaultKeyMapsForUI() {
act->addDefaultInputMapping("6");
uiKeymap->addAction(act);
+ act = new Action("NEXTPAGE", _("Next Page"));
+ act->setCustomEngineActionEvent(IU_PAGE_NEXT);
+ act->addDefaultInputMapping(".");
+ uiKeymap->addAction(act);
+
+ act = new Action("PREVPAGE", _("Previous Page"));
+ act->setCustomEngineActionEvent(IU_PAGE_PREV);
+ act->addDefaultInputMapping(",");
+ uiKeymap->addAction(act);
+
return uiKeymap;
}
Commit: 677367ec7227a3e2067c00c41e1fcf37605c136d
https://github.com/scummvm/scummvm/commit/677367ec7227a3e2067c00c41e1fcf37605c136d
Author: Kartik Agarwala (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: Add and fix keymaps
Changed paths:
engines/crab/input/input.cpp
diff --git a/engines/crab/input/input.cpp b/engines/crab/input/input.cpp
index 0477ae6450e..515b33d52be 100644
--- a/engines/crab/input/input.cpp
+++ b/engines/crab/input/input.cpp
@@ -121,6 +121,16 @@ Common::Keymap* InputManager::getDefaultKeyMapsForGame() {
act->addDefaultInputMapping("JOY_A");
keymap->addAction(act);
+ act = new Action("ATTACK", _("Attack"));
+ act->setCustomEngineActionEvent(IG_ATTACK);
+ act->addDefaultInputMapping("z");
+ keymap->addAction(act);
+
+ act = new Action("BLOCK", _("Block"));
+ act->setCustomEngineActionEvent(IG_BLOCK);
+ act->addDefaultInputMapping("x");
+ keymap->addAction(act);
+
return keymap;
}
@@ -209,12 +219,12 @@ Common::Keymap* InputManager::getDefaultKeyMapsForUI() {
act = new Action("NEXTPAGE", _("Next Page"));
act->setCustomEngineActionEvent(IU_PAGE_NEXT);
- act->addDefaultInputMapping(".");
+ act->addDefaultInputMapping("PERIOD");
uiKeymap->addAction(act);
act = new Action("PREVPAGE", _("Previous Page"));
act->setCustomEngineActionEvent(IU_PAGE_PREV);
- act->addDefaultInputMapping(",");
+ act->addDefaultInputMapping("COMMA");
uiKeymap->addAction(act);
return uiKeymap;
@@ -247,6 +257,21 @@ Common::Keymap* InputManager::getDefaultKeyMapsForHUD() {
act->addDefaultInputMapping("t");
hudKeymap->addAction(act);
+ act = new Action("PAUSE", _("Pause"));
+ act->setCustomEngineActionEvent(IG_PAUSE);
+ act->addDefaultInputMapping("p");
+ hudKeymap->addAction(act);
+
+ act = new Action("QUICKSAVE", _("Quick Save"));
+ act->setCustomEngineActionEvent(IG_QUICKSAVE);
+ act->addDefaultInputMapping("F5");
+ hudKeymap->addAction(act);
+
+ act = new Action("QUICKLOAD", _("Quick Load"));
+ act->setCustomEngineActionEvent(IG_QUICKLOAD);
+ act->addDefaultInputMapping("F9");
+ hudKeymap->addAction(act);
+
return hudKeymap;
}
Commit: 86c27bf69a1d407f9fc132246a6c5da090851875
https://github.com/scummvm/scummvm/commit/86c27bf69a1d407f9fc132246a6c5da090851875
Author: Kartik Agarwala (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: Save action description to variable for later use in keybind menu
Changed paths:
engines/crab/input/input.cpp
diff --git a/engines/crab/input/input.cpp b/engines/crab/input/input.cpp
index 515b33d52be..752b727182c 100644
--- a/engines/crab/input/input.cpp
+++ b/engines/crab/input/input.cpp
@@ -76,6 +76,7 @@ Common::String InputManager::getAssociatedKey(const InputType &type) {
if ((int)action->event.customType == type) {
_keyDescs[type] = Common::String(keymap->getActionMapping(action)[0].description);
_keyDescs[type].toUppercase();
+ _iv[type] = Common::String(action->description);
break;
}
}
Commit: 6c142050a66ab027534b61f7653c1bb190200a18
https://github.com/scummvm/scummvm/commit/6c142050a66ab027534b61f7653c1bb190200a18
Author: Kartik Agarwala (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: Implement stubbed out funcs in KeyBindMenu
Changed paths:
engines/crab/ui/KeyBindMenu.cpp
engines/crab/ui/KeyBindMenu.h
diff --git a/engines/crab/ui/KeyBindMenu.cpp b/engines/crab/ui/KeyBindMenu.cpp
index 682a5679226..4bd8183651c 100644
--- a/engines/crab/ui/KeyBindMenu.cpp
+++ b/engines/crab/ui/KeyBindMenu.cpp
@@ -90,25 +90,21 @@ void KeyBindMenu::startAndSize(const int &type, int &start, int &size) {
}
void KeyBindMenu::initMenu(const int &type) {
- warning("STUB: KeyBindMenu::initMenu()");
-
-#if 0
int start = 0, size = 0;
- StartAndSize(type, start, size);
+ startAndSize(type, start, size);
// Initialize the menu
- menu[type].element.resize(size * 2);
- for (int i = 0; i < size * 2; i += 2) {
- int xoffset = inc.x * (i / 2) + divide.x * ((i / 2) / dim.x);
- int yoffset = inc.y * ((i / 2) % dim.x) + divide.y * ((i / 2) / dim.x);
+ _menu[type]._element.resize(size);
+ for (int i = 0; i < size; i++) {
+ int xoffset = _inc.x * i + _divide.x * (i / _dim.x);
+ int yoffset = _inc.y * (i % _dim.x) + _divide.y * (i / _dim.x);
- menu[type].element[i].Init(prim, xoffset, yoffset);
- menu[type].element[i].caption.text = SDL_GetScancodeName(g_engine->_inputManager->iv[start + (i / 2)].key);
+ _menu[type]._element[i].init(_prim, xoffset, yoffset);
+ _menu[type]._element[i]._caption._text = g_engine->_inputManager->getAssociatedKey((InputType)(start + i));
- menu[type].element[i + 1].Init(alt, xoffset, yoffset);
- menu[type].element[i + 1].caption.text = SDL_GetScancodeName(g_engine->_inputManager->iv[start + (i / 2)].alt);
+ //_menu[type]._element[i + 1].init(_alt, xoffset, yoffset);
+ //_menu[type]._element[i + 1]._caption._text = SDL_GetScancodeName(g_engine->_inputManager->iv[start + (i / 2)].alt);
}
-#endif
}
void KeyBindMenu::drawDesc(const int &type) {
@@ -131,48 +127,68 @@ void KeyBindMenu::draw() {
}
void KeyBindMenu::setCaption() {
- warning("STUB: KeyBindMenu::setCaption()");
-
-#if 0
int start = 0, size = 0;
- StartAndSize(sel_controls.cur, start, size);
+ startAndSize(_selControls._cur, start, size);
- for (int i = 0; i < size * 2; i += 2) {
- menu[sel_controls.cur].element[i].caption.text = SDL_GetScancodeName(g_engine->_inputManager->iv[start + (i / 2)].key);
- menu[sel_controls.cur].element[i + 1].caption.text = SDL_GetScancodeName(g_engine->_inputManager->iv[start + (i / 2)].alt);
- }
-#endif
+ for (int i = 0; i < size; i++)
+ _menu[_selControls._cur]._element[i]._caption._text = g_engine->_inputManager->getAssociatedKey((InputType)(start + i));
}
void KeyBindMenu::handleEvents(const Common::Event &event) {
- warning("STUB: KeyBindMenu::handleEvents()");
+ if (_selControls.handleEvents(event))
+ setCaption();
- /*
- if (sel_controls.handleEvents(Event))
- SetCaption();
-
- switch (state) {
+ switch (_state) {
case STATE_NORMAL:
- choice = menu[sel_controls.cur].handleEvents(Event);
- if (choice >= 0) {
- prompt.Swap(menu[sel_controls.cur].element[choice].caption);
- state = STATE_KEY;
+ _choice = _menu[_selControls._cur].handleEvents(event);
+ if (_choice >= 0) {
+ _prompt.swap(_menu[_selControls._cur]._element[_choice]._caption);
+ _state = STATE_KEY;
+ g_system->getEventManager()->getKeymapper()->setEnabled(false);
break;
}
break;
case STATE_KEY:
- if (Event.type == SDL_KEYDOWN) {
- SwapKey(Event.key.keysym.scancode);
- SetCaption();
- menu[sel_controls.cur].element[choice].caption.col = prompt.col_prev;
- state = STATE_NORMAL;
+ if (setKey(event)) { // if key remapped successfully
+ g_engine->_inputManager->populateKeyTable(); // repopulate key table
+ g_system->getEventManager()->getKeymapper()->setEnabled(true);
+
+ setCaption();
+ _menu[_selControls._cur]._element[_choice]._caption._col = _prompt._colPrev;
+ _state = STATE_NORMAL;
}
+
break;
default:
break;
}
- */
+}
+
+bool KeyBindMenu::setKey(const Common::Event &event) {
+ Common::HardwareInput hwInput = g_system->getEventManager()->getKeymapper()->findHardwareInput(event);
+ if (hwInput.type != Common::kHardwareInputTypeInvalid) {
+ int ch = _choice;
+ if (_selControls._cur == CON_UI)
+ ch += IG_SIZE;
+
+ Common::KeymapArray keymapArr = g_system->getEventManager()->getKeymapper()->getKeymaps();
+ for (Common::Keymap *keymap : keymapArr) {
+ if (keymap->getType() != Common::Keymap::kKeymapTypeGame)
+ continue;
+
+ const Common::Keymap::ActionArray actions = keymap->getActions();
+ for (Common::Action *action : actions) {
+ if ((int)action->event.customType == ch) {
+ keymap->unregisterMapping(action);
+ keymap->registerMapping(action, hwInput);
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
}
#if 0
diff --git a/engines/crab/ui/KeyBindMenu.h b/engines/crab/ui/KeyBindMenu.h
index 3d59e257902..5955b194547 100644
--- a/engines/crab/ui/KeyBindMenu.h
+++ b/engines/crab/ui/KeyBindMenu.h
@@ -42,7 +42,7 @@ namespace ui {
class KeyBindMenu {
// The keyboard controls menu has 2 types of inputs
enum Controls {
- CON_GAME,
+ CON_GAME = 0,
CON_UI,
CON_TOTAL
};
@@ -92,7 +92,7 @@ class KeyBindMenu {
}
}
- void Swap(Caption &c) {
+ void swap(Caption &c) {
_colPrev = c._col;
c._text = _text;
c._col = _col;
@@ -124,6 +124,8 @@ public:
void setCaption();
+ bool setKey(const Common::Event &event);
+
void draw();
void setUI();
};
Commit: 8992eafdd609b12929dbbef075009e51dd498e5c
https://github.com/scummvm/scummvm/commit/8992eafdd609b12929dbbef075009e51dd498e5c
Author: Kartik Agarwala (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: JANITORIAL: Code cleanup in KeyBindMenu.cpp
Changed paths:
engines/crab/ui/KeyBindMenu.cpp
diff --git a/engines/crab/ui/KeyBindMenu.cpp b/engines/crab/ui/KeyBindMenu.cpp
index 4bd8183651c..4b06e70c08b 100644
--- a/engines/crab/ui/KeyBindMenu.cpp
+++ b/engines/crab/ui/KeyBindMenu.cpp
@@ -192,33 +192,6 @@ bool KeyBindMenu::setKey(const Common::Event &event) {
}
#if 0
-void KeyBindMenu::handleEvents(const SDL_Event &Event) {
- if (sel_controls.handleEvents(Event))
- SetCaption();
-
- switch (state) {
- case STATE_NORMAL:
- choice = menu[sel_controls.cur].handleEvents(Event);
- if (choice >= 0) {
- prompt.Swap(menu[sel_controls.cur].element[choice].caption);
- state = STATE_KEY;
- break;
- }
-
- break;
- case STATE_KEY:
- if (Event.type == SDL_KEYDOWN) {
- SwapKey(Event.key.keysym.scancode);
- SetCaption();
- menu[sel_controls.cur].element[choice].caption.col = prompt.col_prev;
- state = STATE_NORMAL;
- }
- break;
- default:
- break;
- }
-}
-
void KeyBindMenu::SwapKey(const SDL_Scancode &find) {
int start = 0, size = 0;
StartAndSize(sel_controls.cur, start, size);
Commit: 0c6c59768e0735e6a18ed8c3dfa43dccbd1067ea
https://github.com/scummvm/scummvm/commit/0c6c59768e0735e6a18ed8c3dfa43dccbd1067ea
Author: Kartik Agarwala (agarwala.kartik at gmail.com)
Date: 2023-09-02T10:55:47+02:00
Commit Message:
CRAB: Save keymaps to disk when required
Changed paths:
engines/crab/input/input.cpp
engines/crab/input/input.h
engines/crab/ui/OptionMenu.cpp
diff --git a/engines/crab/input/input.cpp b/engines/crab/input/input.cpp
index 752b727182c..22441c99ced 100644
--- a/engines/crab/input/input.cpp
+++ b/engines/crab/input/input.cpp
@@ -298,4 +298,16 @@ void InputManager::setKeyBindingMode(KeyBindingMode mode) {
clearInputs();
}
+void InputManager::save() {
+ Common::KeymapArray keymapArr = g_system->getEventManager()->getKeymapper()->getKeymaps();
+ for(Common::Keymap *keymap : keymapArr) {
+ if (keymap->getType() != Common::Keymap::kKeymapTypeGame)
+ continue;
+
+ keymap->saveMappings();
+ }
+
+ ConfMan.flushToDisk();
+}
+
} // End of namespace Crab
diff --git a/engines/crab/input/input.h b/engines/crab/input/input.h
index cf03d73455c..9983516ccdb 100644
--- a/engines/crab/input/input.h
+++ b/engines/crab/input/input.h
@@ -139,6 +139,9 @@ public:
bool state(const InputType &val);
Common::String getAssociatedKey(const InputType &type);
+
+ // Save and flush the keymaps to disk
+ void save();
};
} // End of namespace input
diff --git a/engines/crab/ui/OptionMenu.cpp b/engines/crab/ui/OptionMenu.cpp
index 29369e7b65e..8d931192b4b 100644
--- a/engines/crab/ui/OptionMenu.cpp
+++ b/engines/crab/ui/OptionMenu.cpp
@@ -246,7 +246,7 @@ bool OptionMenu::handleTabs(Button &back, const Common::Event &event) {
case 4:
// Save settings to file
- //g_engine->_inputManager->Save();
+ g_engine->_inputManager->save();
g_engine->_screenSettings->saveState();
g_engine->_musicManager->saveState();
saveState();
More information about the Scummvm-git-logs
mailing list