aboutsummaryrefslogtreecommitdiff
path: root/sword2/sword2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sword2/sword2.cpp')
-rw-r--r--sword2/sword2.cpp58
1 files changed, 21 insertions, 37 deletions
diff --git a/sword2/sword2.cpp b/sword2/sword2.cpp
index edddfdeab5..5c5b3ac4b0 100644
--- a/sword2/sword2.cpp
+++ b/sword2/sword2.cpp
@@ -51,9 +51,9 @@ GameList Engine_SWORD2_detectGames(const FSList &fslist) {
GameList detectedGames;
const GameSettings *g;
- // TODO: It would be nice if we had code here which distinguishes between
- // the 'sword2' and 'sword2demo' targets. The current code can't do that
- // since they use the same detectname.
+ // TODO: It would be nice if we had code here which distinguishes
+ // between the 'sword2' and 'sword2demo' targets. The current code
+ // can't do that since they use the same detectname.
for (g = sword2_settings; g->gameName; ++g) {
// Iterate over all files in the given directory
@@ -85,6 +85,8 @@ Sword2Engine::Sword2Engine(GameDetector *detector, OSystem *syst)
g_sword2 = this;
_debugger = NULL;
+ _sound = NULL;
+ _graphics = NULL;
_features = detector->_game.features;
_targetName = strdup(detector->_targetName.c_str());
_bootParam = ConfMan.getInt("boot_param");
@@ -104,6 +106,15 @@ Sword2Engine::Sword2Engine(GameDetector *detector, OSystem *syst)
// get some falling RAM and put it in your pocket, never let it slip
// away
+ _graphics = new Graphics(this, 640, 480);
+
+ // Create the debugger as early as possible (but not before the
+ // graphics object!) so that errors can be displayed in it. In
+ // particular, we want errors about missing files to be clearly
+ // visible to the user.
+
+ _debugger = new Debugger(this);
+
_memory = new MemoryManager(this);
_resman = new ResourceManager(this);
_logic = new Logic(this);
@@ -111,8 +122,6 @@ Sword2Engine::Sword2Engine(GameDetector *detector, OSystem *syst)
_gui = new Gui(this);
_input = new Input(this);
_sound = new Sound(this);
- _graphics = new Graphics(this, 640, 480);
- _debugger = new Debugger(this);
_lastPaletteRes = 0;
@@ -185,10 +194,11 @@ void Sword2Engine::errorString(const char *buf1, char *buf2) {
return;
#endif
- // Unless an error -originated- within the debugger, spawn the debugger. Otherwise
- // exit out normally.
+ // Unless an error -originated- within the debugger, spawn the
+ // debugger. Otherwise exit out normally.
if (_debugger && !_debugger->isAttached()) {
- printf("%s\n", buf2); // (Print it again in case debugger segfaults)
+ // (Print it again in case debugger segfaults)
+ printf("%s\n", buf2);
_debugger->attach(buf2);
_debugger->onFrame();
}
@@ -243,7 +253,7 @@ void Sword2Engine::gameCycle(void) {
// got a screen to run?
if (_logic->getRunList()) {
- //run the logic session UNTIL a full loop has been performed
+ // run the logic session UNTIL a full loop has been performed
do {
// reset the graphic 'buildit' list before a new
// logic list (see fnRegisterFrame)
@@ -275,14 +285,6 @@ void Sword2Engine::gameCycle(void) {
void Sword2Engine::go() {
_keyboardEvent ke;
- // Call the application "Revolution" until the resource manager is
- // ready to dig the name out of a text file. See initialiseGame()
- // which calls InitialiseFontResourceFlags() in maketext.cpp
- //
- // Have to do it like this since we cannot really fire up the resource
- // manager until a window has been created as any errors are displayed
- // via a window, thus time becomes a loop.
-
debug(5, "CALLING: readOptionSettings");
_gui->readOptionSettings();
@@ -342,14 +344,9 @@ void Sword2Engine::go() {
char c = toupper(ke.ascii);
- if (ke.modifiers == OSystem::KBD_CTRL) {
- if (ke.keycode == 'd') {
- _debugger->attach();
- }
- }
-
- if (c == '~' || c == '#')
+ if ((ke.modifiers == OSystem::KBD_CTRL && ke.keycode == 'd') || c == '~' || c == '#') {
_debugger->attach();
+ }
if (_gamePaused) { // if currently paused
if (c == 'P') {
@@ -466,14 +463,6 @@ void Sword2Engine::sleepUntil(uint32 time) {
}
void Sword2Engine::pauseGame(void) {
- // uint8 *text;
-
- // open text file & get the line "PAUSED"
- // text = fetchTextLine(_resman->openResource(3258), 449);
- // pause_text_bloc_no = _fontRenderer->buildNewBloc(text + 2, 320, 210, 640, 184, RDSPR_TRANS | RDSPR_DISPLAYALIGN, SPEECH_FONT_ID, POSITION_AT_CENTRE_OF_BASE);
- // now ok to close the text file
- // _resman->closeResource(3258);
-
// don't allow Pause while screen fading or while black
if (_graphics->getFadeStatus() != RDFADE_NONE)
return;
@@ -483,8 +472,6 @@ void Sword2Engine::pauseGame(void) {
// make a normal mouse
clearPointerText();
- // mouse_mode=MOUSE_normal;
-
// this is the only place allowed to do it this way
_graphics->setLuggageAnim(NULL, 0);
@@ -512,9 +499,6 @@ void Sword2Engine::pauseGame(void) {
}
void Sword2Engine::unpauseGame(void) {
- // removed "PAUSED" from screen
- // _fontRenderer->killTextBloc(pause_text_bloc_no);
-
if (OBJECT_HELD && _realLuggageItem)
setLuggage(_realLuggageItem);