[Scummvm-cvs-logs] SF.net SVN: scummvm:[42582] scummvm/branches/gsoc2009-draci/engines/draci/ game.cpp

dkasak13 at users.sourceforge.net dkasak13 at users.sourceforge.net
Sat Jul 18 05:05:20 CEST 2009


Revision: 42582
          http://scummvm.svn.sourceforge.net/scummvm/?rev=42582&view=rev
Author:   dkasak13
Date:     2009-07-18 03:05:20 +0000 (Sat, 18 Jul 2009)

Log Message:
-----------
Fixed a bug where the cursor was not shown when the first room is loaded and has mouse enabled.

Modified Paths:
--------------
    scummvm/branches/gsoc2009-draci/engines/draci/game.cpp

Modified: scummvm/branches/gsoc2009-draci/engines/draci/game.cpp
===================================================================
--- scummvm/branches/gsoc2009-draci/engines/draci/game.cpp	2009-07-18 03:00:12 UTC (rev 42581)
+++ scummvm/branches/gsoc2009-draci/engines/draci/game.cpp	2009-07-18 03:05:20 UTC (rev 42582)
@@ -157,8 +157,6 @@
 
 	_currentRoom._roomNum = _info._startRoom;
 	changeRoom(_info._startRoom);
-
-	_vm->_mouse->setCursorType(kNormalCursor);
 }
 
 void Game::loop() {
@@ -237,21 +235,15 @@
 	debugC(4, kDraciLogicDebugLevel, "EscRoom: %d", _currentRoom._escRoom);
 	debugC(4, kDraciLogicDebugLevel, "Gates: %d", _currentRoom._numGates);
 
-	// Set cursor state
-	if (_currentRoom._mouseOn) {
-		debugC(6, kDraciLogicDebugLevel, "Mouse: ON");
-		_vm->_mouse->cursorOn();
-	} else {
-		debugC(6, kDraciLogicDebugLevel, "Mouse: OFF");
-		_vm->_mouse->cursorOff();
-	}
 
+	// Read in the gates' numbers
 	Common::Array<int> gates;
 
 	for (uint i = 0; i < _currentRoom._numGates; ++i) {
 		gates.push_back(roomReader.readSint16LE());
 	}
 
+	// Load the room's objects
 	for (uint i = 0; i < _info._numObjects; ++i) {
 		debugC(7, kDraciLogicDebugLevel, 
 			"Checking if object %d (%d) is at the current location (%d)", i,
@@ -274,6 +266,7 @@
 		}
 	}
 
+	// Load the room's GPL program and run the init part
 	f = _vm->_roomsArchive->getFile(roomNum * 4 + 3);
 	_currentRoom._program._bytecode = f->_data;
 	_currentRoom._program._length = f->_length;
@@ -288,9 +281,22 @@
 		_vm->_script->run(_currentRoom._program, gates[i]);
 	}
 
+	// Set room palette
 	f = _vm->_paletteArchive->getFile(_currentRoom._palette);
 	_vm->_screen->setPalette(f->_data, 0, kNumColours);
 
+	// Set cursor state
+	// Need to do this after we set the palette since the cursors use it
+	if (_currentRoom._mouseOn) {
+		debugC(6, kDraciLogicDebugLevel, "Mouse: ON");
+		_vm->_mouse->cursorOn();
+	} else {
+		debugC(6, kDraciLogicDebugLevel, "Mouse: OFF");
+		_vm->_mouse->cursorOff();
+	}
+
+	_vm->_mouse->setCursorType(kNormalCursor);
+
 	// HACK: Create a visible overlay from the walking map so we can test it
 	byte *wlk = new byte[kScreenWidth * kScreenHeight];
 	memset(wlk, 255, kScreenWidth * kScreenHeight);


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