[Scummvm-git-logs] scummvm master -> cec5900287c81aa13e47b768aeaea472f4361f2d
OMGPizzaGuy
noreply at scummvm.org
Sun Jan 28 20:14:00 UTC 2024
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:
cec5900287 ULTIMA8: Show last save page when opening save and load gump
Commit: cec5900287c81aa13e47b768aeaea472f4361f2d
https://github.com/scummvm/scummvm/commit/cec5900287c81aa13e47b768aeaea472f4361f2d
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2024-01-28T14:13:35-06:00
Commit Message:
ULTIMA8: Show last save page when opening save and load gump
Changed paths:
engines/ultima/ultima8/gumps/paged_gump.cpp
engines/ultima/ultima8/gumps/paged_gump.h
engines/ultima/ultima8/gumps/u8_save_gump.cpp
diff --git a/engines/ultima/ultima8/gumps/paged_gump.cpp b/engines/ultima/ultima8/gumps/paged_gump.cpp
index cb8957b331b..c89ce78b687 100644
--- a/engines/ultima/ultima8/gumps/paged_gump.cpp
+++ b/engines/ultima/ultima8/gumps/paged_gump.cpp
@@ -35,8 +35,7 @@ DEFINE_RUNTIME_CLASSTYPE_CODE(PagedGump)
PagedGump::PagedGump(int left, int right, int top, int shape):
ModalGump(0, 0, 5, 5), _leftOff(left), _rightOff(right), _topOff(top),
_gumpShape(shape), _nextButton(nullptr), _prevButton(nullptr),
- _buttonsEnabled(true) {
- _current = _gumps.end();
+ _current(0), _buttonsEnabled(true) {
}
PagedGump::~PagedGump(void) {
@@ -88,8 +87,9 @@ void PagedGump::onMouseDouble(int button, int32 mx, int32 my) {
}
bool PagedGump::OnKeyDown(int key, int mod) {
- if (_current != _gumps.end())
- if ((*_current)->OnKeyDown(key, mod)) return true;
+ if (_current < _gumps.size())
+ if (_gumps[_current]->OnKeyDown(key, mod))
+ return true;
switch (key) {
case Common::KEYCODE_ESCAPE:
@@ -110,25 +110,25 @@ void PagedGump::ChildNotify(Gump *child, uint32 message) {
if (message == ButtonWidget::BUTTON_UP) {
if (cid == _nextButton->getObjId()) {
- if (_current + 1 != _gumps.end()) {
- (*_current)->HideGump();
+ if (_current + 1 < _gumps.size()) {
+ _gumps[_current]->HideGump();
++_current;
- (*_current)->UnhideGump();
- (*_current)->MakeFocus();
+ _gumps[_current]->UnhideGump();
+ _gumps[_current]->MakeFocus();
- if (_current + 1 == _gumps.end())
+ if (_current + 1 == _gumps.size())
_nextButton->HideGump();
_prevButton->UnhideGump();
}
} else if (cid == _prevButton->getObjId()) {
- if (_current != _gumps.begin()) {
- (*_current)->HideGump();
+ if (_current > 0) {
+ _gumps[_current]->HideGump();
--_current;
- (*_current)->UnhideGump();
- (*_current)->MakeFocus();
+ _gumps[_current]->UnhideGump();
+ _gumps[_current]->MakeFocus();
- if (_current == _gumps.begin())
+ if (_current == 0)
_prevButton->HideGump();
_nextButton->UnhideGump();
@@ -143,17 +143,37 @@ void PagedGump::addPage(Gump *g) {
g->HideGump();
_gumps.push_back(g);
- _current = _gumps.begin();
- (*_current)->UnhideGump();
- if (_focusChild != *_current)
- (*_current)->MakeFocus();
+ _current = 0;
+ _gumps[_current]->UnhideGump();
+ if (_focusChild != _gumps[_current])
+ _gumps[_current]->MakeFocus();
- if (_current + 1 == _gumps.end())
+ if (_current + 1 == _gumps.size())
_nextButton->HideGump();
else
_nextButton->UnhideGump();
}
+void PagedGump::showPage(uint index) {
+ if (index >= _gumps.size())
+ return;
+
+ _gumps[_current]->HideGump();
+ _current = index;
+ _gumps[_current]->UnhideGump();
+ _gumps[_current]->MakeFocus();
+
+ if (_current + 1 == _gumps.size())
+ _nextButton->HideGump();
+ else
+ _nextButton->UnhideGump();
+
+ if (_current == 0)
+ _prevButton->HideGump();
+ else
+ _prevButton->UnhideGump();
+}
+
bool PagedGump::loadData(Common::ReadStream *rs) {
warning("Trying to load ModalGump");
return false;
diff --git a/engines/ultima/ultima8/gumps/paged_gump.h b/engines/ultima/ultima8/gumps/paged_gump.h
index 73cb2df1d6f..065b74508a5 100644
--- a/engines/ultima/ultima8/gumps/paged_gump.h
+++ b/engines/ultima/ultima8/gumps/paged_gump.h
@@ -51,6 +51,7 @@ public:
//! add a page. Note: g already has to be a child gump.
void addPage(Gump *g);
+ void showPage(uint index);
void enableButtons(bool enabled) {
_buttonsEnabled = enabled;
@@ -61,10 +62,10 @@ public:
protected:
int _leftOff, _rightOff, _topOff, _gumpShape;
- Std::vector<Gump *> _gumps;
+ Common::Array<Gump *> _gumps;
Gump *_nextButton;
Gump *_prevButton;
- Std::vector<Gump *>::iterator _current;
+ uint _current;
bool _buttonsEnabled;
};
diff --git a/engines/ultima/ultima8/gumps/u8_save_gump.cpp b/engines/ultima/ultima8/gumps/u8_save_gump.cpp
index 9235a1d4fb8..5f410c5515a 100644
--- a/engines/ultima/ultima8/gumps/u8_save_gump.cpp
+++ b/engines/ultima/ultima8/gumps/u8_save_gump.cpp
@@ -329,6 +329,10 @@ Gump *U8SaveGump::showLoadSaveGump(Gump *parent, bool save) {
gump->addPage(s);
}
+ int lastSave = ConfMan.hasKey("lastSave") ? ConfMan.getInt("lastSave") : -1;
+ if (lastSave > 0) {
+ gump->showPage((lastSave - 1) / 6);
+ }
gump->setRelativePosition(CENTER);
More information about the Scummvm-git-logs
mailing list