[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