[Scummvm-git-logs] scummvm master -> b69122c76879798630b32d73a7c6424be7f3feed
OMGPizzaGuy
48367439+OMGPizzaGuy at users.noreply.github.com
Sat Feb 13 17:56:30 UTC 2021
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
82b603ba7e ULTIMA8: Move config dialog handling to engine to apply changes on close
b69122c768 ULTIMA8: Support changing options during runtime
Commit: 82b603ba7e867e4fe85e28923d82e07ff7b09241
https://github.com/scummvm/scummvm/commit/82b603ba7e867e4fe85e28923d82e07ff7b09241
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2021-02-13T11:56:08-06:00
Commit Message:
ULTIMA8: Move config dialog handling to engine to apply changes on close
Changed paths:
engines/ultima/ultima8/gumps/menu_gump.cpp
engines/ultima/ultima8/ultima8.cpp
engines/ultima/ultima8/ultima8.h
diff --git a/engines/ultima/ultima8/gumps/menu_gump.cpp b/engines/ultima/ultima8/gumps/menu_gump.cpp
index 4d5b800c08..ce41746dd5 100644
--- a/engines/ultima/ultima8/gumps/menu_gump.cpp
+++ b/engines/ultima/ultima8/gumps/menu_gump.cpp
@@ -41,7 +41,6 @@
#include "ultima/ultima8/gumps/u8_save_gump.h"
#include "ultima/ultima8/world/get_object.h"
#include "ultima/ultima8/meta_engine.h"
-#include "engines/dialogs.h"
namespace Ultima {
namespace Ultima8 {
@@ -233,9 +232,7 @@ void MenuGump::selectEntry(int entry) {
U8SaveGump::showLoadSaveGump(this, entry == 3);
break;
case 4: {
- // Options - show the ScummVM options dialog
- GUI::ConfigDialog dlg;
- dlg.runModal();
+ Ultima8Engine::get_instance()->openConfigDialog();
}
break;
case 5: // Credits
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index e1d95c756d..125c85fcce 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -23,6 +23,7 @@
#include "common/translation.h"
#include "gui/saveload.h"
#include "image/png.h"
+#include "engines/dialogs.h"
// TODO: !! a lot of these includes are just for some hacks... clean up sometime
#include "ultima/ultima8/conf/config_file_manager.h"
@@ -1156,6 +1157,21 @@ void Ultima8Engine::syncSoundSettings() {
midiPlayer->setVolume(_mixer->getVolumeForSoundType(Audio::Mixer::kMusicSoundType));
}
+void Ultima8Engine::applyGameSettings() {
+ UltimaEngine::applyGameSettings();
+
+ // TODO: handle dynamic option changes when implemented
+}
+
+void Ultima8Engine::openConfigDialog() {
+ GUI::ConfigDialog dlg;
+ dlg.runModal();
+
+ g_system->applyBackendSettings();
+ applyGameSettings();
+ syncSoundSettings();
+}
+
Common::Error Ultima8Engine::loadGameStream(Common::SeekableReadStream *stream) {
SavegameReader *sg = new SavegameReader(stream);
SavegameReader::State state = sg->isValid();
diff --git a/engines/ultima/ultima8/ultima8.h b/engines/ultima/ultima8/ultima8.h
index 7a86ff8cc4..b83b4cc9ed 100644
--- a/engines/ultima/ultima8/ultima8.h
+++ b/engines/ultima/ultima8/ultima8.h
@@ -286,6 +286,16 @@ public:
*/
void syncSoundSettings() override;
+ /**
+ * Notifies the engine that the game settings may have changed
+ */
+ void applyGameSettings() override;
+
+ /**
+ * Opens the config dialog and apply setting after close
+ */
+ void openConfigDialog();
+
/**
* Returns true if a savegame can be loaded
*/
Commit: b69122c76879798630b32d73a7c6424be7f3feed
https://github.com/scummvm/scummvm/commit/b69122c76879798630b32d73a7c6424be7f3feed
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2021-02-13T11:56:08-06:00
Commit Message:
ULTIMA8: Support changing options during runtime
No options are defined yet, but they will be moved over from the current engine options.
Changed paths:
engines/ultima/metaengine.cpp
engines/ultima/metaengine.h
engines/ultima/ultima8/meta_engine.cpp
engines/ultima/ultima8/meta_engine.h
engines/ultima/ultima8/ultima8.cpp
diff --git a/engines/ultima/metaengine.cpp b/engines/ultima/metaengine.cpp
index 10d0a63c78..93397d4ab9 100644
--- a/engines/ultima/metaengine.cpp
+++ b/engines/ultima/metaengine.cpp
@@ -93,7 +93,17 @@ Common::KeymapArray UltimaMetaEngine::initKeymaps(const char *target) const {
return Common::KeymapArray();
}
-Common::String UltimaMetaEngine::getGameId(const char *target) {
+const ExtraGuiOptions UltimaMetaEngine::getExtraGuiOptions(const Common::String& target) const
+{
+ const Common::String gameId = getGameId(target);
+ if (gameId == "ultima8" || gameId == "remorse" || gameId == "regret")
+ return Ultima::Ultima8::MetaEngine::getExtraGuiOptions(gameId);
+
+ ExtraGuiOptions options;
+ return options;
+}
+
+Common::String UltimaMetaEngine::getGameId(const Common::String& target) {
// Store a copy of the active domain
Common::String currDomain = ConfMan.getActiveDomainName();
diff --git a/engines/ultima/metaengine.h b/engines/ultima/metaengine.h
index 523b9034eb..ba14111f99 100644
--- a/engines/ultima/metaengine.h
+++ b/engines/ultima/metaengine.h
@@ -33,7 +33,7 @@ private:
/**
* Gets the game Id given a target string
*/
- static Common::String getGameId(const char *target);
+ static Common::String getGameId(const Common::String& target);
public:
const char *getName() const override;
@@ -50,6 +50,11 @@ public:
*/
Common::KeymapArray initKeymaps(const char *target) const override;
+ /**
+ * Return the extra GUI options used by the target.
+ */
+ const ExtraGuiOptions getExtraGuiOptions(const Common::String &target) const override;
+
};
#endif
diff --git a/engines/ultima/ultima8/meta_engine.cpp b/engines/ultima/ultima8/meta_engine.cpp
index 00ed723cf7..208f154578 100644
--- a/engines/ultima/ultima8/meta_engine.cpp
+++ b/engines/ultima/ultima8/meta_engine.cpp
@@ -122,6 +122,17 @@ static const KeybindingRecord DEBUG_KEYS[] = {
};
#endif
+static const ExtraGuiOption COMMON_OPTIONS[] = {
+ { nullptr, nullptr, nullptr, false }
+};
+
+static const ExtraGuiOption U8_OPTIONS[] = {
+ { nullptr, nullptr, nullptr, false }
+};
+
+static const ExtraGuiOption CRUSADER_OPTIONS[] = {
+ { nullptr, nullptr, nullptr, false }
+};
Common::KeymapArray MetaEngine::initKeymaps(const Common::String &gameId, bool isMenuActive) {
Common::KeymapArray keymapArray;
@@ -210,6 +221,22 @@ Common::KeymapArray MetaEngine::initKeymaps(const Common::String &gameId, bool i
return keymapArray;
}
+const ExtraGuiOptions MetaEngine::getExtraGuiOptions(const Common::String& target) {
+ ExtraGuiOptions options;
+
+ for (const ExtraGuiOption *o = COMMON_OPTIONS; o->configOption; ++o) {
+ options.push_back(*o);
+ }
+
+ // Game specific keymaps
+ const ExtraGuiOption *game_options = (target.equals("ultima8") ? U8_OPTIONS : CRUSADER_OPTIONS);
+ for (const ExtraGuiOption *o = game_options; o->configOption; ++o) {
+ options.push_back(*o);
+ }
+
+ return options;
+}
+
void MetaEngine::setTextInputActive(bool isActive) {
Common::Keymapper *const mapper = g_engine->getEventManager()->getKeymapper();
mapper->setEnabled(!isActive);
diff --git a/engines/ultima/ultima8/meta_engine.h b/engines/ultima/ultima8/meta_engine.h
index d98b22f9b2..ec4d93a11a 100644
--- a/engines/ultima/ultima8/meta_engine.h
+++ b/engines/ultima/ultima8/meta_engine.h
@@ -24,6 +24,7 @@
#define ULTIMA_ULTIMA8_META_ENGINE
#include "backends/keymapper/keymapper.h"
+#include "engines/metaengine.h"
namespace Ultima {
namespace Ultima8 {
@@ -66,6 +67,11 @@ public:
*/
static Common::KeymapArray initKeymaps(const Common::String &gameId, bool isMenuActive = false);
+ /**
+ * Return the extra GUI options used by the target.
+ */
+ static const ExtraGuiOptions getExtraGuiOptions(const Common::String& target);
+
/**
* Execute an engine keymap press action
*/
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index 125c85fcce..d0950b1e47 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -185,7 +185,8 @@ bool Ultima8Engine::hasFeature(EngineFeature f) const {
(f == kSupportsSubtitleOptions) ||
(f == kSupportsReturnToLauncher) ||
(f == kSupportsLoadingDuringRuntime) ||
- (f == kSupportsSavingDuringRuntime);
+ (f == kSupportsSavingDuringRuntime) ||
+ (f == kSupportsChangingOptionsDuringRuntime);
}
bool Ultima8Engine::startup() {
More information about the Scummvm-git-logs
mailing list