[Scummvm-git-logs] scummvm master -> c192b98799bf35efb55ac3a1687364ac53bbcac7

eriktorbjorn noreply at scummvm.org
Sun Jan 5 16:34:22 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:
c192b98799 SCUMM: MACGUI: Disable permanently disabled menu items just once


Commit: c192b98799bf35efb55ac3a1687364ac53bbcac7
    https://github.com/scummvm/scummvm/commit/c192b98799bf35efb55ac3a1687364ac53bbcac7
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2025-01-05T17:33:57+01:00

Commit Message:
SCUMM: MACGUI: Disable permanently disabled menu items just once

There is no need to disable menu items that are meant to stay disabled
more than once. This also adds disabling of some Maniac Mansion-specific
stuff.

Maniac Mansion seems to be running fairly well (user friendlyness issues
aside), though we need to figure out how to suppress the Mac GUI while
the game is paused. I also had it hang on me once on quit. No idea why.

Changed paths:
    engines/scumm/macgui/macgui_impl.cpp
    engines/scumm/macgui/macgui_impl.h
    engines/scumm/macgui/macgui_v5.cpp
    engines/scumm/macgui/macgui_v5.h
    engines/scumm/macgui/macgui_v6.cpp
    engines/scumm/macgui/macgui_v6.h


diff --git a/engines/scumm/macgui/macgui_impl.cpp b/engines/scumm/macgui/macgui_impl.cpp
index 32cbee89560..4ba407bc9f8 100644
--- a/engines/scumm/macgui/macgui_impl.cpp
+++ b/engines/scumm/macgui/macgui_impl.cpp
@@ -115,6 +115,8 @@ bool MacGuiImpl::handleEvent(Common::Event event) {
 	// The situation we're trying to avoid here is the user opening e.g.
 	// the save dialog using keyboard shortcuts while the game is paused.
 
+	// TODO: We need something for Maniac Mansion here
+
 	if (_bannerWindow || _vm->_messageBannerActive)
 		return false;
 
@@ -488,19 +490,6 @@ void MacGuiImpl::updateWindowManager() {
 
 	if (_vm->_game.version > 3 && _vm->_game.version < 6) {
 		Graphics::MacMenuItem *windowMenu = menu->getMenuItem("Window");
-		Graphics::MacMenuItem *hideDesktopMenu = menu->getSubMenuItem(windowMenu, 0);
-		Graphics::MacMenuItem *hideBarMenu = menu->getSubMenuItem(windowMenu, 1);
-
-		hideDesktopMenu->enabled = false;
-		hideBarMenu->enabled = false;
-
-		// "Fix color map"
-		menu->getSubMenuItem(gameMenu, 5)->enabled = false;
-
-		// Window mode
-		menu->getSubMenuItem(windowMenu, 3)->enabled = false;
-		menu->getSubMenuItem(windowMenu, 4)->enabled = false;
-		menu->getSubMenuItem(windowMenu, 5)->enabled = false;
 
 		if (menu->numberOfMenuItems(windowMenu) >= 8)
 			menu->getSubMenuItem(windowMenu, 7)->checked = _vm->_useMacGraphicsSmoothing;
@@ -534,10 +523,10 @@ void MacGuiImpl::updateWindowManager() {
 
 		Graphics::MacMenuItem *videoMenu = menu->getMenuItem(3);
 
-		menu->getSubMenuItem(videoMenu, 0)->enabled = false;
-		menu->getSubMenuItem(videoMenu, 1)->enabled = false;
 		menu->getSubMenuItem(videoMenu, 2)->checked = true;
-		menu->getSubMenuItem(videoMenu, 3)->checked = _vm->_useMacGraphicsSmoothing;
+
+		if (_vm->_game.id != GID_MANIAC)
+			menu->getSubMenuItem(videoMenu, 3)->checked = _vm->_useMacGraphicsSmoothing;
 
 		Graphics::MacMenuItem *soundMenu = menu->getMenuItem(4);
 
diff --git a/engines/scumm/macgui/macgui_impl.h b/engines/scumm/macgui/macgui_impl.h
index 5bcca04937c..364dbbed503 100644
--- a/engines/scumm/macgui/macgui_impl.h
+++ b/engines/scumm/macgui/macgui_impl.h
@@ -803,7 +803,7 @@ public:
 	virtual bool handleEvent(Common::Event event);
 
 	static void menuCallback(int id, Common::String &name, void *data);
-	bool initialize();
+	virtual bool initialize();
 	void updateWindowManager();
 
 	const Graphics::Font *getFont(FontId fontId);
diff --git a/engines/scumm/macgui/macgui_v5.cpp b/engines/scumm/macgui/macgui_v5.cpp
index 4956b51ebca..d347a8f9857 100644
--- a/engines/scumm/macgui/macgui_v5.cpp
+++ b/engines/scumm/macgui/macgui_v5.cpp
@@ -46,6 +46,27 @@ namespace Scumm {
 MacV5Gui::MacV5Gui(ScummEngine *vm, const Common::Path &resourceFile) : MacGuiImpl(vm, resourceFile) {
 }
 
+bool MacV5Gui::initialize() {
+	if (!MacGuiImpl::initialize())
+		return false;
+
+	Graphics::MacMenu *menu = _windowManager->getMenu();
+
+	Graphics::MacMenuItem *gameMenu = menu->getMenuItem(1);
+
+	menu->getSubMenuItem(gameMenu, 5)->enabled = false; // Fix color map
+
+	Graphics::MacMenuItem *windowMenu = menu->getMenuItem(3);
+
+	menu->getSubMenuItem(windowMenu, 0)->enabled = false; // Hide Desktop
+	menu->getSubMenuItem(windowMenu, 1)->enabled = false; // Hide Menubar
+	menu->getSubMenuItem(windowMenu, 3)->enabled = false; // Tiny
+	menu->getSubMenuItem(windowMenu, 4)->enabled = false; // Medium
+	menu->getSubMenuItem(windowMenu, 5)->enabled = false; // Large
+
+	return true;
+}
+
 const Graphics::Font *MacV5Gui::getFontByScummId(int32 id) {
 	// V5 games do not use CharsetRendererMac
 	return nullptr;
diff --git a/engines/scumm/macgui/macgui_v5.h b/engines/scumm/macgui/macgui_v5.h
index 77ade05d153..0ea1bcba46b 100644
--- a/engines/scumm/macgui/macgui_v5.h
+++ b/engines/scumm/macgui/macgui_v5.h
@@ -35,6 +35,8 @@ public:
 	MacV5Gui(ScummEngine *vm, const Common::Path &resourceFile);
 	~MacV5Gui() {}
 
+	bool initialize() override;
+
 	const Common::String name() const override { return _strsStrings[kMSIGameName]; }
 	int getNumColors() const override { return 256; }
 
diff --git a/engines/scumm/macgui/macgui_v6.cpp b/engines/scumm/macgui/macgui_v6.cpp
index 37a3ae1a2f4..faa02487ca5 100644
--- a/engines/scumm/macgui/macgui_v6.cpp
+++ b/engines/scumm/macgui/macgui_v6.cpp
@@ -80,6 +80,34 @@ MacV6Gui::~MacV6Gui() {
 	delete[] _backupPalette;
 }
 
+bool MacV6Gui::initialize() {
+	if (!MacGuiImpl::initialize())
+		return false;
+
+	// We can't use the name of the menus here, because there are
+	// non-English versions. Let's hope the menu positions are always the
+	// same, at least!
+
+	Graphics::MacMenu *menu = _windowManager->getMenu();
+	Graphics::MacMenuItem *videoMenu = menu->getMenuItem(3);
+
+	menu->getSubMenuItem(videoMenu, 0)->enabled = false; // Small
+	menu->getSubMenuItem(videoMenu, 1)->enabled = false; // Interlaced
+
+	if (_vm->_game.id == GID_MANIAC) {
+		Graphics::MacMenuItem *soundMenu = menu->getMenuItem(4);
+
+		menu->getSubMenuItem(soundMenu, 0)->enabled = false; // Music
+		menu->getSubMenuItem(soundMenu, 1)->enabled = false; // Effects
+		menu->getSubMenuItem(soundMenu, 3)->enabled = false; // Toggle Text & Voice
+		menu->getSubMenuItem(soundMenu, 5)->enabled = false; // Text Only
+		menu->getSubMenuItem(soundMenu, 6)->enabled = false; // Voice Only
+		menu->getSubMenuItem(soundMenu, 7)->enabled = false; // Text & Voice
+	}
+
+	return true;
+}
+
 bool MacV6Gui::readStrings() {
 	_strsStrings.clear();
 	_strsStrings.reserve(128);
@@ -190,7 +218,8 @@ bool MacV6Gui::handleMenu(int id, Common::String &name) {
 		return true;
 
 	case 403:	// Graphics Smoothing
-		_vm->mac_toggleSmoothing();
+		if (_vm->_game.id != GID_MANIAC)
+			_vm->mac_toggleSmoothing();
 		return true;
 
 	case 500:	// Music
diff --git a/engines/scumm/macgui/macgui_v6.h b/engines/scumm/macgui/macgui_v6.h
index f255d9a3dfe..45035929c37 100644
--- a/engines/scumm/macgui/macgui_v6.h
+++ b/engines/scumm/macgui/macgui_v6.h
@@ -43,6 +43,7 @@ public:
 	MacV6Gui(ScummEngine *vm, const Common::Path &resourceFile);
 	~MacV6Gui();
 
+	bool initialize() override;
 	bool readStrings() override;
 
 	const Common::String name() const override { return _gameName; }




More information about the Scummvm-git-logs mailing list