mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-14 21:59:17 +00:00
Revised debug levels and added many debug strings for parsers.
svn-id: r28921
This commit is contained in:
parent
e4c51dfe75
commit
c37de0131b
@ -519,7 +519,7 @@ void Parallaction_ns::_c_endIntro(void *parm) {
|
||||
|
||||
_gfx->setFont(_menuFont);
|
||||
|
||||
debugC(1, kDebugLocation, "endIntro()");
|
||||
debugC(1, kDebugExec, "endIntro()");
|
||||
|
||||
for (uint16 _si = 0; _si < 6; _si++) {
|
||||
_gfx->displayCenteredString(80, _credits[_si]._role);
|
||||
@ -538,7 +538,7 @@ void Parallaction_ns::_c_endIntro(void *parm) {
|
||||
|
||||
_gfx->copyScreen(Gfx::kBitBack, Gfx::kBitFront);
|
||||
}
|
||||
debugC(1, kDebugLocation, "endIntro(): done showing credits");
|
||||
debugC(1, kDebugExec, "endIntro(): done showing credits");
|
||||
|
||||
if ((getFeatures() & GF_DEMO) == 0) {
|
||||
_gfx->displayCenteredString(80, "CLICK MOUSE BUTTON TO START");
|
||||
|
@ -103,7 +103,7 @@ protected:
|
||||
};
|
||||
|
||||
uint16 DialogueManager::askPassword() {
|
||||
debugC(1, kDebugDialogue, "checkDialoguePassword()");
|
||||
debugC(3, kDebugExec, "checkDialoguePassword()");
|
||||
|
||||
char password[100];
|
||||
uint16 passwordLen;
|
||||
@ -241,7 +241,7 @@ uint16 DialogueManager::getAnswer() {
|
||||
|
||||
clear();
|
||||
|
||||
debugC(1, kDebugDialogue, "runDialogue: user selected answer #%i", answer);
|
||||
debugC(3, kDebugExec, "runDialogue: user selected answer #%i", answer);
|
||||
|
||||
return answer;
|
||||
}
|
||||
@ -361,7 +361,7 @@ int16 DialogueManager::getHoverAnswer(int16 x, int16 y) {
|
||||
|
||||
|
||||
void Parallaction::runDialogue(SpeakData *data) {
|
||||
debugC(1, kDebugDialogue, "runDialogue: starting dialogue '%s'", data->_name);
|
||||
debugC(1, kDebugExec, "runDialogue: starting dialogue '%s'", data->_name);
|
||||
|
||||
_gfx->setFont(_dialogueFont);
|
||||
|
||||
|
@ -46,7 +46,7 @@ typedef OpcodeImpl<Parallaction_br> OpcodeV2;
|
||||
#define DECLARE_INSTRUCTION_OPCODE(op) void Parallaction_br::instOp_##op()
|
||||
|
||||
void Parallaction_br::setupSubtitles(char *s, char *s2, int y) {
|
||||
debugC(5, kDebugLocation, "setupSubtitles(%s, %s, %i)", s, s2, y);
|
||||
debugC(5, kDebugExec, "setupSubtitles(%s, %s, %i)", s, s2, y);
|
||||
|
||||
if (!scumm_stricmp("clear", s)) {
|
||||
|
||||
|
@ -359,7 +359,7 @@ void Parallaction_ns::jobDisplayAnimations(void *parm, Job *j) {
|
||||
else
|
||||
_si = _gfx->queryMask(v18->_top + v18->height());
|
||||
|
||||
debugC(9, kDebugLocation, "jobDisplayAnimations(%s, x:%i, y:%i, z:%i, w:%i, h:%i, f:%i/%i, %p)", v18->_label._text, v18->_left, v18->_top, _si, v14.w, v14.h,
|
||||
debugC(9, kDebugExec, "jobDisplayAnimations(%s, x:%i, y:%i, z:%i, w:%i, h:%i, f:%i/%i, %p)", v18->_label._text, v18->_left, v18->_top, _si, v14.w, v14.h,
|
||||
frame, v18->getFrameNum(), v14.pixels);
|
||||
_gfx->blitCnv(&v14, v18->_left, v18->_top, _si, Gfx::kBitBack);
|
||||
|
||||
@ -381,7 +381,7 @@ void Parallaction_ns::jobDisplayAnimations(void *parm, Job *j) {
|
||||
|
||||
|
||||
void Parallaction_ns::jobEraseAnimations(void *arg_0, Job *j) {
|
||||
debugC(3, kDebugJobs, "jobEraseAnimations");
|
||||
debugC(9, kDebugExec, "jobEraseAnimations");
|
||||
|
||||
for (AnimationList::iterator it = _animations.begin(); it != _animations.end(); it++) {
|
||||
|
||||
@ -405,7 +405,7 @@ void Parallaction_ns::jobEraseAnimations(void *arg_0, Job *j) {
|
||||
|
||||
|
||||
void Parallaction_ns::jobRunScripts(void *parm, Job *j) {
|
||||
debugC(3, kDebugJobs, "jobRunScripts");
|
||||
debugC(9, kDebugExec, "jobRunScripts");
|
||||
|
||||
static uint16 modCounter = 0;
|
||||
|
||||
@ -422,7 +422,7 @@ void Parallaction_ns::jobRunScripts(void *parm, Job *j) {
|
||||
InstructionList::iterator inst = a->_program->_ip;
|
||||
while (((*inst)->_index != INST_SHOW) && (a->_flags & kFlagsActing)) {
|
||||
|
||||
debugC(9, kDebugJobs, "Animation: %s, instruction: %s", a->_label._text, _instructionNamesRes[(*inst)->_index - 1]);
|
||||
debugC(9, kDebugExec, "Animation: %s, instruction: %s", a->_label._text, _instructionNamesRes[(*inst)->_index - 1]);
|
||||
|
||||
_instRunCtxt.inst = inst;
|
||||
_instRunCtxt.a = a;
|
||||
@ -454,7 +454,7 @@ label1:
|
||||
|
||||
|
||||
void Parallaction::runCommands(CommandList& list, Zone *z) {
|
||||
debugC(1, kDebugLocation, "runCommands");
|
||||
debugC(3, kDebugExec, "runCommands");
|
||||
|
||||
CommandList::iterator it = list.begin();
|
||||
for ( ; it != list.end(); it++) {
|
||||
@ -472,7 +472,7 @@ void Parallaction::runCommands(CommandList& list, Zone *z) {
|
||||
if ((cmd->_flagsOn & v8) != cmd->_flagsOn) continue;
|
||||
if ((cmd->_flagsOff & ~v8) != cmd->_flagsOff) continue;
|
||||
|
||||
debugC(1, kDebugLocation, "runCommands[%i]: %s (on: %x, off: %x)", cmd->_id, _commandsNamesRes[cmd->_id-1], cmd->_flagsOn, cmd->_flagsOff);
|
||||
debugC(3, kDebugExec, "runCommands[%i]: %s (on: %x, off: %x)", cmd->_id, _commandsNamesRes[cmd->_id-1], cmd->_flagsOn, cmd->_flagsOff);
|
||||
|
||||
_cmdRunCtxt.z = z;
|
||||
_cmdRunCtxt.cmd = cmd;
|
||||
@ -480,7 +480,7 @@ void Parallaction::runCommands(CommandList& list, Zone *z) {
|
||||
(*_commandOpcodes[cmd->_id])();
|
||||
}
|
||||
|
||||
debugC(1, kDebugLocation, "runCommands completed");
|
||||
debugC(3, kDebugExec, "runCommands completed");
|
||||
|
||||
return;
|
||||
|
||||
@ -567,11 +567,11 @@ void Parallaction::displayItemComment(ExamineData *data) {
|
||||
|
||||
|
||||
uint16 Parallaction::runZone(Zone *z) {
|
||||
debugC(3, kDebugLocation, "runZone (%s)", z->_label._text);
|
||||
debugC(3, kDebugExec, "runZone (%s)", z->_label._text);
|
||||
|
||||
uint16 subtype = z->_type & 0xFFFF;
|
||||
|
||||
debugC(3, kDebugLocation, "type = %x, object = %x", subtype, (z->_type & 0xFFFF0000) >> 16);
|
||||
debugC(3, kDebugExec, "type = %x, object = %x", subtype, (z->_type & 0xFFFF0000) >> 16);
|
||||
switch(subtype) {
|
||||
|
||||
case kZoneExamine:
|
||||
@ -607,7 +607,7 @@ uint16 Parallaction::runZone(Zone *z) {
|
||||
|
||||
}
|
||||
|
||||
debugC(3, kDebugLocation, "runZone completed");
|
||||
debugC(3, kDebugExec, "runZone completed");
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -856,7 +856,7 @@ void Parallaction_ns::initOpcodes() {
|
||||
void Parallaction_ns::jobDisplayLabel(void *parm, Job *j) {
|
||||
|
||||
Label *label = (Label*)parm;
|
||||
debugC(9, kDebugJobs, "jobDisplayLabel (%p)", (const void*) label);
|
||||
debugC(9, kDebugExec, "jobDisplayLabel (%p)", (const void*) label);
|
||||
|
||||
_gfx->drawLabel(*label);
|
||||
|
||||
@ -866,7 +866,7 @@ void Parallaction_ns::jobDisplayLabel(void *parm, Job *j) {
|
||||
void Parallaction_ns::jobEraseLabel(void *parm, Job *j) {
|
||||
Label *label = (Label*)parm;
|
||||
|
||||
debugC(9, kDebugJobs, "jobEraseLabel (%p)", (const void*) label);
|
||||
debugC(9, kDebugExec, "jobEraseLabel (%p)", (const void*) label);
|
||||
|
||||
int16 _si, _di;
|
||||
|
||||
@ -905,7 +905,7 @@ void Parallaction_ns::jobWaitRemoveJob(void *parm, Job *j) {
|
||||
|
||||
static uint16 count = 0;
|
||||
|
||||
debugC(3, kDebugJobs, "jobWaitRemoveJob: count = %i", count);
|
||||
debugC(9, kDebugExec, "jobWaitRemoveJob: count = %i", count);
|
||||
|
||||
_engineFlags |= kEngineBlockInput;
|
||||
|
||||
|
@ -105,11 +105,11 @@ Parallaction::Parallaction(OSystem *syst) :
|
||||
Common::File::addDefaultDirectory( _gameDataPath );
|
||||
|
||||
Common::addSpecialDebugLevel(kDebugDialogue, "dialogue", "Dialogues debug level");
|
||||
Common::addSpecialDebugLevel(kDebugLocation, "location", "Location debug level");
|
||||
Common::addSpecialDebugLevel(kDebugParser, "parser", "Parser debug level");
|
||||
Common::addSpecialDebugLevel(kDebugDisk, "disk", "Disk debug level");
|
||||
Common::addSpecialDebugLevel(kDebugWalk, "walk", "Walk debug level");
|
||||
Common::addSpecialDebugLevel(kDebugGraphics, "gfx", "Gfx debug level");
|
||||
Common::addSpecialDebugLevel(kDebugJobs, "jobs", "Jobs debug level");
|
||||
Common::addSpecialDebugLevel(kDebugExec, "exec", "Execution debug level");
|
||||
Common::addSpecialDebugLevel(kDebugInput, "input", "Input debug level");
|
||||
Common::addSpecialDebugLevel(kDebugAudio, "audio", "Audio debug level");
|
||||
Common::addSpecialDebugLevel(kDebugMenu, "menu", "Menu debug level");
|
||||
@ -652,7 +652,7 @@ void Parallaction::changeCursor(int32 index) {
|
||||
|
||||
|
||||
void Parallaction::freeCharacter() {
|
||||
debugC(3, kDebugLocation, "freeCharacter()");
|
||||
debugC(1, kDebugExec, "freeCharacter()");
|
||||
|
||||
if (!IS_DUMMY_CHARACTER(_characterName)) {
|
||||
if (_objectsNames)
|
||||
@ -689,7 +689,7 @@ int compareJobPriority(const JobPointer &j1, const JobPointer &j2) {
|
||||
}
|
||||
|
||||
Job *Parallaction::addJob(uint functionId, void *parm, uint16 tag) {
|
||||
debugC(3, kDebugJobs, "addJob(%i)", tag);
|
||||
debugC(9, kDebugExec, "addJob(%i)", tag);
|
||||
|
||||
Job *v8 = new Job;
|
||||
|
||||
@ -706,21 +706,21 @@ Job *Parallaction::addJob(uint functionId, void *parm, uint16 tag) {
|
||||
}
|
||||
|
||||
void Parallaction::removeJob(Job *j) {
|
||||
debugC(3, kDebugJobs, "addJob(%i)", j->_tag);
|
||||
debugC(9, kDebugExec, "addJob(%i)", j->_tag);
|
||||
|
||||
j->_finished = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
void Parallaction::pauseJobs() {
|
||||
debugC(3, kDebugJobs, "pausing jobs execution");
|
||||
debugC(9, kDebugExec, "pausing jobs execution");
|
||||
|
||||
_engineFlags |= kEnginePauseJobs;
|
||||
return;
|
||||
}
|
||||
|
||||
void Parallaction::resumeJobs() {
|
||||
debugC(3, kDebugJobs, "resuming jobs execution");
|
||||
debugC(9, kDebugExec, "resuming jobs execution");
|
||||
|
||||
_engineFlags &= ~kEnginePauseJobs;
|
||||
return;
|
||||
@ -742,7 +742,7 @@ void Parallaction::runJobs() {
|
||||
it = _jobs.begin();
|
||||
while (it != _jobs.end()) {
|
||||
Job *job = (*it)->_job;
|
||||
debugC(9, kDebugJobs, "runJobs: %i", job->_tag);
|
||||
debugC(9, kDebugExec, "runJobs: %i", job->_tag);
|
||||
(*(*it))();
|
||||
it++;
|
||||
}
|
||||
@ -830,7 +830,7 @@ void Parallaction::parseStatement() {
|
||||
|
||||
_lookup = _currentStatements->lookup(_tokens[0]);
|
||||
|
||||
debugC(9, kDebugLocation, "parseStatement: %s (lookup = %i)", _tokens[0], _lookup);
|
||||
debugC(9, kDebugParser, "parseStatement: %s (lookup = %i)", _tokens[0], _lookup);
|
||||
|
||||
(*(*_currentOpcodes)[_lookup])();
|
||||
}
|
||||
@ -896,7 +896,7 @@ void Parallaction::allocateLocationSlot(const char *name) {
|
||||
|
||||
|
||||
void Parallaction::freeLocation() {
|
||||
debugC(7, kDebugLocation, "freeLocation");
|
||||
debugC(2, kDebugExec, "freeLocation");
|
||||
|
||||
_soundMan->stopSfx(0);
|
||||
_soundMan->stopSfx(1);
|
||||
@ -1029,10 +1029,10 @@ void Parallaction::showSlide(const char *name) {
|
||||
// fades towards game palette
|
||||
//
|
||||
void Parallaction::doLocationEnterTransition() {
|
||||
debugC(1, kDebugLocation, "doLocationEnterTransition");
|
||||
debugC(2, kDebugExec, "doLocationEnterTransition");
|
||||
|
||||
if (_localFlags[_currentLocationIndex] & kFlagsVisited) {
|
||||
debugC(3, kDebugLocation, "skipping location transition");
|
||||
debugC(2, kDebugExec, "skipping location transition");
|
||||
return; // visited
|
||||
}
|
||||
|
||||
@ -1060,7 +1060,7 @@ void Parallaction::doLocationEnterTransition() {
|
||||
_gfx->updateScreen();
|
||||
}
|
||||
|
||||
debugC(1, kDebugLocation, "doLocationEnterTransition completed");
|
||||
debugC(2, kDebugExec, "doLocationEnterTransition completed");
|
||||
|
||||
return;
|
||||
}
|
||||
@ -1078,7 +1078,7 @@ Zone *Parallaction::findZone(const char *name) {
|
||||
|
||||
|
||||
void Parallaction::freeZones() {
|
||||
debugC(1, kDebugLocation, "freeZones: kEngineQuit = %i", _engineFlags & kEngineQuit);
|
||||
debugC(2, kDebugExec, "freeZones: kEngineQuit = %i", _engineFlags & kEngineQuit);
|
||||
|
||||
ZoneList::iterator it = _zones.begin();
|
||||
|
||||
@ -1096,7 +1096,7 @@ void Parallaction::freeZones() {
|
||||
))) &&
|
||||
((_engineFlags & kEngineQuit) == 0)) {
|
||||
|
||||
debugC(1, kDebugLocation, "freeZones preserving zone '%s'", z->_label._text);
|
||||
debugC(2, kDebugExec, "freeZones preserving zone '%s'", z->_label._text);
|
||||
|
||||
it++;
|
||||
|
||||
|
@ -47,10 +47,10 @@ namespace Parallaction {
|
||||
enum {
|
||||
kDebugDisk = 1 << 0,
|
||||
kDebugWalk = 1 << 1,
|
||||
kDebugLocation = 1 << 2,
|
||||
kDebugParser = 1 << 2,
|
||||
kDebugDialogue = 1 << 3,
|
||||
kDebugGraphics = 1 << 4,
|
||||
kDebugJobs = 1 << 5,
|
||||
kDebugExec = 1 << 5,
|
||||
kDebugInput = 1 << 6,
|
||||
kDebugAudio = 1 << 7,
|
||||
kDebugMenu = 1 << 8
|
||||
|
@ -228,7 +228,7 @@ int Parallaction_ns::go() {
|
||||
is commented out, and would definitely crash the current implementation.
|
||||
*/
|
||||
void Parallaction_ns::changeLocation(char *location) {
|
||||
debugC(1, kDebugLocation, "changeLocation(%s)", location);
|
||||
debugC(1, kDebugExec, "changeLocation(%s)", location);
|
||||
|
||||
_soundMan->playLocationMusic(location);
|
||||
|
||||
@ -323,14 +323,14 @@ void Parallaction_ns::changeLocation(char *location) {
|
||||
if (_hasLocationSound)
|
||||
_soundMan->playSfx(_locationSound, 0, true);
|
||||
|
||||
debugC(1, kDebugLocation, "changeLocation() done");
|
||||
debugC(1, kDebugExec, "changeLocation() done");
|
||||
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
void Parallaction_ns::changeCharacter(const char *name) {
|
||||
debugC(1, kDebugLocation, "changeCharacter(%s)", name);
|
||||
debugC(1, kDebugExec, "changeCharacter(%s)", name);
|
||||
|
||||
char baseName[20];
|
||||
if (IS_MINI_CHARACTER(name)) {
|
||||
@ -374,7 +374,7 @@ void Parallaction_ns::changeCharacter(const char *name) {
|
||||
|
||||
strcpy(_characterName1, fullName);
|
||||
|
||||
debugC(1, kDebugLocation, "changeCharacter() done");
|
||||
debugC(1, kDebugExec, "changeCharacter() done");
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -87,7 +87,9 @@ namespace Parallaction {
|
||||
#define DECLARE_LOCATION_PARSER(sig) void Parallaction_br::locParse_##sig()
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(location) {
|
||||
DECLARE_LOCATION_PARSER(location) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(location) ");
|
||||
|
||||
strcpy(_location._name, _tokens[1]);
|
||||
|
||||
bool flip = false;
|
||||
@ -125,7 +127,9 @@ DECLARE_LOCATION_PARSER(location) {
|
||||
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(zone) {
|
||||
DECLARE_LOCATION_PARSER(zone) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(zone) ");
|
||||
|
||||
parseZone(*_locParseCtxt.script, _zones, _tokens[1]);
|
||||
|
||||
_locParseCtxt.z->_index = _locParseCtxt.numZones++;
|
||||
@ -139,7 +143,9 @@ DECLARE_LOCATION_PARSER(zone) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(animation) {
|
||||
DECLARE_LOCATION_PARSER(animation) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(animation) ");
|
||||
|
||||
parseAnimation(*_locParseCtxt.script, _animations, _tokens[1]);
|
||||
|
||||
_locParseCtxt.a->_index = _locParseCtxt.numZones++;
|
||||
@ -153,7 +159,9 @@ DECLARE_LOCATION_PARSER(animation) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(localflags) {
|
||||
DECLARE_LOCATION_PARSER(localflags) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(localflags) ");
|
||||
|
||||
int _si = 1;
|
||||
while (_tokens[_si][0] != '\0') {
|
||||
_localFlagNames->addData(_tokens[_si]);
|
||||
@ -162,7 +170,9 @@ DECLARE_LOCATION_PARSER(localflags) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(flags) {
|
||||
DECLARE_LOCATION_PARSER(flags) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(flags) ");
|
||||
|
||||
if ((_localFlags[_currentLocationIndex] & kFlagsVisited) == 0) {
|
||||
// only for 1st visit
|
||||
_localFlags[_currentLocationIndex] = 0;
|
||||
@ -180,46 +190,64 @@ DECLARE_LOCATION_PARSER(flags) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(comment) {
|
||||
DECLARE_LOCATION_PARSER(comment) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(comment) ");
|
||||
|
||||
_location._comment = parseComment(*_locParseCtxt.script);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(endcomment) {
|
||||
DECLARE_LOCATION_PARSER(endcomment) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(endcomment) ");
|
||||
|
||||
_location._endComment = parseComment(*_locParseCtxt.script);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(sound) {
|
||||
DECLARE_LOCATION_PARSER(sound) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(sound) ");
|
||||
|
||||
// _soundMan->loadSound(_tokens[1]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(music) {
|
||||
DECLARE_LOCATION_PARSER(music) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(music) ");
|
||||
|
||||
// _soundMan->loadMusic(_tokens[1]);
|
||||
}
|
||||
|
||||
DECLARE_LOCATION_PARSER(redundant) {
|
||||
DECLARE_LOCATION_PARSER(redundant) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(redundant) ");
|
||||
|
||||
warning("redundant '%s' line found in script '%s'", _tokens[0], _locParseCtxt.filename);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(character) {
|
||||
DECLARE_LOCATION_PARSER(character) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(character) ");
|
||||
|
||||
// changeCharacter(character);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(ifchar) {
|
||||
DECLARE_LOCATION_PARSER(ifchar) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(ifchar) ");
|
||||
|
||||
skip(_locParseCtxt.script, "ENDIF");
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(null) {
|
||||
DECLARE_LOCATION_PARSER(null) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(null) ");
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(mask) {
|
||||
DECLARE_LOCATION_PARSER(mask) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(mask) ");
|
||||
|
||||
_disk->loadScenery(*_backgroundInfo, NULL, _tokens[1], NULL);
|
||||
_gfx->setMask(&_backgroundInfo->mask);
|
||||
|
||||
@ -229,18 +257,24 @@ DECLARE_LOCATION_PARSER(mask) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(path) {
|
||||
DECLARE_LOCATION_PARSER(path) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(path) ");
|
||||
|
||||
_disk->loadScenery(*_backgroundInfo, NULL, NULL, _tokens[1]);
|
||||
_pathBuffer = &_backgroundInfo->path;
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(escape) {
|
||||
DECLARE_LOCATION_PARSER(escape) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(escape) ");
|
||||
|
||||
parseCommands(*_locParseCtxt.script, _location._escapeCommands);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(zeta) {
|
||||
DECLARE_LOCATION_PARSER(zeta) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(zeta) ");
|
||||
|
||||
_zeta0 = atoi(_tokens[1]);
|
||||
_zeta1 = atoi(_tokens[2]);
|
||||
|
||||
@ -251,18 +285,24 @@ DECLARE_LOCATION_PARSER(zeta) {
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_COMMAND_PARSER(ifchar) {
|
||||
DECLARE_COMMAND_PARSER(ifchar) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(ifchar) ");
|
||||
|
||||
if (!scumm_stricmp(_characterName, _tokens[1]))
|
||||
skip(_locParseCtxt.script, "endif");
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(endif) {
|
||||
DECLARE_COMMAND_PARSER(endif) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(endif) ");
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(location) {
|
||||
DECLARE_COMMAND_PARSER(location) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(location) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
_locParseCtxt.cmd->u._string = strdup(_tokens[1]);
|
||||
@ -287,7 +327,9 @@ DECLARE_COMMAND_PARSER(location) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(string) {
|
||||
DECLARE_COMMAND_PARSER(string) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(string) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
_locParseCtxt.cmd->u._string = strdup(_tokens[1]);
|
||||
@ -297,7 +339,9 @@ DECLARE_COMMAND_PARSER(string) {
|
||||
addCommand();
|
||||
}
|
||||
|
||||
DECLARE_COMMAND_PARSER(math) {
|
||||
DECLARE_COMMAND_PARSER(math) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(math) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
_locParseCtxt.cmd->u._lvalue = _countersNames->lookup(_tokens[1]);
|
||||
@ -310,7 +354,9 @@ DECLARE_COMMAND_PARSER(math) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(test) {
|
||||
DECLARE_COMMAND_PARSER(test) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(test) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
uint counter = _countersNames->lookup(_tokens[1]);
|
||||
@ -341,7 +387,9 @@ DECLARE_COMMAND_PARSER(test) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(music) {
|
||||
DECLARE_COMMAND_PARSER(music) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(music) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
_locParseCtxt.cmd->u._musicCommand = _audioCommandsNames->lookup(_tokens[1]);
|
||||
@ -357,7 +405,9 @@ DECLARE_COMMAND_PARSER(music) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(zone) {
|
||||
DECLARE_COMMAND_PARSER(zone) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(zone) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
_locParseCtxt.cmd->u._zone = findZone(_tokens[_locParseCtxt.nextToken]);
|
||||
@ -374,7 +424,9 @@ DECLARE_COMMAND_PARSER(zone) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(zeta) {
|
||||
DECLARE_COMMAND_PARSER(zeta) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(zeta) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
_locParseCtxt.cmd->u._zeta0 = atoi(_tokens[1]);
|
||||
@ -394,7 +446,9 @@ DECLARE_COMMAND_PARSER(zeta) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(give) {
|
||||
DECLARE_COMMAND_PARSER(give) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(give) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
_locParseCtxt.cmd->u._object = 4 + atoi(_tokens[1]);
|
||||
@ -418,7 +472,9 @@ DECLARE_COMMAND_PARSER(give) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(text) {
|
||||
DECLARE_COMMAND_PARSER(text) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(text) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
if (isdigit(_tokens[1][1])) {
|
||||
@ -442,7 +498,9 @@ DECLARE_COMMAND_PARSER(text) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(unary) {
|
||||
DECLARE_COMMAND_PARSER(unary) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(unary) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
_locParseCtxt.cmd->u._rvalue = atoi(_tokens[1]);
|
||||
@ -453,7 +511,9 @@ DECLARE_COMMAND_PARSER(unary) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ZONE_PARSER(limits) {
|
||||
DECLARE_ZONE_PARSER(limits) {
|
||||
debugC(7, kDebugParser, "ZONE_PARSER(limits) ");
|
||||
|
||||
if (isalpha(_tokens[1][1])) {
|
||||
_locParseCtxt.z->_flags |= kFlagsAnimLinked;
|
||||
_locParseCtxt.z->_linkedAnim = findAnimation(_tokens[1]);
|
||||
@ -467,14 +527,18 @@ DECLARE_ZONE_PARSER(limits) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ZONE_PARSER(moveto) {
|
||||
DECLARE_ZONE_PARSER(moveto) {
|
||||
debugC(7, kDebugParser, "ZONE_PARSER(moveto) ");
|
||||
|
||||
_locParseCtxt.z->_moveTo.x = atoi(_tokens[1]);
|
||||
_locParseCtxt.z->_moveTo.y = atoi(_tokens[2]);
|
||||
// _locParseCtxt.z->_moveTo.z = atoi(_tokens[3]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ZONE_PARSER(type) {
|
||||
DECLARE_ZONE_PARSER(type) {
|
||||
debugC(7, kDebugParser, "ZONE_PARSER(type) ");
|
||||
|
||||
if (_tokens[2][0] != '\0') {
|
||||
_locParseCtxt.z->_type = (4 + _objectsNames->lookup(_tokens[2])) << 16;
|
||||
}
|
||||
@ -492,12 +556,16 @@ DECLARE_ZONE_PARSER(type) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ANIM_PARSER(file) {
|
||||
DECLARE_ANIM_PARSER(file) {
|
||||
debugC(7, kDebugParser, "ANIM_PARSER(file) ");
|
||||
|
||||
_locParseCtxt.a->_cnv = _disk->loadFrames(_tokens[1]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ANIM_PARSER(position) {
|
||||
DECLARE_ANIM_PARSER(position) {
|
||||
debugC(7, kDebugParser, "ANIM_PARSER(position) ");
|
||||
|
||||
_locParseCtxt.a->_left = atoi(_tokens[1]);
|
||||
_locParseCtxt.a->_top = atoi(_tokens[2]);
|
||||
_locParseCtxt.a->_z = atoi(_tokens[3]);
|
||||
@ -505,14 +573,18 @@ DECLARE_ANIM_PARSER(position) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ANIM_PARSER(moveto) {
|
||||
DECLARE_ANIM_PARSER(moveto) {
|
||||
debugC(7, kDebugParser, "ANIM_PARSER(moveto) ");
|
||||
|
||||
_locParseCtxt.a->_moveTo.x = atoi(_tokens[1]);
|
||||
_locParseCtxt.a->_moveTo.y = atoi(_tokens[2]);
|
||||
// _locParseCtxt.a->_moveTo.z = atoi(_tokens[3]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ANIM_PARSER(endanimation) {
|
||||
DECLARE_ANIM_PARSER(endanimation) {
|
||||
debugC(7, kDebugParser, "ANIM_PARSER(endanimation) ");
|
||||
|
||||
|
||||
if (_locParseCtxt.a->_cnv) {
|
||||
_locParseCtxt.a->_right = _locParseCtxt.a->width();
|
||||
@ -536,13 +608,17 @@ DECLARE_ANIM_PARSER(endanimation) {
|
||||
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(zone) {
|
||||
DECLARE_INSTRUCTION_PARSER(zone) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(zone) ");
|
||||
|
||||
_instParseCtxt.inst->_z = findZone(_tokens[1]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(color) {
|
||||
DECLARE_INSTRUCTION_PARSER(color) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(color) ");
|
||||
|
||||
|
||||
parseRValue(_instParseCtxt.inst->_opB, _tokens[1]);
|
||||
|
||||
@ -553,7 +629,9 @@ DECLARE_INSTRUCTION_PARSER(color) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(mask) {
|
||||
DECLARE_INSTRUCTION_PARSER(mask) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(mask) ");
|
||||
|
||||
|
||||
parseRValue(_instParseCtxt.inst->_opA, _tokens[1]);
|
||||
parseRValue(_instParseCtxt.inst->_opB, _tokens[2]);
|
||||
@ -562,12 +640,16 @@ DECLARE_INSTRUCTION_PARSER(mask) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(print) {
|
||||
DECLARE_INSTRUCTION_PARSER(print) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(print) ");
|
||||
|
||||
parseRValue(_instParseCtxt.inst->_opB, _tokens[1]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(text) {
|
||||
DECLARE_INSTRUCTION_PARSER(text) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(text) ");
|
||||
|
||||
|
||||
int _si = 1;
|
||||
|
||||
@ -588,7 +670,9 @@ DECLARE_INSTRUCTION_PARSER(text) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(if_op) {
|
||||
DECLARE_INSTRUCTION_PARSER(if_op) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(if_op) ");
|
||||
|
||||
|
||||
if (_instParseCtxt.openIf)
|
||||
error("cannot nest 'if' blocks");
|
||||
@ -612,7 +696,9 @@ DECLARE_INSTRUCTION_PARSER(if_op) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(endif) {
|
||||
DECLARE_INSTRUCTION_PARSER(endif) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(endif) ");
|
||||
|
||||
if (_instParseCtxt.openIf == 0)
|
||||
error("unexpected 'endif'");
|
||||
|
||||
|
@ -77,22 +77,30 @@ namespace Parallaction {
|
||||
|
||||
|
||||
|
||||
DECLARE_ANIM_PARSER(invalid) {
|
||||
DECLARE_ANIM_PARSER(invalid) {
|
||||
debugC(7, kDebugParser, "ANIM_PARSER(invalid) ");
|
||||
|
||||
error("unknown statement '%s' in animation %s", _tokens[0], _locParseCtxt.a->_label._text);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ANIM_PARSER(script) {
|
||||
DECLARE_ANIM_PARSER(script) {
|
||||
debugC(7, kDebugParser, "ANIM_PARSER(script) ");
|
||||
|
||||
_locParseCtxt.a->_scriptName = strdup(_tokens[1]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ANIM_PARSER(commands) {
|
||||
DECLARE_ANIM_PARSER(commands) {
|
||||
debugC(7, kDebugParser, "ANIM_PARSER(commands) ");
|
||||
|
||||
parseCommands(*_locParseCtxt.script, _locParseCtxt.a->_commands);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ANIM_PARSER(type) {
|
||||
DECLARE_ANIM_PARSER(type) {
|
||||
debugC(7, kDebugParser, "ANIM_PARSER(type) ");
|
||||
|
||||
if (_tokens[2][0] != '\0') {
|
||||
_locParseCtxt.a->_type = ((4 + _objectsNames->lookup(_tokens[2])) << 16) & 0xFFFF0000;
|
||||
}
|
||||
@ -113,12 +121,16 @@ DECLARE_ANIM_PARSER(type) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ANIM_PARSER(label) {
|
||||
DECLARE_ANIM_PARSER(label) {
|
||||
debugC(7, kDebugParser, "ANIM_PARSER(label) ");
|
||||
|
||||
renderLabel(&_locParseCtxt.a->_label._cnv, _tokens[1]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ANIM_PARSER(flags) {
|
||||
DECLARE_ANIM_PARSER(flags) {
|
||||
debugC(7, kDebugParser, "ANIM_PARSER(flags) ");
|
||||
|
||||
uint16 _si = 1;
|
||||
|
||||
do {
|
||||
@ -129,7 +141,9 @@ DECLARE_ANIM_PARSER(flags) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ANIM_PARSER(file) {
|
||||
DECLARE_ANIM_PARSER(file) {
|
||||
debugC(7, kDebugParser, "ANIM_PARSER(file) ");
|
||||
|
||||
char vC8[200];
|
||||
strcpy(vC8, _tokens[1]);
|
||||
if (_engineFlags & kEngineTransformedDonna) {
|
||||
@ -141,20 +155,26 @@ DECLARE_ANIM_PARSER(file) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ANIM_PARSER(position) {
|
||||
DECLARE_ANIM_PARSER(position) {
|
||||
debugC(7, kDebugParser, "ANIM_PARSER(position) ");
|
||||
|
||||
_locParseCtxt.a->_left = atoi(_tokens[1]);
|
||||
_locParseCtxt.a->_top = atoi(_tokens[2]);
|
||||
_locParseCtxt.a->_z = atoi(_tokens[3]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ANIM_PARSER(moveto) {
|
||||
DECLARE_ANIM_PARSER(moveto) {
|
||||
debugC(7, kDebugParser, "ANIM_PARSER(moveto) ");
|
||||
|
||||
_locParseCtxt.a->_moveTo.x = atoi(_tokens[1]);
|
||||
_locParseCtxt.a->_moveTo.y = atoi(_tokens[2]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ANIM_PARSER(endanimation) {
|
||||
DECLARE_ANIM_PARSER(endanimation) {
|
||||
debugC(7, kDebugParser, "ANIM_PARSER(endanimation) ");
|
||||
|
||||
|
||||
_locParseCtxt.a->_oldPos.x = -1000;
|
||||
_locParseCtxt.a->_oldPos.y = -1000;
|
||||
@ -165,7 +185,7 @@ DECLARE_ANIM_PARSER(endanimation) {
|
||||
}
|
||||
|
||||
Animation *Parallaction_ns::parseAnimation(Script& script, AnimationList &list, char *name) {
|
||||
// printf("parseAnimation(%s)\n", name);
|
||||
debugC(5, kDebugParser, "parseAnimation(name: %s)", name);
|
||||
|
||||
Animation *a = new Animation;
|
||||
|
||||
@ -207,7 +227,7 @@ void Parallaction_ns::parseInstruction(Animation *a, LocalVariable *locals) {
|
||||
}
|
||||
|
||||
void Parallaction_ns::loadProgram(Animation *a, const char *filename) {
|
||||
// printf("loadProgram(%s)\n", filename);
|
||||
debugC(1, kDebugParser, "loadProgram(Animation: %s, script: %s)", a->_label._text, filename);
|
||||
|
||||
Script *script = _disk->loadScript(filename);
|
||||
|
||||
@ -226,10 +246,14 @@ void Parallaction_ns::loadProgram(Animation *a, const char *filename) {
|
||||
|
||||
delete script;
|
||||
|
||||
debugC(1, kDebugParser, "loadProgram() done");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(animation) {
|
||||
DECLARE_INSTRUCTION_PARSER(animation) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(animation) ");
|
||||
|
||||
if (!scumm_stricmp(_tokens[1], _instParseCtxt.a->_label._text)) {
|
||||
_instParseCtxt.inst->_a = _instParseCtxt.a;
|
||||
} else {
|
||||
@ -238,36 +262,48 @@ DECLARE_INSTRUCTION_PARSER(animation) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(loop) {
|
||||
DECLARE_INSTRUCTION_PARSER(loop) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(loop) ");
|
||||
|
||||
parseRValue(_instParseCtxt.inst->_opB, _tokens[1]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(x) {
|
||||
DECLARE_INSTRUCTION_PARSER(x) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(x) ");
|
||||
|
||||
parseLValue(_instParseCtxt.inst->_opA, "X");
|
||||
parseRValue(_instParseCtxt.inst->_opB, _tokens[1]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(y) {
|
||||
DECLARE_INSTRUCTION_PARSER(y) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(y) ");
|
||||
|
||||
parseLValue(_instParseCtxt.inst->_opA, "Y");
|
||||
parseRValue(_instParseCtxt.inst->_opB, _tokens[1]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(z) {
|
||||
DECLARE_INSTRUCTION_PARSER(z) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(z) ");
|
||||
|
||||
parseLValue(_instParseCtxt.inst->_opA, "Z");
|
||||
parseRValue(_instParseCtxt.inst->_opB, _tokens[1]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(f) {
|
||||
DECLARE_INSTRUCTION_PARSER(f) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(f) ");
|
||||
|
||||
parseLValue(_instParseCtxt.inst->_opA, "F");
|
||||
parseRValue(_instParseCtxt.inst->_opB, _tokens[1]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(inc) {
|
||||
DECLARE_INSTRUCTION_PARSER(inc) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(inc) ");
|
||||
|
||||
parseLValue(_instParseCtxt.inst->_opA, _tokens[1]);
|
||||
parseRValue(_instParseCtxt.inst->_opB, _tokens[2]);
|
||||
|
||||
@ -277,7 +313,9 @@ DECLARE_INSTRUCTION_PARSER(inc) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(set) {
|
||||
DECLARE_INSTRUCTION_PARSER(set) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(set) ");
|
||||
|
||||
// WORKAROUND: At least one script (balzo.script) in Amiga versions didn't declare
|
||||
// local variables before using them, thus leading to crashes. The line launching the
|
||||
// script was commented out on Dos version. This workaround enables the engine
|
||||
@ -292,13 +330,17 @@ DECLARE_INSTRUCTION_PARSER(set) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(move) {
|
||||
DECLARE_INSTRUCTION_PARSER(move) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(move) ");
|
||||
|
||||
parseRValue(_instParseCtxt.inst->_opA, _tokens[1]);
|
||||
parseRValue(_instParseCtxt.inst->_opB, _tokens[2]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(put) {
|
||||
DECLARE_INSTRUCTION_PARSER(put) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(put) ");
|
||||
|
||||
if (!scumm_stricmp(_tokens[1], _instParseCtxt.a->_label._text)) {
|
||||
_instParseCtxt.inst->_a = _instParseCtxt.a;
|
||||
} else {
|
||||
@ -313,7 +355,9 @@ DECLARE_INSTRUCTION_PARSER(put) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(call) {
|
||||
DECLARE_INSTRUCTION_PARSER(call) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(call) ");
|
||||
|
||||
int index = _callableNames->lookup(_tokens[1]);
|
||||
if (index == Table::notFound)
|
||||
error("unknown callable '%s'", _tokens[1]);
|
||||
@ -321,17 +365,23 @@ DECLARE_INSTRUCTION_PARSER(call) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(sound) {
|
||||
DECLARE_INSTRUCTION_PARSER(sound) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(sound) ");
|
||||
|
||||
_instParseCtxt.inst->_z = findZone(_tokens[1]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(null) {
|
||||
DECLARE_INSTRUCTION_PARSER(null) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(null) ");
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(defLocal) {
|
||||
DECLARE_INSTRUCTION_PARSER(defLocal) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(defLocal) ");
|
||||
|
||||
int16 val = atoi(_tokens[2]);
|
||||
int16 index;
|
||||
|
||||
@ -347,7 +397,9 @@ DECLARE_INSTRUCTION_PARSER(defLocal) {
|
||||
_instParseCtxt.inst->_index = INST_SET;
|
||||
}
|
||||
|
||||
DECLARE_INSTRUCTION_PARSER(endscript) {
|
||||
DECLARE_INSTRUCTION_PARSER(endscript) {
|
||||
debugC(7, kDebugParser, "INSTRUCTION_PARSER(endscript) ");
|
||||
|
||||
_instParseCtxt.end = true;
|
||||
}
|
||||
|
||||
@ -419,7 +471,9 @@ void Parallaction_ns::parseLValue(ScriptVar &v, const char *str) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(flags) {
|
||||
DECLARE_COMMAND_PARSER(flags) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(flags) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
if (_globalTable->lookup(_tokens[1]) == Table::notFound) {
|
||||
@ -444,7 +498,9 @@ DECLARE_COMMAND_PARSER(flags) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(animation) {
|
||||
DECLARE_COMMAND_PARSER(animation) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(animation) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
_locParseCtxt.cmd->u._animation = findAnimation(_tokens[_locParseCtxt.nextToken]);
|
||||
@ -460,7 +516,9 @@ DECLARE_COMMAND_PARSER(animation) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(zone) {
|
||||
DECLARE_COMMAND_PARSER(zone) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(zone) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
_locParseCtxt.cmd->u._zone = findZone(_tokens[_locParseCtxt.nextToken]);
|
||||
@ -471,7 +529,9 @@ DECLARE_COMMAND_PARSER(zone) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(location) {
|
||||
DECLARE_COMMAND_PARSER(location) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(location) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
_locParseCtxt.cmd->u._string = (char*)malloc(strlen(_tokens[_locParseCtxt.nextToken])+1);
|
||||
@ -483,7 +543,9 @@ DECLARE_COMMAND_PARSER(location) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(drop) {
|
||||
DECLARE_COMMAND_PARSER(drop) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(drop) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
_locParseCtxt.cmd->u._object = 4 + _objectsNames->lookup(_tokens[_locParseCtxt.nextToken]);
|
||||
@ -494,7 +556,9 @@ DECLARE_COMMAND_PARSER(drop) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(call) {
|
||||
DECLARE_COMMAND_PARSER(call) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(call) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
_locParseCtxt.cmd->u._callable = _callableNames->lookup(_tokens[_locParseCtxt.nextToken]) - 1;
|
||||
@ -505,13 +569,17 @@ DECLARE_COMMAND_PARSER(call) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(simple) {
|
||||
DECLARE_COMMAND_PARSER(simple) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(simple) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
addCommand();
|
||||
}
|
||||
|
||||
|
||||
DECLARE_COMMAND_PARSER(move) {
|
||||
DECLARE_COMMAND_PARSER(move) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(move) ");
|
||||
|
||||
createCommand(_lookup);
|
||||
|
||||
_locParseCtxt.cmd->u._move.x = atoi(_tokens[_locParseCtxt.nextToken]);
|
||||
@ -523,11 +591,15 @@ DECLARE_COMMAND_PARSER(move) {
|
||||
addCommand();
|
||||
}
|
||||
|
||||
DECLARE_COMMAND_PARSER(invalid) {
|
||||
DECLARE_COMMAND_PARSER(invalid) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(invalid) ");
|
||||
|
||||
error("Can't parse unknown command '%s'", _tokens[0]);
|
||||
}
|
||||
|
||||
DECLARE_COMMAND_PARSER(endcommands) {
|
||||
DECLARE_COMMAND_PARSER(endcommands) {
|
||||
debugC(7, kDebugParser, "COMMAND_PARSER(endcommands) ");
|
||||
|
||||
popParserTables();
|
||||
|
||||
// temporary trick to handle dialogue commands
|
||||
@ -605,16 +677,18 @@ void Parallaction_ns::createCommand(uint id) {
|
||||
}
|
||||
|
||||
void Parallaction_ns::parseCommands(Script &script, CommandList& list) {
|
||||
debugC(5, kDebugParser, "parseCommands()");
|
||||
|
||||
_locParseCtxt.list = &list;
|
||||
_locParseCtxt.endcommands = false;
|
||||
_locParseCtxt.script = &script;
|
||||
|
||||
pushParserTables(&_commandParsers, _commandsNames);
|
||||
|
||||
}
|
||||
|
||||
Dialogue *Parallaction_ns::parseDialogue(Script &script) {
|
||||
// printf("parseDialogue()\n");
|
||||
debugC(7, kDebugParser, "parseDialogue()");
|
||||
|
||||
uint16 numQuestions = 0;
|
||||
|
||||
Dialogue *dialogue = new Dialogue;
|
||||
@ -724,6 +798,8 @@ Dialogue *Parallaction_ns::parseDialogue(Script &script) {
|
||||
}
|
||||
}
|
||||
|
||||
debugC(7, kDebugParser, "parseDialogue() done");
|
||||
|
||||
return dialogue;
|
||||
}
|
||||
|
||||
@ -747,16 +823,22 @@ char *Parallaction_ns::parseDialogueString(Script &script) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(invalid) {
|
||||
DECLARE_LOCATION_PARSER(invalid) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(invalid) ");
|
||||
|
||||
error("unknown keyword '%s' in location '%s'", _tokens[0], _locParseCtxt.filename);
|
||||
}
|
||||
|
||||
DECLARE_LOCATION_PARSER(endlocation) {
|
||||
DECLARE_LOCATION_PARSER(endlocation) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(endlocation) ");
|
||||
|
||||
_locParseCtxt.end = true;
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(location) {
|
||||
DECLARE_LOCATION_PARSER(location) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(location) ");
|
||||
|
||||
// The parameter for location is 'location.mask'.
|
||||
// If mask is not present, then it is assumed
|
||||
// that path & mask are encoded in the background
|
||||
@ -782,27 +864,37 @@ DECLARE_LOCATION_PARSER(location) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(disk) {
|
||||
DECLARE_LOCATION_PARSER(disk) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(disk) ");
|
||||
|
||||
_disk->selectArchive(_tokens[1]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(nodes) {
|
||||
DECLARE_LOCATION_PARSER(nodes) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(nodes) ");
|
||||
|
||||
parseWalkNodes(*_locParseCtxt.script, _location._walkNodes);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(zone) {
|
||||
DECLARE_LOCATION_PARSER(zone) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(zone) ");
|
||||
|
||||
parseZone(*_locParseCtxt.script, _zones, _tokens[1]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(animation) {
|
||||
DECLARE_LOCATION_PARSER(animation) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(animation) ");
|
||||
|
||||
parseAnimation(*_locParseCtxt.script, _animations, _tokens[1]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(localflags) {
|
||||
DECLARE_LOCATION_PARSER(localflags) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(localflags) ");
|
||||
|
||||
int _si = 1;
|
||||
while (_tokens[_si][0] != '\0') {
|
||||
_localFlagNames->addData(_tokens[_si]);
|
||||
@ -811,17 +903,23 @@ DECLARE_LOCATION_PARSER(localflags) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(commands) {
|
||||
DECLARE_LOCATION_PARSER(commands) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(commands) ");
|
||||
|
||||
parseCommands(*_locParseCtxt.script, _location._commands);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(acommands) {
|
||||
DECLARE_LOCATION_PARSER(acommands) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(acommands) ");
|
||||
|
||||
parseCommands(*_locParseCtxt.script, _location._aCommands);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(flags) {
|
||||
DECLARE_LOCATION_PARSER(flags) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(flags) ");
|
||||
|
||||
if ((_localFlags[_currentLocationIndex] & kFlagsVisited) == 0) {
|
||||
// only for 1st visit
|
||||
_localFlags[_currentLocationIndex] = 0;
|
||||
@ -839,17 +937,23 @@ DECLARE_LOCATION_PARSER(flags) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(comment) {
|
||||
DECLARE_LOCATION_PARSER(comment) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(comment) ");
|
||||
|
||||
_location._comment = parseComment(*_locParseCtxt.script);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(endcomment) {
|
||||
DECLARE_LOCATION_PARSER(endcomment) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(endcomment) ");
|
||||
|
||||
_location._endComment = parseComment(*_locParseCtxt.script);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(sound) {
|
||||
DECLARE_LOCATION_PARSER(sound) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(sound) ");
|
||||
|
||||
if (getPlatform() == Common::kPlatformAmiga) {
|
||||
strcpy(_locationSound, _tokens[1]);
|
||||
_hasLocationSound = true;
|
||||
@ -857,18 +961,22 @@ DECLARE_LOCATION_PARSER(sound) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_LOCATION_PARSER(music) {
|
||||
DECLARE_LOCATION_PARSER(music) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(music) ");
|
||||
|
||||
if (getPlatform() == Common::kPlatformAmiga)
|
||||
_soundMan->setMusicFile(_tokens[1]);
|
||||
}
|
||||
|
||||
DECLARE_LOCATION_PARSER(redundant) {
|
||||
DECLARE_LOCATION_PARSER(redundant) {
|
||||
debugC(7, kDebugParser, "LOCATION_PARSER(redundant) ");
|
||||
|
||||
warning("redundant '%s' line found in script '%s'", _tokens[0], _locParseCtxt.filename);
|
||||
}
|
||||
|
||||
|
||||
void Parallaction_ns::parseLocation(const char *filename) {
|
||||
debugC(5, kDebugLocation, "parseLocation('%s')", filename);
|
||||
debugC(1, kDebugParser, "parseLocation('%s')", filename);
|
||||
|
||||
allocateLocationSlot(filename);
|
||||
// printf("got location slot #%i for %s\n", _currentLocationIndex, filename);
|
||||
@ -907,12 +1015,13 @@ void Parallaction_ns::parseLocation(const char *filename) {
|
||||
loadProgram(*it, (*it)->_scriptName);
|
||||
}
|
||||
|
||||
debugC(5, kDebugLocation, "parseLocation('%s') done", filename);
|
||||
debugC(1, kDebugParser, "parseLocation('%s') done", filename);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
void Parallaction_ns::parseWalkNodes(Script& script, WalkNodeList &list) {
|
||||
debugC(5, kDebugParser, "parseWalkNodes()");
|
||||
|
||||
fillBuffers(script, true);
|
||||
while (scumm_stricmp(_tokens[0], "ENDNODES")) {
|
||||
@ -930,8 +1039,9 @@ void Parallaction_ns::parseWalkNodes(Script& script, WalkNodeList &list) {
|
||||
fillBuffers(script, true);
|
||||
}
|
||||
|
||||
return;
|
||||
debugC(5, kDebugParser, "parseWalkNodes() done");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
typedef OpcodeImpl<Parallaction_ns> OpcodeV1;
|
||||
@ -1082,15 +1192,21 @@ char *Parallaction_ns::parseComment(Script &script) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ZONE_PARSER(invalid) {
|
||||
DECLARE_ZONE_PARSER(invalid) {
|
||||
debugC(7, kDebugParser, "ZONE_PARSER(invalid) ");
|
||||
|
||||
error("unknown statement '%s' in zone %s", _tokens[0], _locParseCtxt.z->_label._text);
|
||||
}
|
||||
|
||||
DECLARE_ZONE_PARSER(endzone) {
|
||||
DECLARE_ZONE_PARSER(endzone) {
|
||||
debugC(7, kDebugParser, "ZONE_PARSER(endzone) ");
|
||||
|
||||
popParserTables();
|
||||
}
|
||||
|
||||
DECLARE_ZONE_PARSER(limits) {
|
||||
DECLARE_ZONE_PARSER(limits) {
|
||||
debugC(7, kDebugParser, "ZONE_PARSER(limits) ");
|
||||
|
||||
_locParseCtxt.z->_left = atoi(_tokens[1]);
|
||||
_locParseCtxt.z->_top = atoi(_tokens[2]);
|
||||
_locParseCtxt.z->_right = atoi(_tokens[3]);
|
||||
@ -1098,13 +1214,17 @@ DECLARE_ZONE_PARSER(limits) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ZONE_PARSER(moveto) {
|
||||
DECLARE_ZONE_PARSER(moveto) {
|
||||
debugC(7, kDebugParser, "ZONE_PARSER(moveto) ");
|
||||
|
||||
_locParseCtxt.z->_moveTo.x = atoi(_tokens[1]);
|
||||
_locParseCtxt.z->_moveTo.y = atoi(_tokens[2]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ZONE_PARSER(type) {
|
||||
DECLARE_ZONE_PARSER(type) {
|
||||
debugC(7, kDebugParser, "ZONE_PARSER(type) ");
|
||||
|
||||
if (_tokens[2][0] != '\0') {
|
||||
_locParseCtxt.z->_type = (4 + _objectsNames->lookup(_tokens[2])) << 16;
|
||||
}
|
||||
@ -1118,18 +1238,24 @@ DECLARE_ZONE_PARSER(type) {
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ZONE_PARSER(commands) {
|
||||
DECLARE_ZONE_PARSER(commands) {
|
||||
debugC(7, kDebugParser, "ZONE_PARSER(commands) ");
|
||||
|
||||
parseCommands(*_locParseCtxt.script, _locParseCtxt.z->_commands);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ZONE_PARSER(label) {
|
||||
DECLARE_ZONE_PARSER(label) {
|
||||
debugC(7, kDebugParser, "ZONE_PARSER(label) ");
|
||||
|
||||
// printf("label: %s", _tokens[1]);
|
||||
renderLabel(&_locParseCtxt.z->_label._cnv, _tokens[1]);
|
||||
}
|
||||
|
||||
|
||||
DECLARE_ZONE_PARSER(flags) {
|
||||
DECLARE_ZONE_PARSER(flags) {
|
||||
debugC(7, kDebugParser, "ZONE_PARSER(flags) ");
|
||||
|
||||
uint16 _si = 1;
|
||||
|
||||
do {
|
||||
@ -1140,6 +1266,7 @@ DECLARE_ZONE_PARSER(flags) {
|
||||
}
|
||||
|
||||
void Parallaction_ns::parseZone(Script &script, ZoneList &list, char *name) {
|
||||
debugC(5, kDebugParser, "parseZone(name: %s)", name);
|
||||
|
||||
if (findZone(name)) {
|
||||
while (scumm_stricmp(_tokens[0], "endzone")) {
|
||||
@ -1164,7 +1291,7 @@ void Parallaction_ns::parseZone(Script &script, ZoneList &list, char *name) {
|
||||
|
||||
|
||||
void Parallaction_ns::parseZoneTypeBlock(Script &script, Zone *z) {
|
||||
// printf("parseZoneTypeBlock()");
|
||||
debugC(7, kDebugParser, "parseZoneTypeBlock(name: %s, type: %x)", z->_label._text, z->_type);
|
||||
|
||||
TypeData *u = &z->u;
|
||||
|
||||
@ -1200,6 +1327,7 @@ void Parallaction_ns::parseZoneTypeBlock(Script &script, Zone *z) {
|
||||
// printf("type = %x", z->_type);
|
||||
|
||||
do {
|
||||
debugC(8, kDebugParser, "parseZoneTypeBlock(%s)", _tokens[0]);
|
||||
|
||||
switch (z->_type & 0xFFFF) {
|
||||
case kZoneExamine: // examine Zone init
|
||||
@ -1299,9 +1427,10 @@ void Parallaction_ns::parseZoneTypeBlock(Script &script, Zone *z) {
|
||||
fillBuffers(script, true);
|
||||
} while (scumm_stricmp(_tokens[0], "endzone"));
|
||||
|
||||
debugC(7, kDebugParser, "parseZoneTypeBlock() done");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
} // namespace Parallaction
|
||||
|
@ -281,14 +281,14 @@ void DosSoundMan::playLocationMusic(const char *location) {
|
||||
if (_musicData1 != 0) {
|
||||
playCharacterMusic(_vm->_characterName);
|
||||
_musicData1 = 0;
|
||||
debugC(2, kDebugLocation, "changeLocation: started character specific music");
|
||||
debugC(2, kDebugExec, "changeLocation: started character specific music");
|
||||
}
|
||||
|
||||
if (!scumm_stricmp(location, "night") || !scumm_stricmp(location, "intsushi")) {
|
||||
setMusicFile("nuts");
|
||||
playMusic();
|
||||
|
||||
debugC(2, kDebugLocation, "changeLocation: started music 'soft'");
|
||||
debugC(2, kDebugExec, "changeLocation: started music 'soft'");
|
||||
}
|
||||
|
||||
if (!scumm_stricmp(location, "museo") ||
|
||||
@ -302,7 +302,7 @@ void DosSoundMan::playLocationMusic(const char *location) {
|
||||
stopMusic();
|
||||
_musicData1 = 1;
|
||||
|
||||
debugC(2, kDebugLocation, "changeLocation: music stopped");
|
||||
debugC(2, kDebugExec, "changeLocation: music stopped");
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user