From 11e1e246cc4022f088a9e68bcd4d44f7d6574932 Mon Sep 17 00:00:00 2001 From: Travis Howell Date: Mon, 28 Mar 2005 10:02:22 +0000 Subject: findObject in HE72+ only checks object bounds findObject in He70/71 only needs additional polygon check svn-id: r17270 --- scumm/script_v7he.cpp | 65 +-------------------------------------------------- 1 file changed, 1 insertion(+), 64 deletions(-) (limited to 'scumm/script_v7he.cpp') diff --git a/scumm/script_v7he.cpp b/scumm/script_v7he.cpp index 488c204ec6..a2210ae399 100644 --- a/scumm/script_v7he.cpp +++ b/scumm/script_v7he.cpp @@ -242,7 +242,7 @@ void ScummEngine_v70he::setupOpcodes() { OPCODE(o6_verbOps), OPCODE(o6_getActorFromXY), /* A0 */ - OPCODE(o70_findObject), + OPCODE(o6_findObject), OPCODE(o6_pseudoRoom), OPCODE(o6_getActorElevation), OPCODE(o6_getVerbEntrypoint), @@ -425,62 +425,6 @@ void ScummEngine_v70he::appendSubstring(int dst, int src, int srcOffs, int len) writeArray(0, 0, dstOffs + i, 0); } -int ScummEngine_v70he::findObject(int x, int y, int num, int *args) { - int i, b, result; - int cond, cls, tmp; - byte a; - const int mask = 0xF; - - for (i = 1; i < _numLocalObjects; i++) { - result = 0; - if ((_objs[i].obj_nr < 1) || getClass(_objs[i].obj_nr, kObjectClassUntouchable)) - continue; - - // Check polygon bounds - if (_wiz.polygonDefined(_objs[i].obj_nr)) { - if (_wiz.polygonHit(_objs[i].obj_nr, x, y) != 0) - result = _objs[i].obj_nr; - else if (VAR_POLYGONS_ONLY != 0xFF && VAR(VAR_POLYGONS_ONLY)) - continue; - } - - if (!result) { - // Check object bounds - b = i; - do { - a = _objs[b].parentstate; - b = _objs[b].parent; - if (b == 0) { - if (_objs[i].x_pos <= x && _objs[i].width + _objs[i].x_pos > x && - _objs[i].y_pos <= y && _objs[i].height + _objs[i].y_pos > y) - result = _objs[i].obj_nr; - break; - } - } while ((_objs[b].state & mask) == a); - } - - if (result) { - if (!num) - return result; - - // Check object class - cond = 1; - tmp = num; - while (--tmp >= 0) { - cls = args[tmp]; - b = getClass(i, cls); - if ((cls & 0x80 && !b) || (!(cls & 0x80) && b)) - cond = 0; - } - - if (cond) - return result; - } - } - - return 0; -} - void ScummEngine_v70he::o70_startSound() { byte subOp = fetchScriptByte(); @@ -697,13 +641,6 @@ void ScummEngine_v70he::o70_resourceRoutines() { } } -void ScummEngine_v70he::o70_findObject() { - int y = pop(); - int x = pop(); - int r = findObject(x, y, 0, 0); - push(r); -} - void ScummEngine_v70he::o70_quitPauseRestart() { byte subOp = fetchScriptByte(); int par1; -- cgit v1.2.3