[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