[Scummvm-cvs-logs] SF.net SVN: scummvm:[52446] scummvm/trunk/engines/sci/engine/kmovement.cpp
m_kiewitz at users.sourceforge.net
m_kiewitz at users.sourceforge.net
Sun Aug 29 23:11:36 CEST 2010
Revision: 52446
http://scummvm.svn.sourceforge.net/scummvm/?rev=52446&view=rev
Author: m_kiewitz
Date: 2010-08-29 21:11:36 +0000 (Sun, 29 Aug 2010)
Log Message:
-----------
SCI: cleanup kDoBresen (no real code change)
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/kmovement.cpp
Modified: scummvm/trunk/engines/sci/engine/kmovement.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kmovement.cpp 2010-08-29 20:26:30 UTC (rev 52445)
+++ scummvm/trunk/engines/sci/engine/kmovement.cpp 2010-08-29 21:11:36 UTC (rev 52446)
@@ -240,28 +240,27 @@
int x = (int16)readSelectorValue(segMan, client, SELECTOR(x));
int y = (int16)readSelectorValue(segMan, client, SELECTOR(y));
- int oldx, oldy, destx, desty, dx, dy, bdi, bi1, bi2, movcnt, bdelta, axis;
uint16 signal = readSelectorValue(segMan, client, SELECTOR(signal));
- int completed = 0;
- int max_movcnt = readSelectorValue(segMan, client, SELECTOR(moveSpeed));
+ int16 max_movcnt = (int16)readSelectorValue(segMan, client, SELECTOR(moveSpeed));
+ int16 old_x = x;
+ int16 old_y = y;
+ int16 dest_x = (int16)readSelectorValue(segMan, mover, SELECTOR(x));
+ int16 dest_y = (int16)readSelectorValue(segMan, mover, SELECTOR(y));
+ int16 dx = (int16)readSelectorValue(segMan, mover, SELECTOR(dx));
+ int16 dy = (int16)readSelectorValue(segMan, mover, SELECTOR(dy));
+ int16 bdi = (int16)readSelectorValue(segMan, mover, SELECTOR(b_di));
+ int16 bi1 = (int16)readSelectorValue(segMan, mover, SELECTOR(b_i1));
+ int16 bi2 = (int16)readSelectorValue(segMan, mover, SELECTOR(b_i2));
+ int16 movcnt = (int16)readSelectorValue(segMan, mover, SELECTOR(b_movCnt));
+ int16 bdelta = (int16)readSelectorValue(segMan, mover, SELECTOR(b_incr));
+ int16 axis = (int16)readSelectorValue(segMan, mover, SELECTOR(b_xAxis));
+ bool completed = false;
- if (getSciVersion() > SCI_VERSION_01)
+ if (getSciVersion() > SCI_VERSION_01) {
signal &= ~kSignalHitObstacle;
+ writeSelector(segMan, client, SELECTOR(signal), make_reg(0, signal));
+ }
- writeSelector(segMan, client, SELECTOR(signal), make_reg(0, signal)); // This is a NOP for SCI0
- oldx = x;
- oldy = y;
- destx = (int16)readSelectorValue(segMan, mover, SELECTOR(x));
- desty = (int16)readSelectorValue(segMan, mover, SELECTOR(y));
- dx = (int16)readSelectorValue(segMan, mover, SELECTOR(dx));
- dy = (int16)readSelectorValue(segMan, mover, SELECTOR(dy));
- bdi = (int16)readSelectorValue(segMan, mover, SELECTOR(b_di));
- bi1 = (int16)readSelectorValue(segMan, mover, SELECTOR(b_i1));
- bi2 = (int16)readSelectorValue(segMan, mover, SELECTOR(b_i2));
- movcnt = readSelectorValue(segMan, mover, SELECTOR(b_movCnt));
- bdelta = (int16)readSelectorValue(segMan, mover, SELECTOR(b_incr));
- axis = (int16)readSelectorValue(segMan, mover, SELECTOR(b_xAxis));
-
if ((getSciVersion() >= SCI_VERSION_1_LATE)) {
// Mixed-Up Fairy Tales has no xLast/yLast selectors
if (SELECTOR(xLast) != -1) {
@@ -277,7 +276,7 @@
if (max_movcnt > movcnt) {
++movcnt;
writeSelectorValue(segMan, mover, SELECTOR(b_movCnt), movcnt); // Needed for HQ1/Ogre?
- return NULL_REG;
+ return NULL_REG; // why do we exit here?
} else {
movcnt = 0;
writeSelectorValue(segMan, mover, SELECTOR(b_movCnt), movcnt); // Needed for HQ1/Ogre?
@@ -298,20 +297,20 @@
x += dx;
y += dy;
- if ((MOVING_ON_X && (((x < destx) && (oldx >= destx)) // Moving left, exceeded?
- || ((x > destx) && (oldx <= destx)) // Moving right, exceeded?
- || ((x == destx) && (ABS(dx) > ABS(dy))) // Moving fast, reached?
+ if ((MOVING_ON_X && (((x < dest_x) && (old_x >= dest_x)) // Moving left, exceeded?
+ || ((x > dest_x) && (old_x <= dest_x)) // Moving right, exceeded?
+ || ((x == dest_x) && (ABS(dx) > ABS(dy))) // Moving fast, reached?
// Treat this last case specially- when doing sub-pixel movements
// on the other axis, we could still be far away from the destination
- )) || (MOVING_ON_Y && (((y < desty) && (oldy >= desty)) /* Moving upwards, exceeded? */
- || ((y > desty) && (oldy <= desty)) /* Moving downwards, exceeded? */
- || ((y == desty) && (ABS(dy) >= ABS(dx))) /* Moving fast, reached? */
+ )) || (MOVING_ON_Y && (((y < dest_y) && (old_y >= dest_y)) /* Moving upwards, exceeded? */
+ || ((y > dest_y) && (old_y <= dest_y)) /* Moving downwards, exceeded? */
+ || ((y == dest_y) && (ABS(dy) >= ABS(dx))) /* Moving fast, reached? */
))) {
// Whew... in short: If we have reached or passed our target position
- x = destx;
- y = desty;
- completed = 1;
+ x = dest_x;
+ y = dest_y;
+ completed = true;
debugC(2, kDebugLevelBresen, "Finished mover %04x:%04x", PRINT_REG(mover));
}
@@ -341,8 +340,8 @@
if (collision) {
signal = readSelectorValue(segMan, client, SELECTOR(signal));
- writeSelectorValue(segMan, client, SELECTOR(x), oldx);
- writeSelectorValue(segMan, client, SELECTOR(y), oldy);
+ writeSelectorValue(segMan, client, SELECTOR(x), old_x);
+ writeSelectorValue(segMan, client, SELECTOR(y), old_y);
writeSelectorValue(segMan, client, SELECTOR(signal), (signal | kSignalHitObstacle));
debugC(2, kDebugLevelBresen, "Finished mover %04x:%04x by collision", PRINT_REG(mover));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list