[Scummvm-cvs-logs] SF.net SVN: scummvm: [29690] scummvm/trunk/engines/lure

dreammaster at users.sourceforge.net dreammaster at users.sourceforge.net
Sun Dec 2 05:52:02 CET 2007


Revision: 29690
          http://scummvm.svn.sourceforge.net/scummvm/?rev=29690&view=rev
Author:   dreammaster
Date:     2007-12-01 20:52:01 -0800 (Sat, 01 Dec 2007)

Log Message:
-----------
Bugfix to make any animation the player is doing uninterruptable

Modified Paths:
--------------
    scummvm/trunk/engines/lure/hotspots.cpp
    scummvm/trunk/engines/lure/hotspots.h
    scummvm/trunk/engines/lure/scripts.cpp

Modified: scummvm/trunk/engines/lure/hotspots.cpp
===================================================================
--- scummvm/trunk/engines/lure/hotspots.cpp	2007-12-02 04:49:33 UTC (rev 29689)
+++ scummvm/trunk/engines/lure/hotspots.cpp	2007-12-02 04:52:01 UTC (rev 29690)
@@ -78,12 +78,6 @@
 	_tickHandler = HotspotTickHandlers::getHandler(_data->tickProcId);
 	_nameBuffer[0] = '\0';
 
-	if (_hotspotId < FIRST_NONCHARACTER_ID) {
-		// Default characters to facing upwards until they start moving
-		_direction = UP;
-		setFrameNumber(_anim->upFrame);
-	}
-
 	_skipFlag = false;
 	_charRectY = 0;
 	_voiceCtr = 0;
@@ -515,7 +509,6 @@
 	_voiceCtr = 0;
 	setActionCtr(0);
 	if (_hotspotId == PLAYER_ID)
-		//Room::getReference().setCursorState(CS_NONE);  **DEBUG**
 		room.setCursorState((CursorState) ((int) room.cursorState() & 2));
 
 	if (_currentActions.top().hasSupportData()) {
@@ -1247,13 +1240,17 @@
 }
 
 void Hotspot::doNothing(HotspotData *hotspot) {
-	_currentActions.pop();
 	if (!_currentActions.isEmpty()) {
-		setBlockedFlag(false);
-		currentActions().top().setAction(DISPATCH_ACTION);
-	} else if (hotspotId() == PLAYER_ID) {
-		Room::getReference().setCursorState(CS_NONE);
+		_currentActions.pop();
+		if (!_currentActions.isEmpty()) {
+			setBlockedFlag(false);
+			currentActions().top().setAction(DISPATCH_ACTION);
+			return;
+		}
 	}
+
+	if (hotspotId() == PLAYER_ID) 
+		Room::getReference().setCursorState(CS_NONE);
 }
 
 void Hotspot::doGet(HotspotData *hotspot) {
@@ -2825,6 +2822,7 @@
 		// Make sure there is no longer any destination
 		h.setDestHotspot(0);
 		h.updateMovement2(CHARMODE_IDLE);
+		h.doNothing(NULL);
 		strcpy(room.statusLine(), "");
 		break;
 

Modified: scummvm/trunk/engines/lure/hotspots.h
===================================================================
--- scummvm/trunk/engines/lure/hotspots.h	2007-12-02 04:49:33 UTC (rev 29689)
+++ scummvm/trunk/engines/lure/hotspots.h	2007-12-02 04:52:01 UTC (rev 29690)
@@ -308,7 +308,6 @@
 	void resetDirection();
 
 	// Action set
-	void doNothing(HotspotData *hotspot);
 	void doGet(HotspotData *hotspot);
 	void doOperate(HotspotData *hotspot);
 	void doOpen(HotspotData *hotspot);
@@ -540,6 +539,7 @@
 	void setVoiceCtr(uint8 v) { _voiceCtr = v; }
 
 	// Miscellaneous
+	void doNothing(HotspotData *hotspot);
 	void converse(uint16 destCharacterId, uint16 messageId, bool srcStandStill = false, 
 					   bool destStandStill = false);
 	void showMessage(uint16 messageId, uint16 destCharacterId = NOONE_ID);

Modified: scummvm/trunk/engines/lure/scripts.cpp
===================================================================
--- scummvm/trunk/engines/lure/scripts.cpp	2007-12-02 04:49:33 UTC (rev 29689)
+++ scummvm/trunk/engines/lure/scripts.cpp	2007-12-02 04:52:01 UTC (rev 29690)
@@ -340,6 +340,9 @@
 	Resources &r = Resources::getReference();
 	uint16 offset = r.getHotspotScript(scriptIndex);
 
+	if (charId == PLAYER_ID)
+		Room::getReference().setCursorState(CS_SEQUENCE);
+
 	Hotspot *hs = r.getActiveHotspot(charId);
 	hs->setHotspotScript(offset);
 	hs->currentActions().top().setAction(EXEC_HOTSPOT_SCRIPT);


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