[Scummvm-cvs-logs] SF.net SVN: scummvm: [32770] scummvm/branches/gsoc2008-rtl
cpage88 at users.sourceforge.net
cpage88 at users.sourceforge.net
Tue Jun 24 23:15:31 CEST 2008
Revision: 32770
http://scummvm.svn.sourceforge.net/scummvm/?rev=32770&view=rev
Author: cpage88
Date: 2008-06-24 14:15:30 -0700 (Tue, 24 Jun 2008)
Log Message:
-----------
Created Global Main Menu Dialog. Made a uniform _quit flag for engines. So far agi, agos, and cine are now using the new _quit flag.
Modified Paths:
--------------
scummvm/branches/gsoc2008-rtl/backends/events/default/default-events.cpp
scummvm/branches/gsoc2008-rtl/base/main.cpp
scummvm/branches/gsoc2008-rtl/common/events.h
scummvm/branches/gsoc2008-rtl/engines/agi/agi.cpp
scummvm/branches/gsoc2008-rtl/engines/agi/agi.h
scummvm/branches/gsoc2008-rtl/engines/agi/cycle.cpp
scummvm/branches/gsoc2008-rtl/engines/agi/op_cmd.cpp
scummvm/branches/gsoc2008-rtl/engines/agi/op_test.cpp
scummvm/branches/gsoc2008-rtl/engines/agi/saveload.cpp
scummvm/branches/gsoc2008-rtl/engines/agos/agos.cpp
scummvm/branches/gsoc2008-rtl/engines/agos/agos.h
scummvm/branches/gsoc2008-rtl/engines/cine/anim.cpp
scummvm/branches/gsoc2008-rtl/engines/cine/cine.cpp
scummvm/branches/gsoc2008-rtl/engines/cine/main_loop.cpp
scummvm/branches/gsoc2008-rtl/engines/cine/prc.cpp
scummvm/branches/gsoc2008-rtl/engines/cine/various.cpp
scummvm/branches/gsoc2008-rtl/engines/cine/various.h
scummvm/branches/gsoc2008-rtl/engines/engine.cpp
scummvm/branches/gsoc2008-rtl/engines/engine.h
scummvm/branches/gsoc2008-rtl/engines/module.mk
scummvm/branches/gsoc2008-rtl/gui/theme-config.cpp
Modified: scummvm/branches/gsoc2008-rtl/backends/events/default/default-events.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/backends/events/default/default-events.cpp 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/backends/events/default/default-events.cpp 2008-06-24 21:15:30 UTC (rev 32770)
@@ -375,7 +375,6 @@
switch (event.type) {
case Common::EVENT_KEYDOWN:
_modifierState = event.kbd.flags;
-
// init continuous event stream
// not done on PalmOS because keyboard is emulated and keyup is not generated
#if !defined(PALMOS_MODE)
@@ -384,7 +383,14 @@
_currentKeyDown.flags = event.kbd.flags;
_keyRepeatTime = time + kKeyRepeatInitialDelay;
#endif
+
+ // Global Main Menu
+ if (event.kbd.keycode == Common::KEYCODE_F11)
+ if (g_engine && !g_engine->isPaused())
+ g_engine->mainMenuDialog();
+
break;
+
case Common::EVENT_KEYUP:
_modifierState = event.kbd.flags;
if (event.kbd.keycode == _currentKeyDown.keycode) {
@@ -401,6 +407,7 @@
_mousePos = event.mouse;
_buttonState |= LBUTTON;
break;
+
case Common::EVENT_LBUTTONUP:
_mousePos = event.mouse;
_buttonState &= ~LBUTTON;
@@ -410,11 +417,17 @@
_mousePos = event.mouse;
_buttonState |= RBUTTON;
break;
+
case Common::EVENT_RBUTTONUP:
_mousePos = event.mouse;
_buttonState &= ~RBUTTON;
break;
+ case Common::EVENT_MAINMENU:
+ if (g_engine && !g_engine->isPaused())
+ g_engine->mainMenuDialog();
+ break;
+
case Common::EVENT_QUIT:
if (ConfMan.getBool("confirm_exit")) {
if (g_engine)
Modified: scummvm/branches/gsoc2008-rtl/base/main.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/base/main.cpp 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/base/main.cpp 2008-06-24 21:15:30 UTC (rev 32770)
@@ -229,8 +229,8 @@
Common::File::resetDefaultDirectories();
-
- return 1; // Changing from return 0, in order to return to launcher
+ // If result=1 return to the launcher, else quit ScummVM
+ return result;
}
Modified: scummvm/branches/gsoc2008-rtl/common/events.h
===================================================================
--- scummvm/branches/gsoc2008-rtl/common/events.h 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/common/events.h 2008-06-24 21:15:30 UTC (rev 32770)
@@ -58,6 +58,8 @@
EVENT_MBUTTONDOWN = 13,
EVENT_MBUTTONUP = 14,
+ EVENT_MAINMENU = 15,
+
EVENT_QUIT = 10,
EVENT_SCREEN_CHANGED = 11,
/**
Modified: scummvm/branches/gsoc2008-rtl/engines/agi/agi.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/agi/agi.cpp 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/agi/agi.cpp 2008-06-24 21:15:30 UTC (rev 32770)
@@ -62,7 +62,7 @@
while (_eventMan->pollEvent(event)) {
switch (event.type) {
case Common::EVENT_QUIT:
- _game.quitProgNow = true;
+ _quit = true;
break;
case Common::EVENT_PREDICTIVE_DIALOG:
if (_predictiveDialogRunning)
@@ -809,7 +809,7 @@
runGame();
- return 0;
+ return _rtl;
}
} // End of namespace Agi
Modified: scummvm/branches/gsoc2008-rtl/engines/agi/agi.h
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/agi/agi.h 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/agi/agi.h 2008-06-24 21:15:30 UTC (rev 32770)
@@ -530,7 +530,6 @@
/* internal flags */
int playerControl; /**< player is in control */
- int quitProgNow; /**< quit now */
int statusLine; /**< status line on/off */
int clockEnabled; /**< clock is on/off */
int exitAllLogics; /**< break cycle after new.room */
Modified: scummvm/branches/gsoc2008-rtl/engines/agi/cycle.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/agi/cycle.cpp 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/agi/cycle.cpp 2008-06-24 21:15:30 UTC (rev 32770)
@@ -116,7 +116,7 @@
oldSound = getflag(fSoundOn);
_game.exitAllLogics = false;
- while (runLogic(0) == 0 && !_game.quitProgNow) {
+ while (runLogic(0) == 0 && !_quit) {
_game.vars[vWordNotFound] = 0;
_game.vars[vBorderTouchObj] = 0;
_game.vars[vBorderCode] = 0;
@@ -314,7 +314,6 @@
setvar(vTimeDelay, 2); /* "normal" speed */
_game.gfxMode = true;
- _game.quitProgNow = false;
_game.clockEnabled = true;
_game.lineUserInput = 22;
@@ -354,10 +353,10 @@
_game.vars[vKey] = 0;
}
- if (_game.quitProgNow == 0xff)
+ if (_quit == 0xff)
ec = errRestartGame;
- } while (_game.quitProgNow == 0);
+ } while (_quit == 0);
_sound->stopSound();
Modified: scummvm/branches/gsoc2008-rtl/engines/agi/op_cmd.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/agi/op_cmd.cpp 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/agi/op_cmd.cpp 2008-06-24 21:15:30 UTC (rev 32770)
@@ -1213,11 +1213,11 @@
g_sound->stopSound();
if (p0) {
- game.quitProgNow = true;
+ g_agi->_quit = true;
} else {
if (g_agi->selectionBox
(" Quit the game, or continue? \n\n\n", buttons) == 0) {
- game.quitProgNow = true;
+ g_agi->_quit = true;
}
}
}
@@ -1231,7 +1231,7 @@
g_agi->selectionBox(" Restart game, or continue? \n\n\n", buttons);
if (sel == 0) {
- game.quitProgNow = 0xff;
+ g_agi->_quit = 0xff;
g_agi->setflag(fRestartGame, true);
g_agi->_menu->enableAll();
}
@@ -1739,7 +1739,7 @@
curLogic->cIP = curLogic->sIP;
timerHack = 0;
- while (ip < _game.logics[n].size && !_game.quitProgNow) {
+ while (ip < _game.logics[n].size && !g_agi->_quit) {
if (_debug.enabled) {
if (_debug.steps > 0) {
if (_debug.logic0 || n) {
Modified: scummvm/branches/gsoc2008-rtl/engines/agi/op_test.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/agi/op_test.cpp 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/agi/op_test.cpp 2008-06-24 21:15:30 UTC (rev 32770)
@@ -232,7 +232,7 @@
uint8 p[16] = { 0 };
bool end_test = false;
- while (retval && !game.quitProgNow && !end_test) {
+ while (retval && !_quit && !end_test) {
if (_debug.enabled && (_debug.logic0 || lognum))
debugConsole(lognum, lTEST_MODE, NULL);
Modified: scummvm/branches/gsoc2008-rtl/engines/agi/saveload.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/agi/saveload.cpp 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/agi/saveload.cpp 2008-06-24 21:15:30 UTC (rev 32770)
@@ -91,7 +91,7 @@
out->writeSint16BE((int16)_game.lognum);
out->writeSint16BE((int16)_game.playerControl);
- out->writeSint16BE((int16)_game.quitProgNow);
+ out->writeSint16BE((int16)_quit);
out->writeSint16BE((int16)_game.statusLine);
out->writeSint16BE((int16)_game.clockEnabled);
out->writeSint16BE((int16)_game.exitAllLogics);
@@ -281,7 +281,7 @@
_game.lognum = in->readSint16BE();
_game.playerControl = in->readSint16BE();
- _game.quitProgNow = in->readSint16BE();
+ _quit = in->readSint16BE();
_game.statusLine = in->readSint16BE();
_game.clockEnabled = in->readSint16BE();
_game.exitAllLogics = in->readSint16BE();
Modified: scummvm/branches/gsoc2008-rtl/engines/agos/agos.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/agos/agos.cpp 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/agos/agos.cpp 2008-06-24 21:15:30 UTC (rev 32770)
@@ -30,6 +30,10 @@
#include "common/system.h"
#include "common/events.h"
+//#include "gui/message.h"
+//#include "gui/newgui.h"
+
+//#include "agos/dialogs.h"
#include "agos/debugger.h"
#include "agos/intern.h"
#include "agos/agos.h"
@@ -97,7 +101,8 @@
_vc_get_out_of_code = 0;
_gameOffsetsPtr = 0;
- _quit = false;
+ //_quit = false;
+ //_rtl = false;
_debugger = 0;
@@ -195,6 +200,8 @@
_backFlag = 0;
+ //_mainMenuDialog = NULL;
+
_debugMode = 0;
_startMainScript = false;
_continousMainScript = false;
@@ -1021,7 +1028,7 @@
delay(100);
}
- return 0;
+ return _rtl;
}
@@ -1080,5 +1087,25 @@
// FIXME: calling time() is not portable, use OSystem::getMillis instead
return (uint32)time(NULL);
}
+/*
+int AGOSEngine::runDialog(Dialog &dialog) {
+ pauseEngine(true);
+
+ int result = dialog.runModal();
+
+ pauseEngine(false);
+
+ return 0;
+}
+/*
+void AGOSEngine::mainMenuDialog() {
+ if (!_mainMenuDialog)
+ _mainMenuDialog = new MainMenuDialog(this);
+ runDialog(*_mainMenuDialog);
+ _mixer->setVolumeForSoundType(Audio::Mixer::kSFXSoundType, ConfMan.getInt("sfx_volume"));
+ _mixer->setVolumeForSoundType(Audio::Mixer::kMusicSoundType, ConfMan.getInt("music_volume"));
+ _midi.setVolume(ConfMan.getInt("music_volume"));
+}
+*/
} // End of namespace AGOS
Modified: scummvm/branches/gsoc2008-rtl/engines/agos/agos.h
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/agos/agos.h 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/agos/agos.h 2008-06-24 21:15:30 UTC (rev 32770)
@@ -269,7 +269,7 @@
uint16 _marks;
- bool _quit;
+ // bool _quit;
bool _scriptVar2;
bool _runScriptReturn1;
bool _runScriptCondition[40];
Modified: scummvm/branches/gsoc2008-rtl/engines/cine/anim.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/cine/anim.cpp 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/cine/anim.cpp 2008-06-24 21:15:30 UTC (rev 32770)
@@ -731,7 +731,7 @@
loadSeq(resourceName, -1);
return;
} else if (strstr(resourceName, "ECHEC")) { // Echec (French) means failure
- exitEngine = 1;
+ g_cine->_quit = 1;
return;
}
Modified: scummvm/branches/gsoc2008-rtl/engines/cine/cine.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/cine/cine.cpp 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/cine/cine.cpp 2008-06-24 21:15:30 UTC (rev 32770)
@@ -102,7 +102,8 @@
delete renderer;
delete[] page3Raw;
delete g_sound;
- return 0;
+
+ return _rtl;
}
Modified: scummvm/branches/gsoc2008-rtl/engines/cine/main_loop.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/cine/main_loop.cpp 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/cine/main_loop.cpp 2008-06-24 21:15:30 UTC (rev 32770)
@@ -62,7 +62,7 @@
case Common::EVENT_MOUSEMOVE:
break;
case Common::EVENT_QUIT:
- exitEngine = 1;
+ g_cine->_quit = 1;
break;
case Common::EVENT_KEYDOWN:
switch (event.kbd.keycode) {
@@ -181,12 +181,11 @@
void CineEngine::mainLoop(int bootScriptIdx) {
bool playerAction;
- uint16 quitFlag;
+ //uint16 quitFlag;
byte di;
uint16 mouseButton;
- quitFlag = 0;
- exitEngine = 0;
+ //quitFlag = 0;
if (_preLoad == false) {
resetBgIncrustList();
@@ -296,7 +295,7 @@
if ("quit"[menuCommandLen] == (char)di) {
++menuCommandLen;
if (menuCommandLen == 4) {
- quitFlag = 1;
+ g_cine->_quit = 1;
}
} else {
menuCommandLen = 0;
@@ -305,7 +304,7 @@
manageEvents();
- } while (!exitEngine && !quitFlag && _danKeysPressed != 7);
+ } while (!g_cine->_quit && _danKeysPressed != 7);
hideMouse();
g_sound->stopMusic();
Modified: scummvm/branches/gsoc2008-rtl/engines/cine/prc.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/cine/prc.cpp 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/cine/prc.cpp 2008-06-24 21:15:30 UTC (rev 32770)
@@ -53,7 +53,7 @@
// This is copy protection. Used to hang the machine
if (!scumm_stricmp(pPrcName, "L201.ANI")) {
- exitEngine = 1;
+ g_cine->_quit = 1;
return;
}
Modified: scummvm/branches/gsoc2008-rtl/engines/cine/various.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/cine/various.cpp 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/cine/various.cpp 2008-06-24 21:15:30 UTC (rev 32770)
@@ -110,7 +110,7 @@
CommandeType objectListCommand[20];
int16 objListTab[20];
-uint16 exitEngine;
+//uint16 exitEngine;
uint16 zoneData[NUM_MAX_ZONE];
@@ -757,7 +757,7 @@
{
getMouseData(mouseUpdateStatus, (uint16 *)&mouseButton, (uint16 *)&mouseX, (uint16 *)&mouseY);
if (!makeMenuChoice(confirmMenu, 2, mouseX, mouseY + 8, 100)) {
- exitEngine = 1;
+ _quit = 1;
}
break;
}
Modified: scummvm/branches/gsoc2008-rtl/engines/cine/various.h
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/cine/various.h 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/cine/various.h 2008-06-24 21:15:30 UTC (rev 32770)
@@ -117,7 +117,7 @@
void checkForPendingDataLoad(void);
-extern uint16 exitEngine;
+//extern uint16 exitEngine;
void hideMouse(void);
Modified: scummvm/branches/gsoc2008-rtl/engines/engine.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/engine.cpp 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/engine.cpp 2008-06-24 21:15:30 UTC (rev 32770)
@@ -36,7 +36,9 @@
#include "common/savefile.h"
#include "common/system.h"
#include "gui/message.h"
+#include "gui/newgui.h"
#include "sound/mixer.h"
+#include "engines/dialogs.h"
#ifdef _WIN32_WCE
extern bool isSmartphone(void);
@@ -54,7 +56,10 @@
_saveFileMan(_system->getSavefileManager()),
_targetName(ConfMan.getActiveDomainName()),
_gameDataPath(ConfMan.get("path")),
- _pauseLevel(0) {
+ _pauseLevel(0),
+ _mainMenuDialog(NULL),
+ _quit(false),
+ _rtl(false) {
g_engine = this;
_autosavePeriod = ConfMan.getInt("autosave_period");
@@ -210,3 +215,21 @@
// By default, just (un)pause all digital sounds
_mixer->pauseAll(pause);
}
+
+void Engine::mainMenuDialog() {
+ if (!_mainMenuDialog)
+ _mainMenuDialog = new MainMenuDialog(this);
+ runDialog(*_mainMenuDialog);
+}
+
+int Engine::runDialog(Dialog &dialog) {
+
+ pauseEngine(true);
+
+ int result = dialog.runModal();
+
+ pauseEngine(false);
+
+ return 0;
+}
+
Modified: scummvm/branches/gsoc2008-rtl/engines/engine.h
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/engine.h 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/engine.h 2008-06-24 21:15:30 UTC (rev 32770)
@@ -39,18 +39,27 @@
}
namespace GUI {
class Debugger;
+ class Dialog;
}
+using GUI::Dialog;
+
class Engine {
public:
OSystem *_system;
Audio::Mixer *_mixer;
Common::TimerManager * _timer;
+ bool _quit;
+ bool _rtl;
+
protected:
Common::EventManager *_eventMan;
Common::SaveFileManager *_saveFileMan;
+
+ Dialog *_mainMenuDialog;
+ virtual int runDialog(Dialog &dialog);
const Common::String _targetName; // target name for saves
const Common::String _gameDataPath;
@@ -113,6 +122,8 @@
*/
bool isPaused() const { return _pauseLevel != 0; }
+ void mainMenuDialog();
+
public:
/** Setup the backend's graphics mode. */
Modified: scummvm/branches/gsoc2008-rtl/engines/module.mk
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/module.mk 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/engines/module.mk 2008-06-24 21:15:30 UTC (rev 32770)
@@ -1,7 +1,7 @@
MODULE := engines
MODULE_OBJS := \
- engine.o
-
+ engine.o \
+ dialogs.o
# Include common rules
include $(srcdir)/rules.mk
Modified: scummvm/branches/gsoc2008-rtl/gui/theme-config.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/gui/theme-config.cpp 2008-06-24 20:44:37 UTC (rev 32769)
+++ scummvm/branches/gsoc2008-rtl/gui/theme-config.cpp 2008-06-24 21:15:30 UTC (rev 32770)
@@ -482,6 +482,28 @@
"smH=(smY + scummmainVSpace)\n"
"scummmain=((w - smW) / 2) ((h - smH) / 2) smW smH\n"
"\n"
+
+"#### Global Main Menu Dialog"
+"[globalmain]\n"
+"# note that globalmain size depends on overall height\n"
+"gmY=(scummmainVSpace + scummmainVAddOff)\n"
+"globalmain_resume=scummmainHOffset gmY scummmainButtonWidth scummmainButtonHeight\n"
+"gmY=(gmY + scummmainButtonHeight + scummmainVAddOff)\n"
+"gmY=(gmY + scummmainVSpace)\n"
+"globalmain_options=prev.x gmY prev.w prev.h\n"
+"gmY=(gmY + scummmainButtonHeight + scummmainVAddOff)\n"
+"globalmain_about=prev.x gmY prev.w prev.h\n"
+"gmY=(gmY + scummmainButtonHeight + scummmainVAddOff)\n"
+"gmY=(gmY + scummmainVSpace)\n"
+"globalmain_rtl=prev.x gmY prev.w prev.h\n"
+"gmY=(gmY + scummmainButtonHeight + scummmainVAddOff)\n"
+"gmW=(scummmainButtonWidth + 2 * scummmainHOffset)\n"
+"globalmain_quit=prev.x gmY prev.w prev.h\n"
+"gmY=(gmY + scummmainButtonHeight + scummmainVAddOff)\n"
+"gmW=(scummmainButtonWidth + 2 * scummmainHOffset)\n"
+"gmH=(gmY + scummmainVSpace)\n"
+"globalmain=((w - gmW) / 2) ((h - gmH) / 2) gmW gmH\n"
+"\n"
"# PSP GUI\n"
"[480x272]\n"
"def_buttonWidth=100\n"
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