diff options
author | johndoe123 | 2014-12-11 14:14:52 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2018-07-20 06:43:33 +0000 |
commit | 36ec0fafdb186ad55a0d6c08e38b96ef84fa60a8 (patch) | |
tree | 60c9d7eb972d42f7e6cdaf5d6cb169906f4e1c28 /engines/illusions/actor.cpp | |
parent | a078073e88c094c23e4eb51e5fb85e2cecc3ae9a (diff) | |
download | scummvm-rg350-36ec0fafdb186ad55a0d6c08e38b96ef84fa60a8.tar.gz scummvm-rg350-36ec0fafdb186ad55a0d6c08e38b96ef84fa60a8.tar.bz2 scummvm-rg350-36ec0fafdb186ad55a0d6c08e38b96ef84fa60a8.zip |
ILLUSIONS: Refactor the input system
Diffstat (limited to 'engines/illusions/actor.cpp')
-rw-r--r-- | engines/illusions/actor.cpp | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/engines/illusions/actor.cpp b/engines/illusions/actor.cpp index bf7b0cc2f5..0e4bae7495 100644 --- a/engines/illusions/actor.cpp +++ b/engines/illusions/actor.cpp @@ -258,7 +258,7 @@ void Control::appearActor() { _actor->_flags |= 0x2000; _actor->_flags |= 0x4000; } - _vm->_input->discardButtons(0xFFFF); + _vm->_input->discardAllEvents(); } } else { if (_objectId == 0x40004) { @@ -500,7 +500,6 @@ void Control::getCollisionRectAccurate(Common::Rect &collisionRect) { if (_actor) { if (_actor->_scale != 100) { - // scaledValue = value * scale div 100 collisionRect.left = collisionRect.left * _actor->_scale / 100; collisionRect.top = collisionRect.top * _actor->_scale / 100; collisionRect.right = collisionRect.right * _actor->_scale / 100; @@ -520,7 +519,6 @@ void Control::getCollisionRect(Common::Rect &collisionRect) { collisionRect = Common::Rect(_unkPt.x, _unkPt.y, _pt.x, _pt.y); if (_actor) { if (_actor->_scale != 100) { - // scaledValue = value * scale div 100 collisionRect.left = collisionRect.left * _actor->_scale / 100; collisionRect.top = collisionRect.top * _actor->_scale / 100; collisionRect.right = collisionRect.right * _actor->_scale / 100; @@ -762,19 +760,12 @@ void Control::startMoveActor(uint32 sequenceId, Common::Point destPt, uint32 cal _vm->notifyThreadId(_actor->_notifyId3C); _actor->_notifyId3C = callerThreadId2; _actor->_pathPointIndex = 0; - - if (_vm->getGameId() == kGameIdBBDOU) { - _vm->_input->discardButtons(0x10); - } else if (_vm->getGameId() == kGameIdDuckman) { - _vm->_input->discardButtons(0x20); - } - + _vm->_input->discardEvent(kEventSkip); } } PointArray *Control::createPath(Common::Point destPt) { - // TODO Implement actual pathfinding PointArray *walkPoints = (_actor->_flags & 2) ? _actor->_pathWalkPoints->_points : 0; PathLines *walkRects = (_actor->_flags & 0x10) ? _actor->_pathWalkRects->_rects : 0; PathFinder pathFinder; @@ -791,12 +782,12 @@ void Control::updateActorMovement(uint32 deltaTime) { // TODO Move while loop to caller static const int16 kAngleTbl[] = {60, 0, 120, 0, 60, 0, 120, 0}; - bool again = false; + bool fastWalked = false; while (1) { - if (!again && _vm->testMainActorFastWalk(this)) { - again = true; + if (!fastWalked && _vm->testMainActorFastWalk(this)) { + fastWalked = true; disappearActor(); _actor->_flags |= 0x8000; _actor->_seqCodeIp = 0; @@ -921,12 +912,12 @@ void Control::updateActorMovement(uint32 deltaTime) { _vm->notifyThreadId(_actor->_notifyId3C); _actor->_walkCallerThreadId1 = 0; } - again = false; + fastWalked = false; } _actor->_pathFlag50 = false; } - if (!again) + if (!fastWalked) break; } |