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

dkasak13 at users.sourceforge.net dkasak13 at users.sourceforge.net
Wed Aug 12 06:18:45 CEST 2009


Revision: 43305
          http://scummvm.svn.sourceforge.net/scummvm/?rev=43305&view=rev
Author:   dkasak13
Date:     2009-08-12 04:18:45 +0000 (Wed, 12 Aug 2009)

Log Message:
-----------
* Split loop status and substatus into two different enums since they are two separate concepts
* Fixed slight glitch where object titles (which normally disappear when objects are used/looked at) reappeared for a moment after the script has finished

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

Modified: scummvm/branches/gsoc2009-draci/engines/draci/game.cpp
===================================================================
--- scummvm/branches/gsoc2009-draci/engines/draci/game.cpp	2009-08-12 02:24:03 UTC (rev 43304)
+++ scummvm/branches/gsoc2009-draci/engines/draci/game.cpp	2009-08-12 04:18:45 UTC (rev 43305)
@@ -174,7 +174,7 @@
 				_persons[kDragonObject]._y = 0;
 			}
 
-			setLoopSubstatus(kStatusOrdinary);
+			setLoopSubstatus(kSubstatusOrdinary);
 	
 			// Do the actual change
 			changeRoom(_newRoom);
@@ -281,7 +281,7 @@
 		int x = _vm->_mouse->getPosX();
 		int y = _vm->_mouse->getPosY();
 
-		if (_loopStatus == kStatusDialogue && _loopSubstatus == kStatusOrdinary) {
+		if (_loopStatus == kStatusDialogue && _loopSubstatus == kSubstatusOrdinary) {
 
 			// Find animation under cursor
 			_animUnderCursor = _vm->_anims->getTopAnimationID(x, y);
@@ -309,7 +309,7 @@
 			Animation *titleAnim = _vm->_anims->getAnimation(kTitleText);
 			Text *title = reinterpret_cast<Text *>(titleAnim->getFrame());
 
-			if (_loopStatus == kStatusOrdinary && _loopSubstatus == kStatusOrdinary) {
+			if (_loopStatus == kStatusOrdinary && _loopSubstatus == kSubstatusOrdinary) {
 				if(_vm->_mouse->isCursorOn()) {
 					// Find the game object under the cursor
 					// (to be more precise, one that corresponds to the animation under the cursor)
@@ -333,6 +333,7 @@
 							_vm->_mouse->cursorOff();
 							titleAnim->markDirtyRect(surface);
 							title->setText("");
+							_objUnderCursor = kObjectNotFound;
 
 							if (!obj->_imLook) {
 								if (obj->_lookDir == -1) {
@@ -359,6 +360,7 @@
 								_vm->_mouse->cursorOff();
 								titleAnim->markDirtyRect(surface);
 								title->setText("");
+								_objUnderCursor = kObjectNotFound;
 
 								if (!obj->_imUse) {
 									if (obj->_useDir == -1) {
@@ -394,7 +396,7 @@
 		debug(8, "Anim under cursor: %d", _animUnderCursor); 
 
 		// Handle character talking (if there is any)
-		if (_loopSubstatus == kStatusTalk) {
+		if (_loopSubstatus == kSubstatusTalk) {
 			Animation *speechAnim = _vm->_anims->getAnimation(kSpeechText); 			
 			Text *speechFrame = reinterpret_cast<Text *>(speechAnim->getFrame());
 
@@ -537,7 +539,7 @@
 		_dialogueExit = false;
 		hit = dialogueDraw();
 		
-		debug(7, kDraciLogicDebugLevel, 
+		debugC(7, kDraciLogicDebugLevel, 
 			"hit: %d, _lines[hit]: %d, lastblock: %d, dialogueLines: %d, dialogueExit: %d", 
 			hit, _lines[hit], _lastBlock, _dialogueLines, _dialogueExit);
 
@@ -1111,7 +1113,7 @@
 	_loopStatus = status;
 }
 
-void Game::setLoopSubstatus(LoopStatus status) {
+void Game::setLoopSubstatus(LoopSubstatus status) {
 	_loopSubstatus = status;
 }
 
@@ -1119,7 +1121,7 @@
 	return _loopStatus;
 }
 
-LoopStatus Game::getLoopSubstatus() {
+LoopSubstatus Game::getLoopSubstatus() {
 	return _loopSubstatus;
 }
 

Modified: scummvm/branches/gsoc2009-draci/engines/draci/game.h
===================================================================
--- scummvm/branches/gsoc2009-draci/engines/draci/game.h	2009-08-12 02:24:03 UTC (rev 43304)
+++ scummvm/branches/gsoc2009-draci/engines/draci/game.h	2009-08-12 04:18:45 UTC (rev 43305)
@@ -175,12 +175,20 @@
 	GPL2Program _program;
 };
 
-enum LoopStatus { 
-	kStatusGate, kStatusOrdinary, kStatusInventory, 
-	kStatusDialogue, kStatusTalk, kStatusStrange, 
-	kStatusFade
+enum LoopStatus {
+	kStatusOrdinary, 
+	kStatusGate, 
+	kStatusInventory, 
+	kStatusDialogue
 };
 
+enum LoopSubstatus {
+	kSubstatusOrdinary, 
+	kSubstatusTalk, 
+	kSubstatusFade,
+	kSubstatusStrange
+};
+
 /**
   * Enumerates the animations for the dragon's movement.
   */
@@ -262,9 +270,9 @@
 	void setMarkedAnimationIndex(int index);
 
 	void setLoopStatus(LoopStatus status);
-	void setLoopSubstatus(LoopStatus status);
+	void setLoopSubstatus(LoopSubstatus status);
 	LoopStatus getLoopStatus();
-	LoopStatus getLoopSubstatus();
+	LoopSubstatus getLoopSubstatus();
 
 	bool shouldQuit() { return _shouldQuit; }
 	void setQuit(bool quit) { _shouldQuit = quit; }
@@ -321,7 +329,7 @@
 	Animation *_dialogueAnims[4];
 	
 	LoopStatus _loopStatus;
-	LoopStatus _loopSubstatus;
+	LoopSubstatus _loopSubstatus;
 
 	bool _shouldQuit;
 	bool _shouldExitLoop;

Modified: scummvm/branches/gsoc2009-draci/engines/draci/script.cpp
===================================================================
--- scummvm/branches/gsoc2009-draci/engines/draci/script.cpp	2009-08-12 02:24:03 UTC (rev 43304)
+++ scummvm/branches/gsoc2009-draci/engines/draci/script.cpp	2009-08-12 04:18:45 UTC (rev 43305)
@@ -346,11 +346,11 @@
 		return;
 	}
 
-	_vm->_game->setLoopStatus(kStatusStrange);
+	_vm->_game->setLoopSubstatus(kSubstatusStrange);
 	_vm->_game->setExitLoop(true);    
 	_vm->_game->loop();
 	_vm->_game->setExitLoop(false);    
-	_vm->_game->setLoopStatus(kStatusOrdinary);
+	_vm->_game->setLoopSubstatus(kSubstatusOrdinary);
 }
 
 void Script::load(Common::Queue<int> &params) {
@@ -446,7 +446,7 @@
 	Animation *anim = _vm->_anims->getAnimation(animID);
 	anim->registerCallback(&Animation::exitGameLoop);	
 
-	_vm->_game->setLoopStatus(kStatusStrange);
+	_vm->_game->setLoopSubstatus(kSubstatusStrange);
 
 	bool visible = (obj->_location == _vm->_game->getRoomNum() && obj->_visible);
 
@@ -457,7 +457,7 @@
 	_vm->_game->loop();
 	_vm->_game->setExitLoop(false);    
 	_vm->_anims->stop(animID);
-	_vm->_game->setLoopStatus(kStatusOrdinary);
+	_vm->_game->setLoopSubstatus(kSubstatusOrdinary);
 
 	anim->registerCallback(&Animation::doNothing);
 }
@@ -596,9 +596,9 @@
 	
 	_vm->_game->walkHero(x, y);
 
-	_vm->_game->setLoopSubstatus(kStatusStrange);
+	_vm->_game->setLoopSubstatus(kSubstatusStrange);
 	_vm->_game->loop();
-	_vm->_game->setLoopSubstatus(kStatusOrdinary);
+	_vm->_game->setLoopSubstatus(kSubstatusOrdinary);
 
 	_vm->_game->setExitLoop(false);
 }
@@ -650,7 +650,7 @@
 	}
 
 	// Set the loop substatus to an appropriate value
-	_vm->_game->setLoopSubstatus(kStatusTalk);
+	_vm->_game->setLoopSubstatus(kSubstatusTalk);
 
 	// Record time
 	_vm->_game->setSpeechTick(_vm->_system->getMillis());
@@ -673,7 +673,7 @@
 	speechFrame->setText("");
 
 	// Revert to "normal" loop status
-	_vm->_game->setLoopSubstatus(kStatusOrdinary);
+	_vm->_game->setLoopSubstatus(kSubstatusOrdinary);
 	_vm->_game->setExitLoop(false);
 }
 


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