Skip to content

Commit

Permalink
TOLTECS: Scroll original save/load dialog to bottom on opening
Browse files Browse the repository at this point in the history
This doesn't behave quite like the original - it seems the original
does not take the fake last entry into account when saving? - but I
think it's actually a bit more consistent this way.
  • Loading branch information
Torbjörn Andersson committed Jan 4, 2013
1 parent 8afe7a2 commit c9a175a
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 8 deletions.
19 changes: 12 additions & 7 deletions engines/toltecs/menu.cpp
Expand Up @@ -254,7 +254,7 @@ void MenuSystem::initMenu(MenuID menuID) {
addClickTextItem((ItemID)(kItemIdSavegame1 + i - 1), 0, 116 + 20 * (i - 1), 300, 0, saveDesc.c_str(), 231, 234);
}
loadSavegamesList();
setSavegameCaptions();
setSavegameCaptions(true);
} else {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Restore game:"), _("Restore"), false);
int slot = dialog->runModalWithCurrentTarget();
Expand All @@ -279,7 +279,7 @@ void MenuSystem::initMenu(MenuID menuID) {
}
newSlotNum = loadSavegamesList() + 1;
_savegames.push_back(SavegameItem(newSlotNum, Common::String::format("GAME %04d", _savegames.size())));
setSavegameCaptions();
setSavegameCaptions(true);
} else {
GUI::SaveLoadChooser *dialog = new GUI::SaveLoadChooser(_("Save game:"), _("Save"), true);
int slot = dialog->runModalWithCurrentTarget();
Expand Down Expand Up @@ -531,16 +531,21 @@ MenuSystem::SavegameItem *MenuSystem::getSavegameItemByID(ItemID id) {
return NULL;
}

void MenuSystem::setSavegameCaptions() {
uint index = _savegameListTopIndex;
void MenuSystem::setSavegameCaptions(bool scrollToBottom) {
int size = _savegames.size();
if (scrollToBottom && size > 0) {
while (_savegameListTopIndex + 7 <= size)
_savegameListTopIndex += 6;
}
int index = _savegameListTopIndex;
for (int i = 1; i <= 7; i++)
setItemCaption(getItem((ItemID)(kItemIdSavegame1 + i - 1)), index < _savegames.size() ? _savegames[index++]._description.c_str() : "");
setItemCaption(getItem((ItemID)(kItemIdSavegame1 + i - 1)), index < size ? _savegames[index++]._description.c_str() : "");
if (_savegameListTopIndex == 0) {
disableItem(kItemIdSavegameUp);
} else {
enableItem(kItemIdSavegameUp);
}
if ((uint)_savegameListTopIndex + 7 > _savegames.size()) {
if (_savegameListTopIndex + 7 > size) {
disableItem(kItemIdSavegameDown);
} else {
enableItem(kItemIdSavegameDown);
Expand All @@ -551,7 +556,7 @@ void MenuSystem::scrollSavegames(int delta) {
int newPos = CLIP<int>(_savegameListTopIndex + delta, 0, _savegames.size() - 1);
_savegameListTopIndex = newPos;
restoreRect(80, 92, 440, 140);
setSavegameCaptions();
setSavegameCaptions(false);
for (int i = 1; i <= 7; i++)
drawItem((ItemID)(kItemIdSavegame1 + i - 1), false);
}
Expand Down
2 changes: 1 addition & 1 deletion engines/toltecs/menu.h
Expand Up @@ -145,7 +145,7 @@ class MenuSystem {
SavegameItem *getSavegameItemByID(ItemID id);

int loadSavegamesList();
void setSavegameCaptions();
void setSavegameCaptions(bool scrollToBottom);
void scrollSavegames(int delta);
void clickSavegameItem(ItemID id);
void setCfgText(bool value, bool active);
Expand Down

0 comments on commit c9a175a

Please sign in to comment.