* cleanup

* moved find routines from Parallaction to Location

svn-id: r34940
This commit is contained in:
Nicola Mettifogo 2008-11-08 15:02:19 +00:00
parent 5581030972
commit 3eeece6a25
5 changed files with 33 additions and 36 deletions

View File

@ -188,21 +188,21 @@ void Parallaction_ns::_c_moveSarc(void *parm) {
_introSarcData2 = 0;
if (!_moveSarcZones[0]) {
_moveSarcZones[0] = findZone("sarc1");
_moveSarcZones[1] = findZone("sarc2");
_moveSarcZones[2] = findZone("sarc3");
_moveSarcZones[3] = findZone("sarc4");
_moveSarcZones[4] = findZone("sarc5");
_moveSarcZones[0] = _location.findZone("sarc1");
_moveSarcZones[1] = _location.findZone("sarc2");
_moveSarcZones[2] = _location.findZone("sarc3");
_moveSarcZones[3] = _location.findZone("sarc4");
_moveSarcZones[4] = _location.findZone("sarc5");
_moveSarcExaZones[0] = findZone("sarc1exa");
_moveSarcExaZones[1] = findZone("sarc2exa");
_moveSarcExaZones[2] = findZone("sarc3exa");
_moveSarcExaZones[3] = findZone("sarc4exa");
_moveSarcExaZones[4] = findZone("sarc5exa");
_moveSarcExaZones[0] = _location.findZone("sarc1exa");
_moveSarcExaZones[1] = _location.findZone("sarc2exa");
_moveSarcExaZones[2] = _location.findZone("sarc3exa");
_moveSarcExaZones[3] = _location.findZone("sarc4exa");
_moveSarcExaZones[4] = _location.findZone("sarc5exa");
}
a = findAnimation("sposta");
a = _location.findAnimation("sposta");
_moveSarcZone1 = *(ZonePtr*)parm;
@ -239,7 +239,7 @@ void Parallaction_ns::_c_moveSarc(void *parm) {
_moveSarcZones[3]->getX() == 134 &&
_moveSarcZones[4]->getX() == 167) {
a = findAnimation("finito");
a = _location.findAnimation("finito");
a->_flags |= (kFlagsActive | kFlagsActing);
setLocationFlags(0x20); // GROSS HACK: activates 'finito' flag in dinoit_museo.loc
@ -403,7 +403,7 @@ void Parallaction_ns::_c_closeMusic(void*) {
*/
void Parallaction_ns::_c_startIntro(void *parm) {
_rightHandAnim = findAnimation("righthand");
_rightHandAnim = _location.findAnimation("righthand");
if (getPlatform() == Common::kPlatformPC) {
_soundMan->setMusicFile("intro");

View File

@ -189,9 +189,9 @@ void Parallaction::resumeJobs() {
return;
}
AnimationPtr Parallaction::findAnimation(const char *name) {
AnimationPtr Location::findAnimation(const char *name) {
for (AnimationList::iterator it = _location._animations.begin(); it != _location._animations.end(); it++)
for (AnimationList::iterator it = _animations.begin(); it != _animations.end(); it++)
if (!scumm_stricmp((*it)->_name, name)) return *it;
return nullAnimationPtr;
@ -808,12 +808,10 @@ ZonePtr Parallaction::hitZone(uint32 type, uint16 x, uint16 y) {
}
ZonePtr Parallaction::findZone(const char *name) {
for (ZoneList::iterator it = _location._zones.begin(); it != _location._zones.end(); it++) {
ZonePtr Location::findZone(const char *name) {
for (ZoneList::iterator it = _zones.begin(); it != _zones.end(); it++) {
if (!scumm_stricmp((*it)->_name, name)) return *it;
}
return findAnimation(name);
}

View File

@ -159,6 +159,9 @@ public:
Location();
~Location();
AnimationPtr findAnimation(const char *name);
ZonePtr findZone(const char *name);
void cleanup(bool removeAll);
};
@ -325,15 +328,11 @@ public:
bool checkSpecialZoneBox(ZonePtr z, uint32 type, uint x, uint y);
bool checkZoneBox(ZonePtr z, uint32 type, uint x, uint y);
bool checkLinkedAnimBox(ZonePtr z, uint32 type, uint x, uint y);
ZonePtr findZone(const char *name);
ZonePtr hitZone(uint32 type, uint16 x, uint16 y);
void runZone(ZonePtr z);
void freeZones(bool removeAll);
bool pickupItem(ZonePtr z);
void updateDoor(ZonePtr z, bool close);
void showZone(ZonePtr z, bool visible);
AnimationPtr findAnimation(const char *name);
void freeAnimations();
void setBackground(const char *background, const char *mask, const char *path);
void freeBackground();
void highlightInventoryItem(ItemPosition pos);

View File

@ -717,7 +717,7 @@ DECLARE_ZONE_PARSER(limits) {
if (isalpha(_tokens[1][1])) {
ctxt.z->_flags |= kFlagsAnimLinked;
ctxt.z->_linkedAnim = _vm->findAnimation(_tokens[1]);
ctxt.z->_linkedAnim = _vm->_location.findAnimation(_tokens[1]);
ctxt.z->_linkedName = strdup(_tokens[1]);
} else {
ctxt.z->setBox(atoi(_tokens[1]), atoi(_tokens[2]), atoi(_tokens[3]), atoi(_tokens[4]));
@ -912,7 +912,7 @@ DECLARE_ANIM_PARSER(endanimation) {
DECLARE_INSTRUCTION_PARSER(zone) {
debugC(7, kDebugParser, "INSTRUCTION_PARSER(zone) ");
ctxt.inst->_z = _vm->findZone(_tokens[1]);
ctxt.inst->_z = _vm->_location.findZone(_tokens[1]);
ctxt.inst->_index = _parser->_lookup;
}
@ -1029,7 +1029,7 @@ void ProgramParser_br::parseRValue(ScriptVar &v, const char *str) {
AnimationPtr a;
if (str[1] == '.') {
a = _vm->findAnimation(&str[2]);
a = _vm->_location.findAnimation(&str[2]);
if (!a) {
error("unknown animation '%s' in script", &str[2]);
}

View File

@ -306,11 +306,11 @@ void ProgramParser_ns::parseInstruction() {
if (_tokens[0][1] == '.') {
_tokens[0][1] = '\0';
ctxt.a = _vm->findAnimation(&_tokens[0][2]);
ctxt.a = _vm->_location.findAnimation(&_tokens[0][2]);
} else
if (_tokens[1][1] == '.') {
_tokens[1][1] = '\0';
ctxt.a = _vm->findAnimation(&_tokens[1][2]);
ctxt.a = _vm->_location.findAnimation(&_tokens[1][2]);
} else
ctxt.a = _program->_anim;
@ -369,7 +369,7 @@ DECLARE_INSTRUCTION_PARSER(animation) {
if (!scumm_stricmp(_tokens[1], ctxt.a->_name)) {
ctxt.inst->_a = ctxt.a;
} else {
ctxt.inst->_a = _vm->findAnimation(_tokens[1]);
ctxt.inst->_a = _vm->_location.findAnimation(_tokens[1]);
}
ctxt.inst->_index = _parser->_lookup;
@ -466,7 +466,7 @@ DECLARE_INSTRUCTION_PARSER(put) {
if (!scumm_stricmp(_tokens[1], ctxt.a->_name)) {
ctxt.inst->_a = ctxt.a;
} else {
ctxt.inst->_a = _vm->findAnimation(_tokens[1]);
ctxt.inst->_a = _vm->_location.findAnimation(_tokens[1]);
}
parseRValue(ctxt.inst->_opA, _tokens[2]);
@ -492,7 +492,7 @@ DECLARE_INSTRUCTION_PARSER(call) {
DECLARE_INSTRUCTION_PARSER(sound) {
debugC(7, kDebugParser, "INSTRUCTION_PARSER(sound) ");
ctxt.inst->_z = _vm->findZone(_tokens[1]);
ctxt.inst->_z = _vm->_location.findZone(_tokens[1]);
ctxt.inst->_index = _parser->_lookup;
}
@ -545,7 +545,7 @@ void ProgramParser_ns::parseRValue(ScriptVar &v, const char *str) {
AnimationPtr a;
if (str[1] == '.') {
a = _vm->findAnimation(&str[2]);
a = _vm->_location.findAnimation(&str[2]);
} else {
a = ctxt.a;
}
@ -575,7 +575,7 @@ void ProgramParser_ns::parseLValue(ScriptVar &v, const char *str) {
AnimationPtr a;
if (str[1] == '.') {
a = _vm->findAnimation(&str[2]);
a = _vm->_location.findAnimation(&str[2]);
} else {
a = ctxt.a;
}
@ -628,7 +628,7 @@ DECLARE_COMMAND_PARSER(zone) {
createCommand(_parser->_lookup);
ctxt.cmd->u._zone = _vm->findZone(_tokens[ctxt.nextToken]);
ctxt.cmd->u._zone = _vm->_location.findZone(_tokens[ctxt.nextToken]);
if (!ctxt.cmd->u._zone) {
saveCommandForward(_tokens[ctxt.nextToken], ctxt.cmd);
}
@ -794,7 +794,7 @@ void LocationParser_ns::saveCommandForward(const char *name, CommandPtr cmd) {
void LocationParser_ns::resolveCommandForwards() {
for (uint i = 0; i < _numForwardedCommands; i++) {
_forwardedCommands[i].cmd->u._zone = _vm->findZone(_forwardedCommands[i].name);
_forwardedCommands[i].cmd->u._zone = _vm->_location.findZone(_forwardedCommands[i].name);
if (_forwardedCommands[i].cmd->u._zone == 0) {
warning("Cannot find zone '%s' into current location script. This may be a bug in the original scripts.\n", _forwardedCommands[i].name);
}
@ -1367,7 +1367,7 @@ DECLARE_ZONE_PARSER(flags) {
void LocationParser_ns::parseZone(ZoneList &list, char *name) {
debugC(5, kDebugParser, "parseZone(name: %s)", name);
if (_vm->findZone(name)) {
if (_vm->_location.findZone(name)) {
_script->skip("endzone");
return;
}