[Scummvm-git-logs] scummvm master -> 77810fed70bd24c27cedb7e990449a4b5a2aae0e

sev- noreply at scummvm.org
Sun Jul 31 16:33:30 UTC 2022


This automated email contains information about 13 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
c264afed6f PINK: Fix alignment of title text in Peril PDA
b20be5a78f PINK: Add Action Text bounds to dirty rect array before deletion
fae3232d89 GRAPHICS: MACGUI: Don't trigger event for click on menuitem with submenu
cd985e2a7f GRAPHICS: MACGUI: Add flag to enforce mac font in win95 mode
2f6e514dc3 PINK: Run hebrew version in win95 mode
2eb0650ed8 PINK: Trim trailing spaces in PDA title
82688d5fb5 GRAPHICS: MACGUI: Add insertMenuItem
c031566369 GRAPHICS: MACGUI: Add removeMenuItem
5e5dd3f399 GRAPHICS: MACGUI: Fix signed/unsigned mismatch
d11cca7bee PINK: Show recent saves in Menu
154bcf414a GRAPHICS: MACGUI: Enable all menus in win95 mode
c1f4763bd8 PINK: Get all saves
77810fed70 GRAPHICS: MACGUI: Limit submenu width to 200


Commit: c264afed6fdb4149ac2a99aa47867f2de9aab4df
    https://github.com/scummvm/scummvm/commit/c264afed6fdb4149ac2a99aa47867f2de9aab4df
Author: Avijeet (am388488 at gmail.com)
Date: 2022-07-31T18:33:22+02:00

Commit Message:
PINK: Fix alignment of title text in Peril PDA

Changed paths:
    engines/pink/objects/actions/action_text.cpp


diff --git a/engines/pink/objects/actions/action_text.cpp b/engines/pink/objects/actions/action_text.cpp
index dd2b0c2d9ca..8091791f531 100644
--- a/engines/pink/objects/actions/action_text.cpp
+++ b/engines/pink/objects/actions/action_text.cpp
@@ -173,15 +173,14 @@ void ActionText::end() {
 }
 
 void ActionText::draw(Graphics::ManagedSurface *surface) {
-	int xOffset = 0, yOffset = 0;
+	int yOffset = 0;
 	// we need to first fill this area with backgroundColor, in order to wash away the previous text
 	surface->fillRect(Common::Rect(_xLeft, _yTop, _xRight, _yBottom), _backgroundColorIndex);
 
 	if (_centered) {
-		xOffset = (_xRight - _xLeft) / 2 - _macText->getTextMaxWidth() / 2;
 		yOffset = (_yBottom - _yTop) / 2 - _macText->getTextHeight() / 2;
 	}
-	_macText->drawToPoint(surface, Common::Rect(0, 0, _xRight - _xLeft, _yBottom - _yTop), Common::Point(_xLeft + xOffset, _yTop + yOffset));
+	_macText->drawToPoint(surface, Common::Rect(0, 0, _xRight - _xLeft, _yBottom - _yTop), Common::Point(_xLeft, _yTop + yOffset));
 }
 
 #define BLUE(rgb) ((rgb) & 0xFF)


Commit: b20be5a78fcdffce4830b9a8d758d9e8c50d7057
    https://github.com/scummvm/scummvm/commit/b20be5a78fcdffce4830b9a8d758d9e8c50d7057
Author: Avijeet (am388488 at gmail.com)
Date: 2022-07-31T18:33:22+02:00

Commit Message:
PINK: Add Action Text bounds to dirty rect array before deletion

Changed paths:
    engines/pink/objects/actions/action_text.cpp


diff --git a/engines/pink/objects/actions/action_text.cpp b/engines/pink/objects/actions/action_text.cpp
index 8091791f531..72f26df1612 100644
--- a/engines/pink/objects/actions/action_text.cpp
+++ b/engines/pink/objects/actions/action_text.cpp
@@ -162,6 +162,7 @@ Common::Rect ActionText::getBound() {
 
 void ActionText::end() {
 	Screen *screen = _actor->getPage()->getGame()->getScreen();
+	screen->addDirtyRect(this->getBound());
 	if (_scrollBar && _txtWnd) {
 		screen->getWndManager().removeWindow(_txtWnd);
 		screen->removeTextWindow(_txtWnd);


Commit: fae3232d8908b5155697a9229f779b7673878438
    https://github.com/scummvm/scummvm/commit/fae3232d8908b5155697a9229f779b7673878438
Author: Avijeet (am388488 at gmail.com)
Date: 2022-07-31T18:33:22+02:00

Commit Message:
GRAPHICS: MACGUI: Don't trigger event for click on menuitem with submenu

Changed paths:
    graphics/macgui/macmenu.cpp


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 519389dc5a1..6568f661043 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -1385,6 +1385,10 @@ bool MacMenu::mouseRelease(int x, int y) {
 
 	bool haveCallBack = false;
 	if (_activeItem != -1 && _activeSubItem != -1 && _menustack.back()->items[_activeSubItem]->enabled) {
+		// no action if item has submenu
+		if (_menustack.back()->items[_activeSubItem]->submenu) {
+			return false;
+		}
 		if (_menustack.back()->items[_activeSubItem]->unicode) {
 			if (checkCallback(true)) {
 				(*_unicodeccallback)(_menustack.back()->items[_activeSubItem]->action,


Commit: cd985e2a7f1b83ec9b8e1d8203524aed194f4257
    https://github.com/scummvm/scummvm/commit/cd985e2a7f1b83ec9b8e1d8203524aed194f4257
Author: Avijeet (am388488 at gmail.com)
Date: 2022-07-31T18:33:22+02:00

Commit Message:
GRAPHICS: MACGUI: Add flag to enforce mac font in win95 mode

Changed paths:
    graphics/macgui/macmenu.cpp
    graphics/macgui/macwindowmanager.h


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 6568f661043..b21451093e0 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -127,7 +127,7 @@ MacMenu::MacMenu(int id, const Common::Rect &bounds, MacWindowManager *wm)
 
 	_dimensionsDirty = true;
 
-	if (_wm->_mode & kWMModeWin95) {
+	if (_wm->_mode & kWMModeWin95 && !(_wm->_mode & kWMModeForceMacFontsInWin95)) {
 		_menuDropdownItemHeight = kMenuWin95DropdownItemHeight;
 		_menuLeftDropdownPadding = kMenuWin95LeftDropdownPadding;
 		_menuRightDropdownPadding = kMenuWin95RightDropdownPadding;
@@ -722,7 +722,7 @@ void MacMenu::createSubMenuFromString(int id, const char *str, int commandId) {
 
 const Font *MacMenu::getMenuFont(int slant) {
 #ifdef USE_FREETYPE2
-	if (_wm->_mode & kWMModeWin95) {
+	if (_wm->_mode & kWMModeWin95 && !(_wm->_mode & kWMModeForceMacFontsInWin95)) {
 		if (!_loadedFont) {
 			_loadedFont = Graphics::loadTTFFontFromArchive("ms_sans_serif.ttf", 16);
 
diff --git a/graphics/macgui/macwindowmanager.h b/graphics/macgui/macwindowmanager.h
index 29e6df0ac1e..ae1a66ec9d6 100644
--- a/graphics/macgui/macwindowmanager.h
+++ b/graphics/macgui/macwindowmanager.h
@@ -76,18 +76,19 @@ enum MacCursorType {
 };
 
 enum {
-	kWMModeNone         	= 0,
-	kWMModeNoDesktop    	= (1 << 0),
-	kWMModeAutohideMenu 	= (1 << 1),
-	kWMModalMenuMode 		= (1 << 2),
-	kWMModeForceBuiltinFonts= (1 << 3),
-	kWMModeUnicode			= (1 << 4),
-	kWMModeManualDrawWidgets= (1 << 5),
-	kWMModeFullscreen       = (1 << 6),
-	kWMModeButtonDialogStyle= (1 << 7),
-	kWMMode32bpp			= (1 << 8),
-	kWMNoScummVMWallpaper   = (1 << 9),
-	kWMModeWin95            = (1 << 10)
+	kWMModeNone         		= 0,
+	kWMModeNoDesktop    		= (1 << 0),
+	kWMModeAutohideMenu 		= (1 << 1),
+	kWMModalMenuMode 			= (1 << 2),
+	kWMModeForceBuiltinFonts	= (1 << 3),
+	kWMModeUnicode				= (1 << 4),
+	kWMModeManualDrawWidgets	= (1 << 5),
+	kWMModeFullscreen			= (1 << 6),
+	kWMModeButtonDialogStyle	= (1 << 7),
+	kWMMode32bpp				= (1 << 8),
+	kWMNoScummVMWallpaper		= (1 << 9),
+	kWMModeWin95				= (1 << 10),
+	kWMModeForceMacFontsInWin95 = (1 << 11) // Enforce Mac font for languages which don't have glyphs in ms_sans_serif.ttf
 };
 
 }


Commit: 2f6e514dc3609e4def4bd970073954dc96dc78bd
    https://github.com/scummvm/scummvm/commit/2f6e514dc3609e4def4bd970073954dc96dc78bd
Author: Avijeet (am388488 at gmail.com)
Date: 2022-07-31T18:33:22+02:00

Commit Message:
PINK: Run hebrew version in win95 mode

Changed paths:
    engines/pink/screen.cpp


diff --git a/engines/pink/screen.cpp b/engines/pink/screen.cpp
index ea395d62eb2..3505a3d148e 100644
--- a/engines/pink/screen.cpp
+++ b/engines/pink/screen.cpp
@@ -93,10 +93,10 @@ Screen::Screen(PinkEngine *vm)
 	: _surface(640, 480), _textRendered(false) {
 	uint32 wmMode = Graphics::kWMModeNoDesktop | Graphics::kWMModeAutohideMenu
 		| Graphics::kWMModalMenuMode | Graphics::kWMModeForceBuiltinFonts
-		| Graphics::kWMModeUnicode;
+		| Graphics::kWMModeUnicode	 | Graphics::kWMModeWin95;
 
-	if (vm->getLanguage() != Common::HE_ISR) // We do not have Hebrew font in MS fonts :(
-		wmMode |= Graphics::kWMModeWin95;
+	if (vm->getLanguage() == Common::HE_ISR) // We do not have Hebrew font in MS fonts :(
+		wmMode |= Graphics::kWMModeForceMacFontsInWin95;
 
 	_wm = new Graphics::MacWindowManager(wmMode);
 


Commit: 2eb0650ed887daa3ba8a5eb9a40aee877a095b6b
    https://github.com/scummvm/scummvm/commit/2eb0650ed887daa3ba8a5eb9a40aee877a095b6b
Author: Avijeet (am388488 at gmail.com)
Date: 2022-07-31T18:33:22+02:00

Commit Message:
PINK: Trim trailing spaces in PDA title

Changed paths:
    engines/pink/objects/actions/action_text.cpp


diff --git a/engines/pink/objects/actions/action_text.cpp b/engines/pink/objects/actions/action_text.cpp
index 72f26df1612..162d181ae87 100644
--- a/engines/pink/objects/actions/action_text.cpp
+++ b/engines/pink/objects/actions/action_text.cpp
@@ -129,6 +129,7 @@ void ActionText::start() {
 		break;
 	}
 
+	_text.trim();
 	delete[] str;
 
 	while ( _text.size() > 0 && (_text[ _text.size() - 1 ] == '\n' || _text[ _text.size() - 1 ] == '\r') )


Commit: 82688d5fb5565044221d320ac769bc9dfebc0776
    https://github.com/scummvm/scummvm/commit/82688d5fb5565044221d320ac769bc9dfebc0776
Author: Avijeet (am388488 at gmail.com)
Date: 2022-07-31T18:33:22+02:00

Commit Message:
GRAPHICS: MACGUI: Add insertMenuItem

Changed paths:
    graphics/macgui/macmenu.cpp
    graphics/macgui/macmenu.h


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index b21451093e0..d695900c16a 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -492,6 +492,67 @@ int MacMenu::addMenuItem(MacMenuSubMenu *submenu, const Common::U32String &text,
 	return submenu->items.size() - 1;
 }
 
+void MacMenu::insertMenuItem(MacMenuSubMenu *submenu, const Common::String &text, int pos, int action, int style, char shortcut, bool enabled, bool checked) {
+	_dimensionsDirty = true;
+
+	if (submenu == nullptr) {
+		if (pos >= _items.size()) {
+			_dimensionsDirty = false;
+		} else {
+			MacMenuItem *i = new MacMenuItem(text);
+			_items.insert(_items.begin() + pos, i);
+		}
+		return;
+	}
+
+	if (pos >= submenu->items.size()) {
+		_dimensionsDirty = false;
+		return;
+	}
+
+	_dimensionsDirty = true;
+
+	submenu->items.insert(submenu->items.begin() + pos, new MacMenuItem(text, action, style, shortcut, -1, enabled, checked));
+}
+
+void MacMenu::insertMenuItem(MacMenuSubMenu *submenu, const Common::U32String &text, int pos, int action, int style, char shortcut, bool enabled, bool checked) {
+	_dimensionsDirty = true;
+
+	Common::U32String amp("&");
+	Common::U32String res;
+	int shortcutPos = -1;
+
+	for (uint i = 0; i < text.size(); i++)
+		if (text[i] == amp[0]) {
+			if (i < text.size() - 1) {
+				if ((text[i + 1] & 0xff) != '&') {
+					shortcut = text[i + 1] & 0xff;
+					shortcutPos = i;
+				} else {
+					res += text[i];
+				}
+			}
+		} else {
+			res += text[i];
+		}
+
+	if (submenu == nullptr) {
+		if (pos >= _items.size()) {
+			_dimensionsDirty = false;
+		} else {
+			_items.insert(_items.begin() + pos, new MacMenuItem(res, -1, 0, shortcut, shortcutPos));
+		}
+		return;
+	}
+
+	if (pos >= submenu->items.size()) {
+		_dimensionsDirty = false;
+		return;
+	}
+
+	submenu->items.insert(submenu->items.begin() + pos, new MacMenuItem(res, action, style, shortcut, shortcutPos, enabled, checked));
+}
+
 void MacMenu::calcDimensions() {
 	// Calculate menu dimensions
 	int y = 1;
diff --git a/graphics/macgui/macmenu.h b/graphics/macgui/macmenu.h
index 83ca1a433a8..3d5086b3b72 100644
--- a/graphics/macgui/macmenu.h
+++ b/graphics/macgui/macmenu.h
@@ -77,6 +77,8 @@ public:
 	MacMenuSubMenu *addSubMenu(MacMenuSubMenu *submenu, int index = -1);
 	int addMenuItem(MacMenuSubMenu *submenu, const Common::String &text, int action = -1, int style = 0, char shortcut = 0, bool enabled = true, bool checked = false);
 	int addMenuItem(MacMenuSubMenu *submenu, const Common::U32String &text, int action = 0, int style = 0, char shortcut = 0, bool enabled = true, bool checked = false);
+	void insertMenuItem(MacMenuSubMenu *submenu, const Common::String &text, int pos, int action = -1, int style = 0, char shortcut = 0, bool enabled = true, bool checked = false);
+	void insertMenuItem(MacMenuSubMenu *submenu, const Common::U32String &text, int pos, int action = 0, int style = 0, char shortcut = 0, bool enabled = true, bool checked = false);
 	void loadMenuResource(Common::MacResManager *resFork, uint16 id);
 	void loadMenuBarResource(Common::MacResManager *resFork, uint16 id);
 	void createSubMenuFromString(int id, const char *string, int commandId);


Commit: c031566369af13ccb03dabc2fae955e53e5b9f06
    https://github.com/scummvm/scummvm/commit/c031566369af13ccb03dabc2fae955e53e5b9f06
Author: Avijeet (am388488 at gmail.com)
Date: 2022-07-31T18:33:22+02:00

Commit Message:
GRAPHICS: MACGUI: Add removeMenuItem

Changed paths:
    graphics/macgui/macmenu.cpp
    graphics/macgui/macmenu.h


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index d695900c16a..9057ab64e16 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -553,6 +553,25 @@ void MacMenu::insertMenuItem(MacMenuSubMenu *submenu, const Common::U32String &t
 	submenu->items.insert(submenu->items.begin() + pos, new MacMenuItem(res, action, style, shortcut, shortcutPos, enabled, checked));
 }
 
+void MacMenu::removeMenuItem(MacMenuSubMenu *submenu, uint pos) {
+	_dimensionsDirty = true;
+
+	if (submenu == nullptr) {
+		if (pos >= _items.size()) {
+			_dimensionsDirty = false;
+		} else {
+			delete _items.remove_at(pos);
+		}
+		return;
+	}
+
+	if (pos >= submenu->items.size()) {
+		_dimensionsDirty = false;
+		return;
+	}
+	delete submenu->items.remove_at(pos);
+}
+
 void MacMenu::calcDimensions() {
 	// Calculate menu dimensions
 	int y = 1;
diff --git a/graphics/macgui/macmenu.h b/graphics/macgui/macmenu.h
index 3d5086b3b72..a09a3fef533 100644
--- a/graphics/macgui/macmenu.h
+++ b/graphics/macgui/macmenu.h
@@ -79,6 +79,7 @@ public:
 	int addMenuItem(MacMenuSubMenu *submenu, const Common::U32String &text, int action = 0, int style = 0, char shortcut = 0, bool enabled = true, bool checked = false);
 	void insertMenuItem(MacMenuSubMenu *submenu, const Common::String &text, int pos, int action = -1, int style = 0, char shortcut = 0, bool enabled = true, bool checked = false);
 	void insertMenuItem(MacMenuSubMenu *submenu, const Common::U32String &text, int pos, int action = 0, int style = 0, char shortcut = 0, bool enabled = true, bool checked = false);
+	void removeMenuItem(MacMenuSubMenu *submenu, uint pos);
 	void loadMenuResource(Common::MacResManager *resFork, uint16 id);
 	void loadMenuBarResource(Common::MacResManager *resFork, uint16 id);
 	void createSubMenuFromString(int id, const char *string, int commandId);


Commit: 5e5dd3f3996a6c552e7a8a7b07f55ac5e31bd886
    https://github.com/scummvm/scummvm/commit/5e5dd3f3996a6c552e7a8a7b07f55ac5e31bd886
Author: Avijeet (am388488 at gmail.com)
Date: 2022-07-31T18:33:22+02:00

Commit Message:
GRAPHICS: MACGUI: Fix signed/unsigned mismatch

Changed paths:
    graphics/macgui/macmenu.cpp
    graphics/macgui/macmenu.h


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 9057ab64e16..1435ea8bc35 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -492,7 +492,7 @@ int MacMenu::addMenuItem(MacMenuSubMenu *submenu, const Common::U32String &text,
 	return submenu->items.size() - 1;
 }
 
-void MacMenu::insertMenuItem(MacMenuSubMenu *submenu, const Common::String &text, int pos, int action, int style, char shortcut, bool enabled, bool checked) {
+void MacMenu::insertMenuItem(MacMenuSubMenu *submenu, const Common::String &text, uint pos, int action, int style, char shortcut, bool enabled, bool checked) {
 	_dimensionsDirty = true;
 
 	if (submenu == nullptr) {
@@ -515,7 +515,7 @@ void MacMenu::insertMenuItem(MacMenuSubMenu *submenu, const Common::String &text
 	submenu->items.insert(submenu->items.begin() + pos, new MacMenuItem(text, action, style, shortcut, -1, enabled, checked));
 }
 
-void MacMenu::insertMenuItem(MacMenuSubMenu *submenu, const Common::U32String &text, int pos, int action, int style, char shortcut, bool enabled, bool checked) {
+void MacMenu::insertMenuItem(MacMenuSubMenu *submenu, const Common::U32String &text, uint pos, int action, int style, char shortcut, bool enabled, bool checked) {
 	_dimensionsDirty = true;
 
 	Common::U32String amp("&");
diff --git a/graphics/macgui/macmenu.h b/graphics/macgui/macmenu.h
index a09a3fef533..e566a67d92e 100644
--- a/graphics/macgui/macmenu.h
+++ b/graphics/macgui/macmenu.h
@@ -77,8 +77,8 @@ public:
 	MacMenuSubMenu *addSubMenu(MacMenuSubMenu *submenu, int index = -1);
 	int addMenuItem(MacMenuSubMenu *submenu, const Common::String &text, int action = -1, int style = 0, char shortcut = 0, bool enabled = true, bool checked = false);
 	int addMenuItem(MacMenuSubMenu *submenu, const Common::U32String &text, int action = 0, int style = 0, char shortcut = 0, bool enabled = true, bool checked = false);
-	void insertMenuItem(MacMenuSubMenu *submenu, const Common::String &text, int pos, int action = -1, int style = 0, char shortcut = 0, bool enabled = true, bool checked = false);
-	void insertMenuItem(MacMenuSubMenu *submenu, const Common::U32String &text, int pos, int action = 0, int style = 0, char shortcut = 0, bool enabled = true, bool checked = false);
+	void insertMenuItem(MacMenuSubMenu *submenu, const Common::String &text, uint pos, int action = -1, int style = 0, char shortcut = 0, bool enabled = true, bool checked = false);
+	void insertMenuItem(MacMenuSubMenu *submenu, const Common::U32String &text, uint pos, int action = 0, int style = 0, char shortcut = 0, bool enabled = true, bool checked = false);
 	void removeMenuItem(MacMenuSubMenu *submenu, uint pos);
 	void loadMenuResource(Common::MacResManager *resFork, uint16 id);
 	void loadMenuBarResource(Common::MacResManager *resFork, uint16 id);


Commit: d11cca7bee31c5629fe376892cf986ced90116a6
    https://github.com/scummvm/scummvm/commit/d11cca7bee31c5629fe376892cf986ced90116a6
Author: Avijeet (am388488 at gmail.com)
Date: 2022-07-31T18:33:22+02:00

Commit Message:
PINK: Show recent saves in Menu

Changed paths:
    engines/pink/gui.cpp


diff --git a/engines/pink/gui.cpp b/engines/pink/gui.cpp
index b6099a0be29..c8877224560 100644
--- a/engines/pink/gui.cpp
+++ b/engines/pink/gui.cpp
@@ -127,12 +127,49 @@ enum {
 	kShowAbout					= 57664
 };
 
+enum {
+	kRecentSaveId		= 9,
+	kRecentSavesOffset	= 400000,
+	kMaxSaves			= 10
+};
+
 static void menuCommandsCallback(int action, Common::U32String &, void *data) {
 	PinkEngine *engine = (PinkEngine *)data;
 
 	engine->executeMenuCommand(action);
 }
 
+struct SaveStateDescriptorTimeComparator {
+	bool operator()(const SaveStateDescriptor &x, const SaveStateDescriptor &y) const {
+		return x.getSaveDate() == y.getSaveDate() ? x.getSaveTime() > y.getSaveTime() : x.getSaveDate() > y.getSaveDate();
+	}
+};
+
+static SaveStateList listSaves(bool isPeril) {
+	Common::SaveFileManager *saveFileMan = g_system->getSavefileManager();
+	Common::String pattern = isPeril ? "peril.s##" : "pokus.s##";
+	Common::StringArray filenames = saveFileMan->listSavefiles(pattern);
+
+	SaveStateList saveList;
+	for (Common::StringArray::const_iterator file = filenames.begin(); file != filenames.end(); ++file) {
+		// Obtain the last 2 digits of the filename, since they correspond to the save slot
+		int slotNum = atoi(file->c_str() + file->size() - 2);
+		if (slotNum >= 0 && slotNum <= 10) {
+			Common::ScopedPtr<Common::InSaveFile> in(saveFileMan->openForLoading(*file));
+			if (in) {
+				SaveStateDescriptor desc;
+				desc.setSaveSlot(slotNum);
+				if (Pink::readSaveHeader(*in.get(), desc))
+					saveList.push_back(desc);
+			}
+		}
+	}
+
+	// Sort saves based on save time.
+	Common::sort(saveList.begin(), saveList.end(), SaveStateDescriptorTimeComparator());
+	return saveList;
+}
+
 void PinkEngine::initMenu() {
 	_screen->getWndManager().setEngine(this);
 
@@ -140,6 +177,20 @@ void PinkEngine::initMenu() {
 	if (getLanguage() == Common::HE_ISR) {
 		_menu->setAlignment(Graphics::kTextAlignRight);
 	}
+
+	Graphics::MacMenuSubMenu *subMenu = _menu->getSubmenu(nullptr, 0);
+	if (subMenu) {
+		SaveStateList saves = listSaves(isPeril());
+		if (!saves.empty()) {
+			_menu->removeMenuItem(subMenu, kRecentSaveId);
+			int maxSaves = saves.size() > kMaxSaves ? kMaxSaves : saves.size();
+			for (int i = 0; i < maxSaves; ++i) {
+				_menu->insertMenuItem(subMenu, Common::U32String::format("%i. %S", i + 1, saves[i].getDescription().u32_str()),
+										kRecentSaveId + i, saves[i].getSaveSlot() + kRecentSavesOffset);
+			}
+		}
+	}
+
 	_menu->calcDimensions();
 	_menu->setCommandsCallback(&menuCommandsCallback, this);
 }
@@ -148,6 +199,16 @@ void PinkEngine::executeMenuCommand(uint id) {
 	if (executePageChangeCommand(id))
 		return;
 
+	if (id >= kRecentSavesOffset) {
+		int slotNum = id - kRecentSavesOffset;
+		Common::Error loadError = loadGameState(slotNum);
+		if (loadError.getCode() != Common::kNoError) {
+			GUI::MessageDialog errorDialog(loadError.getDesc());
+			errorDialog.runModal();
+		}
+		return;
+	}
+
 	switch (id) {
 	case kNewGameAction: {
 		const Common::String moduleName = _modules[0]->getName();


Commit: 154bcf414adb8704b6518e6e155908bad7e442bc
    https://github.com/scummvm/scummvm/commit/154bcf414adb8704b6518e6e155908bad7e442bc
Author: Avijeet (am388488 at gmail.com)
Date: 2022-07-31T18:33:22+02:00

Commit Message:
GRAPHICS: MACGUI: Enable all menus in win95 mode

Changed paths:
    graphics/macgui/macmenu.cpp
    graphics/macgui/macmenu.h


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 1435ea8bc35..c6a67bfd60e 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -73,6 +73,8 @@ struct MacMenuSubMenu {
 
 	~MacMenuSubMenu();
 
+	void enableAllItems();
+
 	int ytoItem(int y, int itemHeight) { return MIN<int>((y - bbox.top) / itemHeight, items.size() - 1); }
 };
 
@@ -108,6 +110,15 @@ MacMenuSubMenu::~MacMenuSubMenu() {
 		delete items[i];
 }
 
+void MacMenuSubMenu::enableAllItems() {
+	for (uint i = 0; i < items.size(); ++i) {
+		items[i]->enabled = true;
+		if (items[i]->submenu) {
+			items[i]->submenu->enableAllItems();
+		}
+	}
+}
+
 MacMenu::MacMenu(int id, const Common::Rect &bounds, MacWindowManager *wm)
 		: BaseMacWindow(id, false, wm) {
 	_loadedFont = NULL;
@@ -280,6 +291,9 @@ MacMenu *MacMenu::createMenuFromPEexe(Common::PEResources *exe, MacWindowManager
 	if (gDebugLevel > 5)
 		menu->printMenu();
 
+	if (wm->_mode & Graphics::kWMModeWin95)
+		menu->enableAllMenus();
+
 	return menu;
 }
 
@@ -1570,6 +1584,14 @@ void MacMenu::enableCommand(const Common::U32String &menuitem, const Common::U32
 	_contentIsDirty = true;
 }
 
+void MacMenu::enableAllMenus() {
+	for (uint i = 0; i < _items.size(); i++)
+		if (_items[i]->submenu != nullptr)
+			_items[i]->submenu->enableAllItems();
+
+	_contentIsDirty = true;
+}
+
 void MacMenu::disableAllMenus() {
 	for (uint i = 1; i < _items.size(); i++) // Leave About menu on
 		if (_items[i]->submenu != nullptr)
diff --git a/graphics/macgui/macmenu.h b/graphics/macgui/macmenu.h
index e566a67d92e..5517faac8a2 100644
--- a/graphics/macgui/macmenu.h
+++ b/graphics/macgui/macmenu.h
@@ -96,6 +96,7 @@ public:
 	void enableCommand(int menunum, int action, bool state);
 	void enableCommand(const char *menuitem, const char *menuaction, bool state);
 	void enableCommand(const Common::U32String &menuitem, const Common::U32String &menuaction, bool state);
+	void enableAllMenus();
 	void disableAllMenus();
 
 	bool isVisible() { return _isVisible; }


Commit: c1f4763bd87a28661e75e7f129ad00fa0817e618
    https://github.com/scummvm/scummvm/commit/c1f4763bd87a28661e75e7f129ad00fa0817e618
Author: Avijeet (am388488 at gmail.com)
Date: 2022-07-31T18:33:22+02:00

Commit Message:
PINK: Get all saves

Changed paths:
    engines/pink/gui.cpp


diff --git a/engines/pink/gui.cpp b/engines/pink/gui.cpp
index c8877224560..2c249d0ce20 100644
--- a/engines/pink/gui.cpp
+++ b/engines/pink/gui.cpp
@@ -154,14 +154,12 @@ static SaveStateList listSaves(bool isPeril) {
 	for (Common::StringArray::const_iterator file = filenames.begin(); file != filenames.end(); ++file) {
 		// Obtain the last 2 digits of the filename, since they correspond to the save slot
 		int slotNum = atoi(file->c_str() + file->size() - 2);
-		if (slotNum >= 0 && slotNum <= 10) {
-			Common::ScopedPtr<Common::InSaveFile> in(saveFileMan->openForLoading(*file));
-			if (in) {
-				SaveStateDescriptor desc;
-				desc.setSaveSlot(slotNum);
-				if (Pink::readSaveHeader(*in.get(), desc))
-					saveList.push_back(desc);
-			}
+		Common::ScopedPtr<Common::InSaveFile> in(saveFileMan->openForLoading(*file));
+		if (in) {
+			SaveStateDescriptor desc;
+			desc.setSaveSlot(slotNum);
+			if (Pink::readSaveHeader(*in.get(), desc))
+				saveList.push_back(desc);
 		}
 	}
 


Commit: 77810fed70bd24c27cedb7e990449a4b5a2aae0e
    https://github.com/scummvm/scummvm/commit/77810fed70bd24c27cedb7e990449a4b5a2aae0e
Author: Avijeet (am388488 at gmail.com)
Date: 2022-07-31T18:33:22+02:00

Commit Message:
GRAPHICS: MACGUI: Limit submenu width to 200

Changed paths:
    graphics/macgui/macmenu.cpp


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index c6a67bfd60e..cccb5537419 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -964,7 +964,7 @@ int MacMenu::calcSubMenuWidth(MacMenuSubMenu *submenu) {
 			}
 		}
 	}
-	return maxWidth;
+	return maxWidth > 200 ? 200 : maxWidth;
 }
 
 void MacMenu::calcSubMenuBounds(MacMenuSubMenu *submenu, int x, int y) {




More information about the Scummvm-git-logs mailing list