[Scummvm-cvs-logs] SF.net SVN: scummvm:[44958] scummvm/trunk/engines/draci

spalek at users.sourceforge.net spalek at users.sourceforge.net
Mon Oct 12 01:28:40 CEST 2009


Revision: 44958
          http://scummvm.svn.sourceforge.net/scummvm/?rev=44958&view=rev
Author:   spalek
Date:     2009-10-11 23:28:40 +0000 (Sun, 11 Oct 2009)

Log Message:
-----------
Implemented a few more harmless GPL2 commands

Modified Paths:
--------------
    scummvm/trunk/engines/draci/game.cpp
    scummvm/trunk/engines/draci/game.h
    scummvm/trunk/engines/draci/script.cpp
    scummvm/trunk/engines/draci/script.h

Modified: scummvm/trunk/engines/draci/game.cpp
===================================================================
--- scummvm/trunk/engines/draci/game.cpp	2009-10-11 23:01:59 UTC (rev 44957)
+++ scummvm/trunk/engines/draci/game.cpp	2009-10-11 23:28:40 UTC (rev 44958)
@@ -219,6 +219,7 @@
 	setRoomNum(kNoEscRoom);
 	rememberRoomNumAsPrevious();
 	scheduleEnteringRoomUsingGate(_info._startRoom, 0);
+	_pushedNewRoom = _pushedNewGate = -1;
 }
 
 void Game::loop() {
@@ -1426,6 +1427,18 @@
 	_newGate = gate;
 }
 
+void Game::pushNewRoom() {
+	_pushedNewRoom = _newRoom;
+	_pushedNewGate = _newGate;
+}
+
+void Game::popNewRoom() {
+	if (_loopStatus != kStatusInventory && _pushedNewRoom >= 0) {
+		scheduleEnteringRoomUsingGate(_pushedNewRoom, _pushedNewGate);
+		_pushedNewRoom = _pushedNewGate = -1;
+	}
+}
+
 void Game::setLoopStatus(LoopStatus status) {
 	_loopStatus = status;
 }

Modified: scummvm/trunk/engines/draci/game.h
===================================================================
--- scummvm/trunk/engines/draci/game.h	2009-10-11 23:01:59 UTC (rev 44957)
+++ scummvm/trunk/engines/draci/game.h	2009-10-11 23:28:40 UTC (rev 44958)
@@ -281,6 +281,8 @@
 	int getPreviousRoomNum() const;
 	void rememberRoomNumAsPrevious();
 	void scheduleEnteringRoomUsingGate(int room, int gate);
+	void pushNewRoom();
+	void popNewRoom();
 
 	double getPers0() const;
 	double getPersStep() const;
@@ -371,6 +373,8 @@
 	int _newRoom;
 	int _newGate;
 	int _previousRoom;
+	int _pushedNewRoom;	// used in GPL programs
+	int _pushedNewGate;
 
 	uint *_dialogueOffsets;
 	int _currentDialogue;

Modified: scummvm/trunk/engines/draci/script.cpp
===================================================================
--- scummvm/trunk/engines/draci/script.cpp	2009-10-11 23:01:59 UTC (rev 44957)
+++ scummvm/trunk/engines/draci/script.cpp	2009-10-11 23:28:40 UTC (rev 44958)
@@ -70,9 +70,9 @@
 		{ 15, 1, "ExecInit", 			1, { 3 }, &Script::execInit },
 		{ 15, 2, "ExecLook", 			1, { 3 }, &Script::execLook },
 		{ 15, 3, "ExecUse", 			1, { 3 }, &Script::execUse },
-		{ 16, 1, "RepaintInventory", 	0, { 0 }, NULL },
-		{ 16, 2, "ExitInventory", 		0, { 0 }, NULL },
-		{ 17, 1, "ExitMap", 			0, { 0 }, NULL },
+		{ 16, 1, "RepaintInventory", 	0, { 0 }, NULL },	// not used in the original game files
+		{ 16, 2, "ExitInventory", 		0, { 0 }, NULL },	// not used in the original game files
+		{ 17, 1, "ExitMap", 			0, { 0 }, NULL },	// not used in the original game files
 		{ 18, 1, "LoadMusic", 			1, { 2 }, NULL },
 		{ 18, 2, "StartMusic", 			0, { 0 }, NULL },
 		{ 18, 3, "StopMusic", 			0, { 0 }, NULL },
@@ -87,9 +87,12 @@
 		{ 22, 2, "EnableQuickHero", 	0, { 0 }, NULL },
 		{ 23, 1, "DisableSpeedText", 	0, { 0 }, NULL },
 		{ 23, 2, "EnableSpeedText", 	0, { 0 }, NULL },
-		{ 24, 1, "QuitGame", 			0, { 0 }, NULL },
-		{ 25, 1, "PushNewRoom", 		0, { 0 }, NULL },
-		{ 25, 2, "PopNewRoom", 			0, { 0 }, NULL },
+		{ 24, 1, "QuitGame", 			0, { 0 }, &Script::quitGame },
+		{ 25, 1, "PushNewRoom", 		0, { 0 }, &Script::pushNewRoom },
+		{ 25, 2, "PopNewRoom", 			0, { 0 }, &Script::popNewRoom },
+		// The following commands are not even defined in the game
+		// sources, but their numbers are allocated for internal
+		// purposes of the old player.
 		{ 26, 1, "ShowCheat", 			0, { 0 }, NULL },
 		{ 26, 2, "HideCheat", 			0, { 0 }, NULL },
 		{ 26, 3, "ClearCheat", 			1, { 1 }, NULL },
@@ -823,6 +826,18 @@
 	_endProgram = true;
 }
 
+void Script::quitGame(Common::Queue<int> &params) {
+	_vm->_game->setQuit(true);
+}
+
+void Script::pushNewRoom(Common::Queue<int> &params) {
+	_vm->_game->pushNewRoom();
+}
+
+void Script::popNewRoom(Common::Queue<int> &params) {
+	_vm->_game->popNewRoom();
+}
+
 /**
  * @brief Evaluates mathematical expressions
  * @param reader Stream reader set to the beginning of the expression

Modified: scummvm/trunk/engines/draci/script.h
===================================================================
--- scummvm/trunk/engines/draci/script.h	2009-10-11 23:01:59 UTC (rev 44957)
+++ scummvm/trunk/engines/draci/script.h	2009-10-11 23:28:40 UTC (rev 44958)
@@ -133,6 +133,9 @@
 	void setPalette(Common::Queue<int> &params);
 	void blackPalette(Common::Queue<int> &params);
 	void loadPalette(Common::Queue<int> &params);
+	void quitGame(Common::Queue<int> &params);
+	void pushNewRoom(Common::Queue<int> &params);
+	void popNewRoom(Common::Queue<int> &params);
 
 	int operAnd(int op1, int op2) const;
 	int operOr(int op1, int op2) const;


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