mirror of
https://github.com/scummvm/scummvm.git
synced 2026-06-20 05:45:29 +00:00
Oops, I didn't mean to check in those actor.cpp changes (thangs Kirben!)
svn-id: r14674
This commit is contained in:
+9
-21
@@ -148,12 +148,6 @@ void Actor::setActorWalkSpeed(uint newSpeedX, uint newSpeedY) {
|
||||
speedx = newSpeedX;
|
||||
speedy = newSpeedY;
|
||||
|
||||
if (newSpeedX == 10 && newSpeedY == 5) {
|
||||
speedx = 5;
|
||||
speedy = 5;
|
||||
}
|
||||
|
||||
|
||||
if (moving) {
|
||||
calcMovementFactor(walkdata.next);
|
||||
}
|
||||
@@ -177,15 +171,17 @@ int ScummEngine::getAngleFromPos(int x, int y) const {
|
||||
}
|
||||
|
||||
int Actor::calcMovementFactor(Common::Point next) {
|
||||
int deltaXFactor, deltaYFactor;
|
||||
Common::Point actorPos(_pos);
|
||||
int diffX, diffY;
|
||||
int32 deltaXFactor, deltaYFactor;
|
||||
|
||||
if (_pos == next)
|
||||
if (actorPos == next)
|
||||
return 0;
|
||||
|
||||
const int diffX = next.x - _pos.x;
|
||||
const int diffY = next.y - _pos.y;
|
||||
|
||||
diffX = next.x - actorPos.x;
|
||||
diffY = next.y - actorPos.y;
|
||||
deltaYFactor = speedy << 16;
|
||||
|
||||
if (diffY < 0)
|
||||
deltaYFactor = -deltaYFactor;
|
||||
|
||||
@@ -196,7 +192,7 @@ int Actor::calcMovementFactor(Common::Point next) {
|
||||
deltaYFactor = 0;
|
||||
}
|
||||
|
||||
if ((uint) abs(deltaXFactor >> 16) > speedx) {
|
||||
if ((uint) abs((int)(deltaXFactor >> 16)) > speedx) {
|
||||
deltaXFactor = speedx << 16;
|
||||
if (diffX < 0)
|
||||
deltaXFactor = -deltaXFactor;
|
||||
@@ -209,7 +205,7 @@ int Actor::calcMovementFactor(Common::Point next) {
|
||||
}
|
||||
}
|
||||
|
||||
walkdata.cur = _pos;
|
||||
walkdata.cur = actorPos;
|
||||
walkdata.next = next;
|
||||
walkdata.deltaXFactor = deltaXFactor;
|
||||
walkdata.deltaYFactor = deltaYFactor;
|
||||
@@ -383,11 +379,8 @@ int Actor::actorWalkStep() {
|
||||
distX = abs(walkdata.next.x - walkdata.cur.x);
|
||||
distY = abs(walkdata.next.y - walkdata.cur.y);
|
||||
|
||||
if (number == 6) printf("actorWalkStep: actor %d at (%d,%d); ", number, actorPos.x, actorPos.y);
|
||||
if (abs(actorPos.x - walkdata.cur.x) >= distX && abs(actorPos.y - walkdata.cur.y) >= distY) {
|
||||
moving &= ~MF_IN_LEG;
|
||||
if (number == 6) printf("MF_IN_LEG: walkdata.cur=(%d,%d), walkdata.next=(%d,%d)\n",
|
||||
walkdata.cur.x, walkdata.cur.y, walkdata.next.x, walkdata.next.y);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -407,11 +400,6 @@ if (number == 6) printf("MF_IN_LEG: walkdata.cur=(%d,%d), walkdata.next=(%d,%d)\
|
||||
actorPos.y = walkdata.next.y;
|
||||
}
|
||||
|
||||
if (number == 6) printf("new pos (%d,%d): delta=(%d,%d), delta>>8=(%d,%d)\n",
|
||||
actorPos.x, actorPos.y,
|
||||
walkdata.deltaXFactor, walkdata.deltaYFactor,
|
||||
(walkdata.deltaXFactor >> 8), (walkdata.deltaYFactor >> 8));
|
||||
|
||||
_pos = actorPos;
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user