[Scummvm-cvs-logs] SF.net SVN: scummvm: [29568] scummvm/trunk/engines/parallaction

peres001 at users.sourceforge.net peres001 at users.sourceforge.net
Mon Nov 19 21:23:01 CET 2007


Revision: 29568
          http://scummvm.svn.sourceforge.net/scummvm/?rev=29568&view=rev
Author:   peres001
Date:     2007-11-19 12:23:01 -0800 (Mon, 19 Nov 2007)

Log Message:
-----------
Walk and script handling are now directly handled by the main loop, instead of relying on the job list.

Modified Paths:
--------------
    scummvm/trunk/engines/parallaction/exec_ns.cpp
    scummvm/trunk/engines/parallaction/parallaction.cpp
    scummvm/trunk/engines/parallaction/parallaction.h
    scummvm/trunk/engines/parallaction/parallaction_br.cpp
    scummvm/trunk/engines/parallaction/parallaction_ns.cpp
    scummvm/trunk/engines/parallaction/walk.cpp

Modified: scummvm/trunk/engines/parallaction/exec_ns.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/exec_ns.cpp	2007-11-19 12:44:54 UTC (rev 29567)
+++ scummvm/trunk/engines/parallaction/exec_ns.cpp	2007-11-19 20:23:01 UTC (rev 29568)
@@ -388,9 +388,13 @@
 }
 
 
-void Parallaction_ns::jobRunScripts(void *parm, Job *j) {
+void Parallaction_ns::runScripts() {
 	debugC(9, kDebugExec, "jobRunScripts");
 
+	if (_engineFlags & kEnginePauseJobs) {
+		return;
+	}
+
 	static uint16 modCounter = 0;
 
 	for (AnimationList::iterator it = _animations.begin(); it != _animations.end(); it++) {

Modified: scummvm/trunk/engines/parallaction/parallaction.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction.cpp	2007-11-19 12:44:54 UTC (rev 29567)
+++ scummvm/trunk/engines/parallaction/parallaction.cpp	2007-11-19 20:23:01 UTC (rev 29568)
@@ -288,6 +288,9 @@
 		eraseLabel();
 		eraseAnimations();
 
+		runScripts();
+		walk();
+
 		runJobs();
 
 		drawAnimations();
@@ -364,15 +367,14 @@
 		if (hitZone(kZoneYou, _mousePos.x, _mousePos.y) == 0) {
 			setArrowCursor();
 		}
-		removeJob(_jRunScripts);
-//		_jDrawInventory = addJob(kJobShowInventory, 0, kPriority2);
+		pauseJobs();
 		openInventory();
 		break;
 
 	case kEvCloseInventory: // closes inventory and possibly select item
 		closeInventory();
 		setInventoryCursor(data->_inventoryIndex);
-		_jRunScripts = addJob(kJobRunScripts, 0, kPriority15);
+		resumeJobs();
 		addJob(kJobHideInventory, 0, kPriority20);
 		break;
 
@@ -890,7 +892,7 @@
 	pal.makeGrayscale();
 	_gfx->setPalette(pal);
 
-	jobRunScripts(NULL, NULL);
+	runScripts();
 	drawAnimations();
 
 	_gfx->swapBuffers();
@@ -989,9 +991,11 @@
 		return;
 	}
 
-	WalkNodeList *list = _builder.buildPath(x, y);
-	_vm->addJob(kJobWalk, list, kPriority19 );
+	_walkPath = _builder.buildPath(x, y);
 
+//	WalkNodeList *list = _builder.buildPath(x, y);
+//	_vm->addJob(kJobWalk, list, kPriority19 );
+
 	_engineFlags |= kEngineWalking;
 }
 

Modified: scummvm/trunk/engines/parallaction/parallaction.h
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction.h	2007-11-19 12:44:54 UTC (rev 29567)
+++ scummvm/trunk/engines/parallaction/parallaction.h	2007-11-19 20:23:01 UTC (rev 29568)
@@ -218,6 +218,7 @@
 	Frames		    *_talk;
 	Frames 			*_objs;
 	PathBuilder		_builder;
+	WalkNodeList	*_walkPath;
 
 	Character(Parallaction *vm);
 	void getFoot(Common::Point &foot);
@@ -528,7 +529,6 @@
 	BackgroundInfo	*_backgroundInfo;
 
 	Zone    *_hoverZone;
-	Job	   *_jRunScripts;
 
 
 protected:		// members
@@ -579,13 +579,12 @@
 
 	virtual void parseLocation(const char* name) = 0;
 
-	virtual void jobRunScripts(void*, Job *j) = 0;
 	virtual void jobDisplayDroppedItem(void*, Job *j) = 0;
 	virtual void jobRemovePickedItem(void*, Job *j) = 0;
 	virtual void jobToggleDoor(void*, Job *j) = 0;
-	virtual void jobWalk(void*, Job *j) = 0;
 
-
+	virtual void runScripts() = 0;
+	virtual void walk() = 0;
 	virtual void drawAnimations() = 0;
 	virtual void eraseAnimations() = 0;
 	virtual void drawLabel() = 0;
@@ -735,13 +734,13 @@
 	const Callable *_callables;
 
 protected:
-	void jobRunScripts(void*, Job *j);
 	void jobDisplayDroppedItem(void*, Job *j);
 	void jobRemovePickedItem(void*, Job *j);
 	void jobToggleDoor(void*, Job *j);
-	void jobWalk(void*, Job *j);
 	void jobHideInventory(void *parm, Job *j);
 
+	void runScripts();
+	void walk();
 	void drawAnimations();
 	void eraseAnimations();
 	void drawLabel();

Modified: scummvm/trunk/engines/parallaction/parallaction_br.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction_br.cpp	2007-11-19 12:44:54 UTC (rev 29567)
+++ scummvm/trunk/engines/parallaction/parallaction_br.cpp	2007-11-19 20:23:01 UTC (rev 29568)
@@ -362,10 +362,10 @@
 		0,
 		&Parallaction_br::jobDisplayDroppedItem,
 		&Parallaction_br::jobRemovePickedItem,
-		&Parallaction_br::jobRunScripts,
-		&Parallaction_br::jobWalk,
 		0,
 		0,
+		0,
+		0,
 		&Parallaction_br::jobWaitRemoveLabelJob,
 		&Parallaction_br::jobToggleDoor,
 		&Parallaction_br::jobEraseSubtitle,

Modified: scummvm/trunk/engines/parallaction/parallaction_ns.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction_ns.cpp	2007-11-19 12:44:54 UTC (rev 29567)
+++ scummvm/trunk/engines/parallaction/parallaction_ns.cpp	2007-11-19 20:23:01 UTC (rev 29568)
@@ -256,8 +256,6 @@
 
 	changeLocation(_location._name);
 
-	_jRunScripts = addJob(kJobRunScripts, 0, kPriority15);
-
 	runGame();
 
 	return 0;
@@ -446,19 +444,17 @@
 		0,
 		&Parallaction_ns::jobDisplayDroppedItem,
 		&Parallaction_ns::jobRemovePickedItem,
-		&Parallaction_ns::jobRunScripts,
-		&Parallaction_ns::jobWalk,
 		0,
 		0,
 		0,
+		0,
+		0,
 		&Parallaction_ns::jobToggleDoor,
 		0,
 		&Parallaction_ns::jobHideInventory
 	};
 
 	_jobsFn = jobs;
-
-	_jRunScripts = 0;
 }
 
 JobOpcode* Parallaction_ns::createJobOpcode(uint functionId, Job *job) {

Modified: scummvm/trunk/engines/parallaction/walk.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/walk.cpp	2007-11-19 12:44:54 UTC (rev 29567)
+++ scummvm/trunk/engines/parallaction/walk.cpp	2007-11-19 20:23:01 UTC (rev 29568)
@@ -381,9 +381,13 @@
 	delete list;
 }
 
-void Parallaction_ns::jobWalk(void *parm, Job *j) {
-	WalkNodeList *list = (WalkNodeList*)parm;
+void Parallaction_ns::walk() {
+	if ((_engineFlags & kEngineWalking) == 0) {
+		return;
+	}
 
+	WalkNodeList *list = _char._walkPath;
+
 	_char._ani._oldPos.x = _char._ani._left;
 	_char._ani._oldPos.y = _char._ani._top;
 
@@ -400,11 +404,11 @@
 	}
 	if (it == list->end()) {
 		debugC(1, kDebugWalk, "jobWalk reached last node");
-		j->_finished = 1;
+//		j->_finished = 1;
 		finalizeWalk(list);
 		return;
 	}
-	j->_parm = list;
+	_char._walkPath = list;
 
 	// selectWalkFrame must be performed before position is changed by clipMove
 	int16 v16 = selectWalkFrame(pos, *it);
@@ -416,7 +420,7 @@
 
 	if (newpos == _char._ani._oldPos) {
 		debugC(1, kDebugWalk, "jobWalk was blocked by an unforeseen obstacle");
-		j->_finished = 1;
+//		j->_finished = 1;
 		finalizeWalk(list);
 	} else {
 		_char._ani._frame = v16 + walkData2 + 1;
@@ -445,7 +449,3 @@
 
 
 } // namespace Parallaction
-
-
-
-


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