[Scummvm-cvs-logs] SF.net SVN: scummvm:[41683] scummvm/trunk/engines/kyra
athrxx at users.sourceforge.net
athrxx at users.sourceforge.net
Fri Jun 19 20:46:22 CEST 2009
Revision: 41683
http://scummvm.svn.sourceforge.net/scummvm/?rev=41683&view=rev
Author: athrxx
Date: 2009-06-19 18:46:19 +0000 (Fri, 19 Jun 2009)
Log Message:
-----------
LOL: - implemented delete menu
- fixed some bugs in the menu code
Modified Paths:
--------------
scummvm/trunk/engines/kyra/gui_lol.cpp
scummvm/trunk/engines/kyra/gui_lol.h
scummvm/trunk/engines/kyra/staticres.cpp
Modified: scummvm/trunk/engines/kyra/gui_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/gui_lol.cpp 2009-06-19 18:30:55 UTC (rev 41682)
+++ scummvm/trunk/engines/kyra/gui_lol.cpp 2009-06-19 18:46:19 UTC (rev 41683)
@@ -2236,11 +2236,9 @@
while (_displayMenu) {
_vm->_mouseX = _vm->_mouseY = 0;
- if (_currentMenu == &_loadMenu || _currentMenu == &_saveMenu) {
+ if (_currentMenu == &_loadMenu || _currentMenu == &_saveMenu || _currentMenu == &_deleteMenu) {
updateSaveList(true);
Common::sort(_saveSlots.begin(), _saveSlots.end(), Common::Greater<int>());
-
-
setupSavegameNames(*_currentMenu, 4);
}
@@ -2313,7 +2311,7 @@
if (!_newMenu)
_newMenu = _currentMenu;
else
- _lastMenu = _currentMenu;
+ _lastMenu = _menuResult == -1 ? _lastMenu : _currentMenu;
}
if (!_menuResult)
@@ -2364,8 +2362,8 @@
for (uint32 ii = 0; ii < strlen(s); ii++) {
for (int iii = 0; iii < _vm->_fontConversionTableGermanSize; iii += 2) {
- if (s[ii] == _vm->_fontConversionTableGerman[iii]) {
- s[ii] = _vm->_fontConversionTableGerman[iii + 1];
+ if ((uint8)s[ii] == _vm->_fontConversionTableGerman[iii]) {
+ s[ii] = (uint8)_vm->_fontConversionTableGerman[iii + 1];
break;
}
}
@@ -2424,13 +2422,16 @@
updateMenuButton(button);
switch (button->arg) {
case 0x4001:
+ _savegameOffset = 0;
_newMenu = &_loadMenu;
break;
case 0x4002:
+ _savegameOffset = 0;
//_newMenu = &_saveMenu;
break;
case 0x4003:
- //_newMenu = &_deleteMenu;
+ _savegameOffset = 0;
+ _newMenu = &_deleteMenu;
break;
case 0x4004:
_newMenu = &_gameOptions;
@@ -2467,6 +2468,23 @@
return 1;
}
+int GUI_LoL::clickedSaveMenu(Button *button) {
+ updateMenuButton(button);
+
+ return 1;
+}
+
+int GUI_LoL::clickedDeleteMenu(Button *button) {
+ updateMenuButton(button);
+
+ _choiceMenu.menuNameId = 0x400b;
+ _newMenu = (button->arg == 0x4011) ? _lastMenu : &_choiceMenu;
+ int16 s = (int16)button->arg;
+ _menuResult = _deleteMenu.item[-s - 2].saveSlot;
+
+ return 1;
+}
+
int GUI_LoL::clickedOptionsMenu(Button *button) {
updateMenuButton(button);
@@ -2516,10 +2534,14 @@
int GUI_LoL::clickedChoiceMenu(Button *button) {
updateMenuButton(button);
if (button->arg == _choiceMenu.item[0].itemId) {
- if (_lastMenu == &_mainMenu)
+ if (_lastMenu == &_mainMenu) {
_vm->quitGame();
+ } else if (_lastMenu == &_deleteMenu) {
+ _vm->_saveFileMan->removeSavefile(_vm->getSavegameFilename(_menuResult));
+ _newMenu = &_mainMenu;
+ }
} else if (button->arg == _choiceMenu.item[1].itemId) {
- _newMenu = _lastMenu;
+ _newMenu = &_mainMenu;
}
return 1;
}
@@ -2529,6 +2551,7 @@
if (_savegameOffset > 0) {
_savegameOffset--;
_newMenu = _currentMenu;
+ _menuResult = -1;
}
return 1;
}
@@ -2538,6 +2561,7 @@
if ((uint)_savegameOffset < _saveSlots.size() - 4) {
_savegameOffset++;
_newMenu = _currentMenu;
+ _menuResult = -1;
}
return 1;
}
Modified: scummvm/trunk/engines/kyra/gui_lol.h
===================================================================
--- scummvm/trunk/engines/kyra/gui_lol.h 2009-06-19 18:30:55 UTC (rev 41682)
+++ scummvm/trunk/engines/kyra/gui_lol.h 2009-06-19 18:46:19 UTC (rev 41683)
@@ -111,6 +111,8 @@
int clickedMainMenu(Button *button);
int clickedLoadMenu(Button *button);
+ int clickedSaveMenu(Button *button);
+ int clickedDeleteMenu(Button *button);
int clickedOptionsMenu(Button *button);
int clickedDeathMenu(Button *button);
int clickedChoiceMenu(Button *button);
@@ -136,7 +138,7 @@
Button _menuButtons[7];
Button _scrollUpButton;
Button _scrollDownButton;
- Menu _mainMenu, _gameOptions, _audioOptions, _choiceMenu, _loadMenu, _saveMenu, _savenameMenu, _deathMenu;
+ Menu _mainMenu, _gameOptions, _audioOptions, _choiceMenu, _loadMenu, _saveMenu, _deleteMenu, _savenameMenu, _deathMenu;
Menu *_currentMenu, *_lastMenu, *_newMenu;
int _menuResult;
Modified: scummvm/trunk/engines/kyra/staticres.cpp
===================================================================
--- scummvm/trunk/engines/kyra/staticres.cpp 2009-06-19 18:30:55 UTC (rev 41682)
+++ scummvm/trunk/engines/kyra/staticres.cpp 2009-06-19 18:46:19 UTC (rev 41683)
@@ -2040,6 +2040,26 @@
for (int i = 0; i < 5; ++i)
_loadMenu.item[i].callback = loadMenuFunctor;
+ GUI_LOL_MENU(_saveMenu, 10, 0x400d, 1, 5, 128, 20, 128, 118);
+ GUI_LOL_MENU_ITEM(_saveMenu.item[0], 0xfffe, 8, 39, 256, 15, 0, 0);
+ GUI_LOL_MENU_ITEM(_saveMenu.item[1], 0xfffd, 8, 56, 256, 15, 0, 0);
+ GUI_LOL_MENU_ITEM(_saveMenu.item[2], 0xfffc, 8, 73, 256, 15, 0, 0);
+ GUI_LOL_MENU_ITEM(_saveMenu.item[3], 0xfffb, 8, 90, 256, 15, 0, 0);
+ GUI_LOL_MENU_ITEM(_saveMenu.item[4], 0x4011, 168, 118, 96, 15, 0, 110);
+ Button::Callback saveMenuFunctor = BUTTON_FUNCTOR(GUI_LoL, this, &GUI_LoL::clickedSaveMenu);
+ for (int i = 0; i < 5; ++i)
+ _saveMenu.item[i].callback = saveMenuFunctor;
+
+ GUI_LOL_MENU(_deleteMenu, 10, 0x400f, 1, 5, 128, 20, 128, 118);
+ GUI_LOL_MENU_ITEM(_deleteMenu.item[0], 0xfffe, 8, 39, 256, 15, 0, 0);
+ GUI_LOL_MENU_ITEM(_deleteMenu.item[1], 0xfffd, 8, 56, 256, 15, 0, 0);
+ GUI_LOL_MENU_ITEM(_deleteMenu.item[2], 0xfffc, 8, 73, 256, 15, 0, 0);
+ GUI_LOL_MENU_ITEM(_deleteMenu.item[3], 0xfffb, 8, 90, 256, 15, 0, 0);
+ GUI_LOL_MENU_ITEM(_deleteMenu.item[4], 0x4011, 168, 118, 96, 15, 0, 110);
+ Button::Callback deleteMenuFunctor = BUTTON_FUNCTOR(GUI_LoL, this, &GUI_LoL::clickedDeleteMenu);
+ for (int i = 0; i < 5; ++i)
+ _deleteMenu.item[i].callback = deleteMenuFunctor;
+
GUI_LOL_MENU(_gameOptions, 17, 0x400c, 0, 6, -1, -1, -1, -1);
GUI_LOL_MENU_ITEM(_gameOptions.item[0], 0xfff7, 120, 22, 80, 15, 0x406e, 0);
GUI_LOL_MENU_ITEM(_gameOptions.item[1], 0xfff6, 120, 39, 80, 15, 0x406c, 0);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list