[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