aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/parallaction/debug.cpp46
-rw-r--r--engines/parallaction/debug.h1
-rw-r--r--engines/parallaction/exec_br.cpp10
-rw-r--r--engines/parallaction/exec_ns.cpp7
-rw-r--r--engines/parallaction/gfxbase.cpp1
-rw-r--r--engines/parallaction/parallaction.cpp65
-rw-r--r--engines/parallaction/parallaction.h103
-rw-r--r--engines/parallaction/parallaction_br.cpp29
-rw-r--r--engines/parallaction/parallaction_ns.cpp34
-rw-r--r--engines/parallaction/parser_ns.cpp4
-rw-r--r--engines/parallaction/walk.cpp6
-rw-r--r--engines/parallaction/walk.h3
12 files changed, 12 insertions, 297 deletions
diff --git a/engines/parallaction/debug.cpp b/engines/parallaction/debug.cpp
index 819a51f877..bd16266cba 100644
--- a/engines/parallaction/debug.cpp
+++ b/engines/parallaction/debug.cpp
@@ -32,31 +32,6 @@
namespace Parallaction {
-const char *_jobDescriptions[] = {
- "draw label",
- "draw mouse",
- "delayed label deletion || show inventory",
- "draw animations",
- "NONE",
- "NONE",
- "NONE",
- "NONE",
- "NONE",
- "NONE",
- "NONE",
- "NONE",
- "NONE",
- "NONE",
- "NONE",
- "delayed label deletion || run scripts || erase animations",
- "NONE",
- "put item || pickup item",
- "toggle door",
- "walk",
- "erase label || hide inventory",
- "erase mouse"
-};
-
Debugger::Debugger(Parallaction *vm)
: GUI::Debugger() {
_vm = vm;
@@ -64,7 +39,6 @@ Debugger::Debugger(Parallaction *vm)
DCmd_Register("continue", WRAP_METHOD(Debugger, Cmd_Exit));
DCmd_Register("location", WRAP_METHOD(Debugger, Cmd_Location));
DCmd_Register("give", WRAP_METHOD(Debugger, Cmd_Give));
- DCmd_Register("jobs", WRAP_METHOD(Debugger, Cmd_Jobs));
DCmd_Register("zones", WRAP_METHOD(Debugger, Cmd_Zones));
DCmd_Register("animations", WRAP_METHOD(Debugger, Cmd_Animations));
DCmd_Register("localflags", WRAP_METHOD(Debugger, Cmd_LocalFlags));
@@ -124,9 +98,6 @@ bool Debugger::Cmd_Locations(int argc, const char **argv) {
bool Debugger::Cmd_LocalFlags(int argc, const char **argv) {
- JobList::iterator b = _vm->_jobs.begin();
- JobList::iterator e = _vm->_jobs.end();
-
uint32 flags = _vm->_localFlags[_vm->_currentLocationIndex];
DebugPrintf("+------------------------------+---------+\n"
@@ -157,23 +128,6 @@ bool Debugger::Cmd_Give(int argc, const char **argv) {
}
-bool Debugger::Cmd_Jobs(int argc, const char **argv) {
-
- JobList::iterator b = _vm->_jobs.begin();
- JobList::iterator e = _vm->_jobs.end();
-
- DebugPrintf("+---+-------------------------------------------------------------+\n"
- "|tag| description |\n"
- "+---+-------------------------------------------------------------+\n");
- for ( ; b != e; b++) {
- DebugPrintf("|%3i| %-60s|\n", (*b)->_job->_tag, _jobDescriptions[(*b)->_job->_tag] );
- }
- DebugPrintf("+---+-------------------------------------------------------------+\n");
-
-
- return true;
-}
-
bool Debugger::Cmd_Zones(int argc, const char **argv) {
ZoneList::iterator b = _vm->_zones.begin();
diff --git a/engines/parallaction/debug.h b/engines/parallaction/debug.h
index 6f648d131f..66b610a466 100644
--- a/engines/parallaction/debug.h
+++ b/engines/parallaction/debug.h
@@ -22,7 +22,6 @@ protected:
bool Cmd_DebugLevel(int argc, const char **argv);
bool Cmd_Location(int argc, const char **argv);
bool Cmd_Give(int argc, const char **argv);
- bool Cmd_Jobs(int argc, const char **argv);
bool Cmd_Zones(int argc, const char **argv);
bool Cmd_Animations(int argc, const char **argv);
bool Cmd_LocalFlags(int argc, const char **argv);
diff --git a/engines/parallaction/exec_br.cpp b/engines/parallaction/exec_br.cpp
index 0153df7095..001bef4d43 100644
--- a/engines/parallaction/exec_br.cpp
+++ b/engines/parallaction/exec_br.cpp
@@ -425,14 +425,13 @@ DECLARE_INSTRUCTION_OPCODE(print) {
}
-
+#if 0
void Parallaction_br::jobDisplaySubtitle(void *parm, Job *job) {
// _gfx->drawLabel(_subtitle0);
// _gfx->drawLabel(_subtitle1);
}
void Parallaction_br::jobEraseSubtitle(void *parm, Job *job) {
-#if 0
Common::Rect r;
if (_subtitle0._old.x != -1000) {
@@ -452,9 +451,8 @@ void Parallaction_br::jobEraseSubtitle(void *parm, Job *job) {
_gfx->restoreBackground(r);
}
_subtitle1._old = _subtitle1._pos;
-#endif
}
-
+#endif
DECLARE_INSTRUCTION_OPCODE(text) {
Instruction *inst = (*_instRunCtxt.inst);
setupSubtitles(inst->_text, inst->_text2, inst->_y);
@@ -582,7 +580,7 @@ void Parallaction_br::initOpcodes() {
}
-
+#if 0
void Parallaction_br::jobWaitRemoveLabelJob(void *parm, Job *job) {
}
@@ -606,7 +604,7 @@ void Parallaction_br::jobStopFollower(void *parm, Job *job) {
void Parallaction_br::jobScroll(void *parm, Job *job) {
}
-
+#endif
diff --git a/engines/parallaction/exec_ns.cpp b/engines/parallaction/exec_ns.cpp
index ddaa10d81b..b5d6bb03eb 100644
--- a/engines/parallaction/exec_ns.cpp
+++ b/engines/parallaction/exec_ns.cpp
@@ -338,11 +338,8 @@ void Parallaction_ns::drawAnimations() {
_gfx->showGfxObj(obj, true);
obj->frame = frame;
-// obj->setFrame(frame);
obj->x = v18->_left;
obj->y = v18->_top;
-// obj->setPos(v18->_top, v18->_left);
-// obj->setZ(_si);
obj->z = _si;
}
@@ -363,7 +360,7 @@ void Parallaction_ns::drawAnimations() {
void Parallaction_ns::eraseAnimations() {
- debugC(9, kDebugExec, "jobEraseAnimations");
+ debugC(9, kDebugExec, "eraseAnimations");
for (AnimationList::iterator it = _animations.begin(); it != _animations.end(); it++) {
@@ -384,7 +381,7 @@ void Parallaction_ns::eraseAnimations() {
void Parallaction_ns::runScripts() {
- debugC(9, kDebugExec, "jobRunScripts");
+ debugC(9, kDebugExec, "runScripts");
if (_engineFlags & kEnginePauseJobs) {
return;
diff --git a/engines/parallaction/gfxbase.cpp b/engines/parallaction/gfxbase.cpp
index 8b1bbcacd3..c032f417bd 100644
--- a/engines/parallaction/gfxbase.cpp
+++ b/engines/parallaction/gfxbase.cpp
@@ -130,6 +130,7 @@ void Gfx::drawGfxObjects(Graphics::Surface &surf) {
// TODO: some zones don't appear because of wrong masking (3 or 0?)
// TODO: Dr.Ki is not visible inside the club
+
for (uint i = 0; i < 3; i++) {
GfxObjList::iterator b = _gfxobjList[i].begin();
diff --git a/engines/parallaction/parallaction.cpp b/engines/parallaction/parallaction.cpp
index d8e87226d6..b310d970f2 100644
--- a/engines/parallaction/parallaction.cpp
+++ b/engines/parallaction/parallaction.cpp
@@ -293,7 +293,6 @@ void Parallaction::runGame() {
eraseAnimations();
runScripts();
walk();
- runJobs();
drawAnimations();
}
@@ -623,39 +622,6 @@ void Parallaction::freeCharacter() {
}
-
-/*
- helper function to provide *descending* ordering of the job list
- (higher priorities values comes first in the list)
-*/
-int compareJobPriority(const JobPointer &j1, const JobPointer &j2) {
- return (j1->_job->_tag >= j2->_job->_tag ? -1 : 1);
-}
-
-Job *Parallaction::addJob(uint functionId, void *parm, uint16 tag) {
- debugC(9, kDebugExec, "addJob(%i)", tag);
-
- Job *v8 = new Job;
-
- v8->_parm = parm;
- v8->_tag = tag;
- v8->_finished = 0;
- v8->_count = 0;
-
- JobOpcode *op = createJobOpcode(functionId, v8);
-
- _jobs.insertSorted(op, compareJobPriority);
-
- return v8;
-}
-
-void Parallaction::removeJob(Job *j) {
- debugC(9, kDebugExec, "addJob(%i)", j->_tag);
-
- j->_finished = 1;
- return;
-}
-
void Parallaction::pauseJobs() {
debugC(9, kDebugExec, "pausing jobs execution");
@@ -670,33 +636,6 @@ void Parallaction::resumeJobs() {
return;
}
-void Parallaction::runJobs() {
-
- if (_engineFlags & kEnginePauseJobs) return;
-
- JobList::iterator it = _jobs.begin();
- while (it != _jobs.end()) {
- Job *job = (*it)->_job;
- if (job->_finished == 1)
- it = _jobs.erase(it);
- else
- it++;
- }
-
- it = _jobs.begin();
- while (it != _jobs.end()) {
- Job *job = (*it)->_job;
- debugC(9, kDebugExec, "runJobs: %i", job->_tag);
- (*(*it))();
- it++;
- }
-
-
- return;
-}
-
-
-
void Parallaction::pushParserTables(OpcodeSet *opcodes, Table *statements) {
_opcodes.push(_currentOpcodes);
@@ -970,10 +909,6 @@ void Character::scheduleWalk(int16 x, int16 y) {
}
_walkPath = _builder.buildPath(x, y);
-
-// WalkNodeList *list = _builder.buildPath(x, y);
-// _vm->addJob(kJobWalk, list, kPriority19 );
-
_engineFlags |= kEngineWalking;
}
diff --git a/engines/parallaction/parallaction.h b/engines/parallaction/parallaction.h
index 1523b8b4a5..03aebb7fcc 100644
--- a/engines/parallaction/parallaction.h
+++ b/engines/parallaction/parallaction.h
@@ -141,20 +141,6 @@ struct PARALLACTIONGameDescription;
-struct Job;
-
-struct Job {
- uint16 _count; // # of executions left
- uint16 _tag; // used for ordering
- uint16 _finished;
- void * _parm;
-
-public:
- Job() : _count(0), _tag(0), _finished(0), _parm(NULL) {
- }
-};
-
-
extern uint16 _mouseButtons;
extern char _password[8];
extern uint16 _score;
@@ -288,63 +274,6 @@ public:
typedef Common::Array<const Opcode*> OpcodeSet;
-class JobOpcode {
-
-public:
- Job *_job;
-
- JobOpcode(Job *job) : _job(job) { }
-
- virtual void operator()() const = 0;
- virtual ~JobOpcode() {
- delete _job;
- }
-};
-
-template <class T>
-class OpcodeImpl2 : public JobOpcode {
-
- typedef void (T::*Fn)(void *, Job*);
-
- T* _instance;
- Fn _fn;
-
-public:
- OpcodeImpl2(T* instance, const Fn &fn, Job* job) : JobOpcode(job), _instance(instance), _fn(fn) { }
-
- void operator()() const {
- (_instance->*_fn)(_job->_parm, _job);
- }
-
-};
-
-typedef JobOpcode* JobPointer;
-typedef ManagedList<JobPointer> JobList;
-
-enum Jobs {
- kJobDisplayAnimations = 0,
- kJobEraseAnimations = 1,
- kJobDisplayDroppedItem = 2,
- kJobRemovePickedItem = 3,
- kJobRunScripts = 4,
- kJobWalk = 5,
- kJobDisplayLabel = 6,
- kJobEraseLabel = 7,
- kJobWaitRemoveJob = 8,
- kJobToggleDoor = 9,
-
- // NS specific
- kJobShowInventory = 10,
- kJobHideInventory,
-
- // BRA specific
- kJobEraseSubtitle = 10,
- kJobDisplaySubtitle,
- kJobWaitRemoveSubtitleJob,
- kJobPauseSfx,
- kJobStopFollower,
- kJobScroll
-};
#define DECLARE_UNQUALIFIED_ZONE_PARSER(sig) void locZoneParse_##sig()
@@ -415,12 +344,8 @@ public:
void showCursor(bool visible);
- Job *addJob(uint functionId, void *parm, uint16 tag);
- void removeJob(Job *j);
void pauseJobs();
void resumeJobs();
- void runJobs();
- virtual JobOpcode* createJobOpcode(uint functionId, Job *job) = 0;
void finalizeWalk(WalkNodeList *list);
int16 selectWalkFrame(const Common::Point& pos, const WalkNode* from);
@@ -524,8 +449,6 @@ protected: // data
uint32 _baseTime;
char _characterName1[50]; // only used in changeCharacter
- JobList _jobs;
-
Common::String _saveFileName;
bool _hasLocationSound;
@@ -576,9 +499,6 @@ public:
virtual void parseLocation(const char* name) = 0;
- virtual void jobDisplayDroppedItem(void*, Job *j) = 0;
- virtual void jobRemovePickedItem(void*, Job *j) = 0;
- virtual void jobToggleDoor(void*, Job *j) = 0;
void updateDoor(Zone *z);
virtual void runScripts() = 0;
@@ -672,13 +592,6 @@ public:
virtual void callFunction(uint index, void* parm);
void setMousePointer(uint32 value);
- void initJobs();
-
- typedef void (Parallaction_ns::*JobFn)(void*, Job*);
-
- const JobFn *_jobsFn;
- JobOpcode* createJobOpcode(uint functionId, Job *job);
-
bool loadGame();
bool saveGame();
@@ -752,10 +665,6 @@ private:
const Callable *_callables;
protected:
- void jobDisplayDroppedItem(void*, Job *j) { }
- void jobRemovePickedItem(void*, Job *j) { }
- void jobToggleDoor(void*, Job *j) { }
-
void runScripts();
void walk();
void drawAnimations();
@@ -992,16 +901,10 @@ private:
void freeFonts();
void initOpcodes();
void initParsers();
- void initJobs();
void setArrowCursor();
void setInventoryCursor(int pos);
-
- typedef void (Parallaction_br::*JobFn)(void*, Job*);
- const JobFn *_jobsFn;
- JobOpcode* createJobOpcode(uint functionId, Job *job);
-
void changeLocation(char *location);
void changeCharacter(const char *name);
@@ -1146,10 +1049,8 @@ private:
DECLARE_UNQUALIFIED_INSTRUCTION_OPCODE(stop);
DECLARE_UNQUALIFIED_INSTRUCTION_OPCODE(endscript);
- Job *_jDisplaySubtitle;
- Job *_jEraseSubtitle;
void setupSubtitles(char *s, char *s2, int y);
-
+#if 0
void jobWaitRemoveLabelJob(void *parm, Job *job);
void jobDisplaySubtitle(void *parm, Job *job);
void jobEraseSubtitle(void *parm, Job *job);
@@ -1157,7 +1058,7 @@ private:
void jobPauseSfx(void *parm, Job *job);
void jobStopFollower(void *parm, Job *job);
void jobScroll(void *parm, Job *job);
-
+#endif
};
// FIXME: remove global
diff --git a/engines/parallaction/parallaction_br.cpp b/engines/parallaction/parallaction_br.cpp
index b832b50fd9..60f95eab6b 100644
--- a/engines/parallaction/parallaction_br.cpp
+++ b/engines/parallaction/parallaction_br.cpp
@@ -75,7 +75,6 @@ int Parallaction_br::init() {
_activeZone2 = 0;
- initJobs();
initResources();
initFonts();
initCursors();
@@ -354,34 +353,6 @@ void Parallaction_br::changeCharacter(const char *name) {
}
-void Parallaction_br::initJobs() {
-
- static const JobFn jobs[] = {
- 0,
- 0,
- &Parallaction_br::jobDisplayDroppedItem,
- &Parallaction_br::jobRemovePickedItem,
- 0,
- 0,
- 0,
- 0,
- &Parallaction_br::jobWaitRemoveLabelJob,
- &Parallaction_br::jobToggleDoor,
- &Parallaction_br::jobEraseSubtitle,
- &Parallaction_br::jobDisplaySubtitle,
- &Parallaction_br::jobWaitRemoveSubtitleJob,
- &Parallaction_br::jobPauseSfx,
- &Parallaction_br::jobStopFollower,
- &Parallaction_br::jobScroll
- };
-
- _jobsFn = jobs;
-}
-
-JobOpcode* Parallaction_br::createJobOpcode(uint functionId, Job *job) {
- return new OpcodeImpl2<Parallaction_br>(this, _jobsFn[functionId], job);
-}
-
void Parallaction_br::setArrowCursor() {
diff --git a/engines/parallaction/parallaction_ns.cpp b/engines/parallaction/parallaction_ns.cpp
index 4d1ee8dd9e..98a9ea0202 100644
--- a/engines/parallaction/parallaction_ns.cpp
+++ b/engines/parallaction/parallaction_ns.cpp
@@ -131,7 +131,6 @@ int Parallaction_ns::init() {
_soundMan = new AmigaSoundMan(this);
}
- initJobs();
initResources();
initFonts();
initCursors();
@@ -295,9 +294,6 @@ void Parallaction_ns::changeLocation(char *location) {
_soundMan->playLocationMusic(location);
- // WORKAROUND: this hideLabel has been added to avoid crashes caused by
- // execution of label jobs after a location switch. The other workaround in
- // Parallaction::runGame should have been rendered useless by this one.
_gfx->setFloatingLabel(0);
_gfx->freeLabels();
@@ -308,12 +304,6 @@ void Parallaction_ns::changeLocation(char *location) {
_animations.remove(&_char._ani);
- // WORKAROUND: eat up any pending short-lived job that may be referring to the
- // current location before the actual switch is performed, or engine may
- // segfault because of invalid pointers.
- runJobs();
- runJobs();
-
freeLocation();
LocationName locname;
@@ -424,30 +414,6 @@ void Parallaction_ns::changeCharacter(const char *name) {
return;
}
-void Parallaction_ns::initJobs() {
-
- static const JobFn jobs[] = {
- 0,
- 0,
- &Parallaction_ns::jobDisplayDroppedItem,
- &Parallaction_ns::jobRemovePickedItem,
- 0,
- 0,
- 0,
- 0,
- 0,
- &Parallaction_ns::jobToggleDoor,
- 0,
- 0
- };
-
- _jobsFn = jobs;
-}
-
-JobOpcode* Parallaction_ns::createJobOpcode(uint functionId, Job *job) {
- return new OpcodeImpl2<Parallaction_ns>(this, _jobsFn[functionId], job);
-}
-
void Parallaction_ns::cleanupGame() {
_engineFlags &= ~kEngineTransformedDonna;
diff --git a/engines/parallaction/parser_ns.cpp b/engines/parallaction/parser_ns.cpp
index 5761938735..bff9107297 100644
--- a/engines/parallaction/parser_ns.cpp
+++ b/engines/parallaction/parser_ns.cpp
@@ -1288,8 +1288,6 @@ void Parallaction_ns::parseGetData(Script &script, Zone *z) {
bool visible = (z->_flags & kFlagsRemove) == 0;
GfxObj *obj = _gfx->loadGet(_tokens[1]);
-// obj->setFrame(0);
-// obj->setPos(z->_left, z->_top);
obj->frame = 0;
obj->x = z->_left;
obj->y = z->_top;
@@ -1353,8 +1351,6 @@ void Parallaction_ns::parseDoorData(Script &script, Zone *z) {
uint16 frame = (z->_flags & kFlagsClosed ? 0 : 1);
GfxObj *obj = _gfx->loadDoor(_tokens[1]);
-// obj->setFrame(frame);
-// obj->setPos(z->_left, z->_top);
obj->frame = frame;
obj->x = z->_left;
obj->y = z->_top;
diff --git a/engines/parallaction/walk.cpp b/engines/parallaction/walk.cpp
index 3b5948fe92..4f8453c509 100644
--- a/engines/parallaction/walk.cpp
+++ b/engines/parallaction/walk.cpp
@@ -398,12 +398,12 @@ void Parallaction_ns::walk() {
if (it != list->end()) {
if ((*it)->_x == pos.x && (*it)->_y == pos.y) {
- debugC(1, kDebugWalk, "jobWalk reached node (%i, %i)", (*it)->_x, (*it)->_y);
+ debugC(1, kDebugWalk, "walk reached node (%i, %i)", (*it)->_x, (*it)->_y);
it = list->erase(it);
}
}
if (it == list->end()) {
- debugC(1, kDebugWalk, "jobWalk reached last node");
+ debugC(1, kDebugWalk, "walk reached last node");
// j->_finished = 1;
finalizeWalk(list);
return;
@@ -419,7 +419,7 @@ void Parallaction_ns::walk() {
Common::Point newpos(_char._ani._left, _char._ani._top);
if (newpos == _char._ani._oldPos) {
- debugC(1, kDebugWalk, "jobWalk was blocked by an unforeseen obstacle");
+ debugC(1, kDebugWalk, "walk was blocked by an unforeseen obstacle");
// j->_finished = 1;
finalizeWalk(list);
} else {
diff --git a/engines/parallaction/walk.h b/engines/parallaction/walk.h
index fea83e5a23..c5e8cebc8a 100644
--- a/engines/parallaction/walk.h
+++ b/engines/parallaction/walk.h
@@ -31,7 +31,6 @@
namespace Parallaction {
struct Animation;
-struct Job;
struct WalkNode {
int16 _x;
@@ -48,8 +47,6 @@ public:
typedef ManagedList<WalkNode*> WalkNodeList;
-void jobWalk(void*, Job *j);
-
struct PathBuffer {
// handles a 1-bit depth buffer used for masking non-walkable areas