diff options
Diffstat (limited to 'saga/actor.cpp')
-rw-r--r-- | saga/actor.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/saga/actor.cpp b/saga/actor.cpp index fdd0649e5c..d2fc6352ed 100644 --- a/saga/actor.cpp +++ b/saga/actor.cpp @@ -260,8 +260,6 @@ Actor::Actor(SagaEngine *vm) : _vm(vm) { obj->location.y = ITE_ObjectTable[i].y; obj->location.z = ITE_ObjectTable[i].z; obj->disabled = false; - - obj->spritelistRn = 0; } } else { @@ -857,8 +855,8 @@ void Actor::handleActions(int msec, bool setup) { while ((delta.u() == 0) && (delta.v() == 0)) { - if ((actor == _protagonist) && (_vm->_interface->_playfieldClicked)) { - _vm->_isoMap->screenPointToTileCoords(_vm->getMousePos(), pickLocation); + if ((actor == _protagonist) && (_vm->mouseButtonPressed())) { + _vm->_isoMap->screenPointToTileCoords(_vm->mousePos(), pickLocation); if (!actorWalkTo(_protagonist->id, pickLocation)) { break; @@ -1170,7 +1168,7 @@ void Actor::calcScreenPosition(CommonObjectData *commonObjectData) { } -uint16 Actor::hitTest(const Point &testPoint) { +uint16 Actor::hitTest(const Point &testPoint, bool skipProtagonist) { CommonObjectOrderList::iterator drawOrderIterator; CommonObjectDataPointer drawObject; int frameNumber; @@ -1178,6 +1176,9 @@ uint16 Actor::hitTest(const Point &testPoint) { createDrawOrderList(); for (drawOrderIterator = _drawOrderList.begin(); drawOrderIterator != _drawOrderList.end(); ++drawOrderIterator) { drawObject = drawOrderIterator.operator*(); + if (skipProtagonist && (drawObject == _protagonist)) { + continue; + } if (!getSpriteParams(drawObject, frameNumber, spriteList)) { continue; } |