[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