aboutsummaryrefslogtreecommitdiff
path: root/engines/fullpipe/statics.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/fullpipe/statics.cpp')
-rw-r--r--engines/fullpipe/statics.cpp219
1 files changed, 123 insertions, 96 deletions
diff --git a/engines/fullpipe/statics.cpp b/engines/fullpipe/statics.cpp
index 8ee3b14d0c..ece4f43e9f 100644
--- a/engines/fullpipe/statics.cpp
+++ b/engines/fullpipe/statics.cpp
@@ -47,7 +47,7 @@ StepArray::~StepArray() {
for (int i = 0; i < _pointsCount; i++)
delete _points[i];
- delete _points;
+ free(_points);
_points = 0;
}
@@ -69,7 +69,8 @@ Common::Point *StepArray::getCurrPoint(Common::Point *point) {
point->x = 0;
point->y = 0;
} else {
- point = _points[_currPointIndex];
+ point->x = _points[_currPointIndex]->x;
+ point->y = _points[_currPointIndex]->y;
}
return point;
}
@@ -96,7 +97,7 @@ Common::Point *StepArray::getPoint(Common::Point *point, int index, int offset)
}
bool StepArray::gotoNextPoint() {
- if (_currPointIndex < _maxPointIndex) {
+ if (_currPointIndex < _maxPointIndex - 1) {
_currPointIndex++;
return true;
} else {
@@ -107,20 +108,22 @@ bool StepArray::gotoNextPoint() {
void StepArray::insertPoints(Common::Point **points, int pointsCount) {
if (_currPointIndex + pointsCount >= _pointsCount) {
- _points = (Common::Point **)realloc(_points, sizeof(Common::Point *) * (_currPointIndex + pointsCount));
+ _points = (Common::Point **)realloc(_points, sizeof(Common::Point *) * (_pointsCount + pointsCount));
if (!_points) {
error("Out of memory at StepArray::insertPoints()");
}
+
+ for(int i = 0; i < pointsCount; i++)
+ _points[_pointsCount + i] = new Common::Point;
+
+ _pointsCount += pointsCount;
}
_maxPointIndex = _currPointIndex + pointsCount;
- for (int i = 0; i < pointsCount; i++) {
- _points[_currPointIndex + i] = new Common::Point;
-
+ for (int i = 0; i < pointsCount; i++)
*_points[_currPointIndex + i] = *points[i];
- }
}
StaticANIObject::StaticANIObject() {
@@ -134,8 +137,8 @@ StaticANIObject::StaticANIObject() {
_movement = 0;
_statics = 0;
_flags = 0;
- _callback1 = 0;
- _callback2 = 0;
+ _callback1 = 0; // Really NULL
+ _callback2 = 0; // Really NULL
_sceneId = -1;
_someDynamicPhaseIndex = -1;
@@ -156,7 +159,7 @@ StaticANIObject::~StaticANIObject() {
_movements.clear();
- g_fp->_mgm->clear();
+ g_fp->_aniHandler->detachAllObjects();
}
StaticANIObject::StaticANIObject(StaticANIObject *src) : GameObject(src) {
@@ -188,9 +191,9 @@ StaticANIObject::StaticANIObject(StaticANIObject *src) : GameObject(src) {
Movement *newmov;
if (src->_movements[i]->_currMovement) {
- // WORKAROUND: Original uses weird construction here:
- // new Movement(getMovementById(src->getMovementIdById(mov->_id)), this);
- newmov = new Movement(src->getMovementById(src->getMovementIdById(src->_movements[i]->_id)), this);
+ // This is weird code. Logically it should be
+ // newmov = new Movement(src->getMovementById(src->getMovementIdById(src->_movements[i]->_id)), this);
+ newmov = new Movement(getMovementById(src->getMovementIdById(src->_movements[i]->_id)), this);
newmov->_id = src->_movements[i]->_id;
} else {
newmov = new Movement(src->_movements[i], 0, -1, this);
@@ -201,7 +204,7 @@ StaticANIObject::StaticANIObject(StaticANIObject *src) : GameObject(src) {
}
bool StaticANIObject::load(MfcArchive &file) {
- debug(5, "StaticANIObject::load()");
+ debugC(5, kDebugLoading, "StaticANIObject::load()");
GameObject::load(file);
@@ -215,7 +218,7 @@ bool StaticANIObject::load(MfcArchive &file) {
}
count = file.readUint16LE();
- debug(7, "Movements: %d", count);
+ debugC(7, kDebugLoading, "Movements: %d", count);
for (int i = 0; i < count; i++) {
int movNum = file.readUint16LE();
@@ -394,6 +397,9 @@ void StaticANIObject::startMQIfIdle(int qId, int flag) {
}
bool StaticANIObject::isIdle() {
+ if (_objtype != kObjTypeStaticANIObject)
+ return true;
+
if (_messageQueueId) {
MessageQueue *m = g_fp->_globalMessageQueueList->getMessageQueueById(_messageQueueId);
@@ -434,7 +440,7 @@ int StaticANIObject::getMovementIdById(int itemId) {
if (mov->_currMovement) {
if (mov->_id == itemId)
- return mov->_id;
+ return mov->_currMovement->_id;
if (mov->_currMovement->_id == itemId)
return mov->_id;
@@ -452,7 +458,11 @@ Movement *StaticANIObject::getMovementByName(char *name) {
return 0;
}
-bool StaticANIObject::getPixelAtPos(int x, int y, int *pixel) {
+bool StaticANIObject::isPixelHitAtPos(int x, int y) {
+ return getPixelAtPos(x, y, 0, true);
+}
+
+bool StaticANIObject::getPixelAtPos(int x, int y, uint32 *pixel, bool hitOnly) {
bool res = false;
Picture *pic;
@@ -498,6 +508,10 @@ bool StaticANIObject::getPixelAtPos(int x, int y, int *pixel) {
y = pic->_y;
pic->_x = 0;
pic->_y = 0;
+
+ if (hitOnly)
+ return pic->isPixelHitAtPos(xtarget, ytarget);
+
if (pic->isPixelHitAtPos(xtarget, ytarget)) {
*pixel = pic->getPixelAtPos(xtarget, ytarget);
@@ -512,7 +526,7 @@ bool StaticANIObject::getPixelAtPos(int x, int y, int *pixel) {
}
void Movement::draw(bool flipFlag, int angle) {
- debug(3, "Movement::draw(%d, %d)", flipFlag, angle);
+ debugC(3, kDebugDrawing, "Movement::draw(%d, %d)", flipFlag, angle);
Common::Point point;
@@ -524,11 +538,6 @@ void Movement::draw(bool flipFlag, int angle) {
if (_currDynamicPhase->getPaletteData())
g_fp->_globalPalette = _currDynamicPhase->getPaletteData();
- if (_currDynamicPhase->getAlpha() < 0xFF) {
- warning("Movement::draw: alpha < 0xff: %d", _currDynamicPhase->getAlpha());
- //vrtSetAlphaBlendMode(g_vrtDrawHandle, 1, _currDynamicPhase->getAlpha());
- }
-
Bitmap *bmp;
if (_currMovement) {
bmp = _currDynamicPhase->getPixelData()->reverseImage();
@@ -538,7 +547,7 @@ void Movement::draw(bool flipFlag, int angle) {
if (flipFlag) {
bmp->flipVertical()->drawShaded(1, x, y + 30 + _currDynamicPhase->_rect->bottom, _currDynamicPhase->_paletteData, _currDynamicPhase->_alpha);
- } if (angle) {
+ } else if (angle) {
bmp->drawRotated(x, y, angle, _currDynamicPhase->_paletteData, _currDynamicPhase->_alpha);
} else {
bmp->putDib(x, y, (int32 *)_currDynamicPhase->_paletteData, _currDynamicPhase->_alpha);
@@ -594,7 +603,7 @@ void StaticANIObject::draw() {
Common::Point point;
Common::Rect rect;
- debug(6, "StaticANIObject::draw() (%s) [%d] [%d, %d]", transCyrillic((byte *)_objectName), _id, _ox, _oy);
+ debugC(6, kDebugDrawing, "StaticANIObject::draw() (%s) [%d] [%d, %d]", transCyrillic((byte *)_objectName), _id, _ox, _oy);
if (_shadowsOn && g_fp->_currentScene && g_fp->_currentScene->_shadows
&& (getCurrDimensions(point)->x != 1 || getCurrDimensions(point)->y != 1)) {
@@ -654,7 +663,7 @@ void StaticANIObject::draw() {
}
void StaticANIObject::draw2() {
- debug(6, "StatciANIObject::draw2(): id: (%s) %d [%d, %d]", transCyrillic((byte *)_objectName), _id, _ox, _oy);
+ debugC(6, kDebugDrawing, "StatciANIObject::draw2(): id: (%s) %d [%d, %d]", transCyrillic((byte *)_objectName), _id, _ox, _oy);
if ((_flags & 4) && (_flags & 0x10)) {
if (_movement) {
@@ -779,7 +788,7 @@ Common::Point *StaticANIObject::getSomeXY(Common::Point &p) {
void StaticANIObject::update(int counterdiff) {
int mqid;
- debug(6, "StaticANIObject::update() (%s) [%d] [%d, %d] fl: %x", transCyrillic((byte *)_objectName), _id, _ox, _oy, _flags);
+ debugC(6, kDebugAnimation, "StaticANIObject::update() (%s) [%d] [%d, %d] fl: %x", transCyrillic((byte *)_objectName), _id, _ox, _oy, _flags);
if (_flags & 2) {
_messageNum--;
@@ -821,7 +830,7 @@ void StaticANIObject::update(int counterdiff) {
newex->_excFlags |= 2;
if (newex->_messageKind == 17) {
newex->_parentId = _id;
- newex->_keyCode = _okeyCode;
+ newex->_param = _odelay;
}
newex->sendMessage();
@@ -830,10 +839,10 @@ void StaticANIObject::update(int counterdiff) {
}
}
- if (dyn->_initialCountdown != dyn->_countdown || dyn->_field_68 == 0) {
+ if (dyn->_initialCountdown == dyn->_countdown && dyn->_field_68 != 0) {
newex = new ExCommand(_id, 17, dyn->_field_68, 0, 0, 0, 1, 0, 0, 0);
newex->_excFlags = 2;
- newex->_keyCode = _okeyCode;
+ newex->_param = _odelay;
newex->sendMessage();
if (!_movement)
@@ -856,15 +865,15 @@ void StaticANIObject::update(int counterdiff) {
}
}
}
- if (!_movement)
- return;
-
- _stepArray.getCurrPoint(&point);
- setOXY(point.x + _ox, point.y + _oy);
- _stepArray.gotoNextPoint();
- if (_someDynamicPhaseIndex == _movement->_currDynamicPhaseIndex)
- adjustSomeXY();
}
+ if (!_movement)
+ return;
+
+ _stepArray.getCurrPoint(&point);
+ setOXY(point.x + _ox, point.y + _oy);
+ _stepArray.gotoNextPoint();
+ if (_someDynamicPhaseIndex == _movement->_currDynamicPhaseIndex)
+ adjustSomeXY();
} else if (_flags & 0x20) {
_flags ^= 0x20;
_flags |= 1;
@@ -951,7 +960,7 @@ Common::Point *StaticANIObject::calcNextStep(Common::Point *pRes) {
}
void StaticANIObject::stopAnim_maybe() {
- debug(6, "StaticANIObject::stopAnim_maybe()");
+ debugC(2, kDebugAnimation, "StaticANIObject::stopAnim_maybe()");
if (!(_flags & 1))
return;
@@ -966,7 +975,10 @@ void StaticANIObject::stopAnim_maybe() {
setOXY(_movement->_ox, _movement->_oy);
if (_flags & 0x40) {
- if (!_movement->_currMovement && !_movement->_currDynamicPhaseIndex) {
+ if (!_movement->_currMovement) {
+ if (_movement->_currDynamicPhaseIndex)
+ goto L11;
+L8:
_statics = _movement->_staticsObj1;
_movement->getCurrDynamicPhaseXY(point);
_ox -= point.x;
@@ -984,13 +996,14 @@ void StaticANIObject::stopAnim_maybe() {
_ox += point.x;
_oy += point.y;
}
- } else {
- _statics = _movement->_staticsObj2;
+ goto L12;
}
- } else {
- _statics = _movement->_staticsObj2;
+ if (!_movement->_currDynamicPhaseIndex)
+ goto L8;
}
-
+L11:
+ _statics = _movement->_staticsObj2;
+L12:
_statics->getSomeXY(point);
_statics->_x = _ox - point.x;
@@ -999,7 +1012,7 @@ void StaticANIObject::stopAnim_maybe() {
_movement = 0;
ExCommand *ex = new ExCommand(_id, 17, 24, 0, 0, 0, 1, 0, 0, 0);
- ex->_keyCode = _okeyCode;
+ ex->_param = _odelay;
ex->_excFlags = 2;
ex->postMessage();
}
@@ -1040,9 +1053,9 @@ void StaticANIObject::adjustSomeXY() {
}
MessageQueue *StaticANIObject::changeStatics1(int msgNum) {
- g_fp->_mgm->addItem(_id);
+ g_fp->_aniHandler->attachObject(_id);
- MessageQueue *mq = g_fp->_mgm->genMQ(this, msgNum, 0, 0, 0);
+ MessageQueue *mq = g_fp->_aniHandler->makeQueue(this, msgNum, 0, 0, 0);
if (!mq)
return 0;
@@ -1071,8 +1084,8 @@ void StaticANIObject::changeStatics2(int objId) {
deleteFromGlobalMessageQueue();
if (_movement || _statics) {
- g_fp->_mgm->addItem(_id);
- g_fp->_mgm->updateAnimStatics(this, objId);
+ g_fp->_aniHandler->attachObject(_id);
+ g_fp->_aniHandler->putObjectToStatics(this, objId);
} else {
_statics = getStaticsById(objId);
}
@@ -1093,7 +1106,7 @@ void StaticANIObject::hide() {
}
void StaticANIObject::show1(int x, int y, int movId, int mqId) {
- debug(6, "StaticANIObject::show1(%d, %d, %d, %d)", x, y, movId, mqId);
+ debugC(6, kDebugAnimation, "StaticANIObject::show1(%d, %d, %d, %d)", x, y, movId, mqId);
if (_messageQueueId)
return;
@@ -1267,7 +1280,7 @@ void StaticANIObject::startAnimSteps(int movementId, int messageQueueId, int x,
ExCommand *ex = new ExCommand(_id, 17, 23, 0, 0, movementId, 1, 0, 0, 0);
- ex->_keyCode = _okeyCode;
+ ex->_param = _odelay;
ex->_excFlags = 2;
ex->postMessage();
}
@@ -1285,7 +1298,7 @@ bool StaticANIObject::startAnim(int movementId, int messageQueueId, int dynPhase
if (_flags & 0x80)
return false;
- debug(4, "StaticANIObject::startAnim(%d, %d, %d) (%s [%d]) [%d, %d]", movementId, messageQueueId, dynPhaseIdx, transCyrillic((byte *)_objectName), _id, _ox, _oy);
+ debugC(4, kDebugAnimation, "StaticANIObject::startAnim(%d, %d, %d) (%s [%d]) [%d, %d]", movementId, messageQueueId, dynPhaseIdx, transCyrillic((byte *)_objectName), _id, _ox, _oy);
if (_messageQueueId) {
updateGlobalMessageQueue(messageQueueId, _id);
@@ -1379,7 +1392,7 @@ bool StaticANIObject::startAnim(int movementId, int messageQueueId, int dynPhase
ExCommand *newex = new ExCommand(_id, 17, 23, 0, 0, movementId, 1, 0, 0, 0);
- newex->_keyCode = _okeyCode;
+ newex->_param = _odelay;
newex->_excFlags = 2;
newex->postMessage();
@@ -1444,14 +1457,14 @@ Statics::Statics(Statics *src, bool reverse) : DynamicPhase(src, reverse) {
}
bool Statics::load(MfcArchive &file) {
- debug(5, "Statics::load()");
+ debugC(5, kDebugLoading, "Statics::load()");
DynamicPhase::load(file);
_staticsId = file.readUint16LE();
_staticsName = file.readPascalString();
- debug(7, "statics: <%s> id: %d (%x)", transCyrillic((byte *)_staticsName), _staticsId, _staticsId);
+ debugC(7, kDebugLoading, "statics: <%s> id: %d (%x)", transCyrillic((byte *)_staticsName), _staticsId, _staticsId);
_picture = new Picture();
_picture->load(file);
@@ -1462,8 +1475,13 @@ bool Statics::load(MfcArchive &file) {
void Statics::init() {
Picture::init();
- if (_staticsId & 0x4000)
- _bitmap->reverseImage();
+ if (_staticsId & 0x4000) {
+ Bitmap *reversed = _bitmap->reverseImage();
+ freePixelData();
+ // TODO: properly dispose old _bitmap
+ _bitmap = reversed;
+ // _data = ... // useless?
+ }
}
Common::Point *Statics::getSomeXY(Common::Point &p) {
@@ -1576,6 +1594,9 @@ Movement::Movement(Movement *src, int *oldIdxs, int newSize, StaticANIObject *an
_m2x = 0;
_m2y = 0;
+ _counter = 0;
+ _counterMax = 0;
+
_field_78 = 0;
_framePosOffsets = 0;
_field_84 = 0;
@@ -1667,7 +1688,7 @@ bool Movement::load(MfcArchive &file, StaticANIObject *ani) {
int dynCount = file.readUint16LE();
- debug(7, "dynCount: %d _id: %d", dynCount, _id);
+ debugC(7, kDebugLoading, "dynCount: %d _id: %d", dynCount, _id);
if (dynCount != 0xffff || _id == MV_MAN_TURN_LU) {
_framePosOffsets = (Common::Point **)calloc(dynCount + 2, sizeof(Common::Point *));
@@ -1693,8 +1714,8 @@ bool Movement::load(MfcArchive &file, StaticANIObject *ani) {
_staticsObj1 = ani->addReverseStatics(s);
}
- _mx = file.readUint32LE();
- _my = file.readUint32LE();
+ _mx = file.readSint32LE();
+ _my = file.readSint32LE();
staticsid = file.readUint16LE();
@@ -1705,8 +1726,8 @@ bool Movement::load(MfcArchive &file, StaticANIObject *ani) {
_staticsObj2 = ani->addReverseStatics(s);
}
- _m2x = file.readUint32LE();
- _m2y = file.readUint32LE();
+ _m2x = file.readSint32LE();
+ _m2y = file.readSint32LE();
if (_staticsObj2) {
_dynamicPhases.push_back(_staticsObj2);
@@ -1763,8 +1784,8 @@ Common::Point *Movement::calcSomeXY(Common::Point &p, int idx, int dynidx) {
Common::Point point;
_staticsObj1->getSomeXY(point);
- int y1 = _my - point.y;
int x1 = _mx - point.x;
+ int y1 = _my - point.y;
setDynamicPhaseIndex(0);
@@ -1823,7 +1844,7 @@ void Movement::initStatics(StaticANIObject *ani) {
if (!_currMovement)
return;
- debug(7, "Movement::initStatics()");
+ debugC(7, kDebugAnimation, "Movement::initStatics()");
_staticsObj2 = ani->addReverseStatics(_currMovement->_staticsObj2);
_staticsObj1 = ani->addReverseStatics(_currMovement->_staticsObj1);
@@ -1850,7 +1871,7 @@ void Movement::initStatics(StaticANIObject *ani) {
}
void Movement::updateCurrDynamicPhase() {
- debug(7, "Movement::updateCurrDynamicPhase()");
+ debugC(7, kDebugAnimation, "Movement::updateCurrDynamicPhase()");
if (_currMovement) {
if (_currMovement->_dynamicPhases.size() == 0 || (uint)_currDynamicPhaseIndex >= _currMovement->_dynamicPhases.size())
@@ -1872,11 +1893,11 @@ int Movement::calcDuration() {
if (_currMovement)
for (uint i = 0; i < _currMovement->_dynamicPhases.size(); i++) {
- res += _currMovement->_dynamicPhases[i]->_initialCountdown;
+ res += _currMovement->_dynamicPhases[i]->_initialCountdown + 1;
}
else
for (uint i = 0; i < _dynamicPhases.size(); i++) {
- res += _dynamicPhases[i]->_initialCountdown;
+ res += _dynamicPhases[i]->_initialCountdown + 1;
}
return res;
@@ -1902,7 +1923,7 @@ int Movement::countPhasesWithFlag(int maxidx, int flag) {
}
void Movement::setDynamicPhaseIndex(int index) {
- debug(7, "Movement::setDynamicPhaseIndex(%d)", index);
+ debugC(7, kDebugAnimation, "Movement::setDynamicPhaseIndex(%d)", index);
while (_currDynamicPhaseIndex < index)
gotoNextFrame(0, 0);
@@ -1911,7 +1932,7 @@ void Movement::setDynamicPhaseIndex(int index) {
}
DynamicPhase *Movement::getDynamicPhaseByIndex(int idx) {
- debug(7, "Movement::updateCurrDynamicPhase()");
+ debugC(7, kDebugAnimation, "Movement::updateCurrDynamicPhase()");
if (_currMovement) {
if (_currMovement->_dynamicPhases.size() == 0 || (uint)idx >= _currMovement->_dynamicPhases.size())
@@ -1928,12 +1949,12 @@ DynamicPhase *Movement::getDynamicPhaseByIndex(int idx) {
void Movement::loadPixelData() {
Movement *mov = this;
- for (Movement *i = _currMovement; i; i = i->_currMovement)
- mov = i;
+ while (mov->_currMovement)
+ mov = mov->_currMovement;
- for (uint i = 0; i < _dynamicPhases.size(); i++) {
- if ((Statics *)_dynamicPhases[i] != mov->_staticsObj2 || !(mov->_staticsObj2->_staticsId & 0x4000))
- _dynamicPhases[i]->getPixelData();
+ for (uint i = 0; i < mov->_dynamicPhases.size(); i++) {
+ if ((Statics *)mov->_dynamicPhases[i] != mov->_staticsObj2 || !(mov->_staticsObj2->_staticsId & 0x4000))
+ mov->_dynamicPhases[i]->getPixelData();
}
if (!(mov->_staticsObj1->_staticsId & 0x4000))
@@ -1958,8 +1979,8 @@ void Movement::removeFirstPhase() {
_dynamicPhases.remove_at(0);
for (uint i = 0; i < _dynamicPhases.size(); i++) {
- _framePosOffsets[i - 1]->x = _framePosOffsets[i]->x;
- _framePosOffsets[i - 1]->y = _framePosOffsets[i]->y;
+ _framePosOffsets[i]->x = _framePosOffsets[i + 1]->x;
+ _framePosOffsets[i]->y = _framePosOffsets[i + 1]->y;
}
}
_currDynamicPhaseIndex--;
@@ -1970,7 +1991,7 @@ void Movement::removeFirstPhase() {
}
bool Movement::gotoNextFrame(void (*callback1)(int, Common::Point *point, int, int), void (*callback2)(int *)) {
- debug(8, "Movement::gotoNextFrame()");
+ debugC(8, kDebugAnimation, "Movement::gotoNextFrame()");
if (!callback2) {
if (_currMovement) {
@@ -1979,7 +2000,7 @@ bool Movement::gotoNextFrame(void (*callback1)(int, Common::Point *point, int, i
return false;
}
} else if ((uint)_currDynamicPhaseIndex == _dynamicPhases.size() - 1
- && !(_dynamicPhases.back()->_countdown)) {
+ && !(_dynamicPhases.back()->_countdown)) {
return false;
}
}
@@ -2091,7 +2112,7 @@ bool Movement::gotoNextFrame(void (*callback1)(int, Common::Point *point, int, i
}
bool Movement::gotoPrevFrame() {
- debug(8, "Movement::gotoPrevFrame()");
+ debugC(8, kDebugAnimation, "Movement::gotoPrevFrame()");
if (!_currDynamicPhaseIndex) {
gotoLastFrame();
@@ -2144,11 +2165,17 @@ void Movement::gotoFirstFrame() {
void Movement::gotoLastFrame() {
if (_currMovement) {
- while ((uint)_currDynamicPhaseIndex != _currMovement->_dynamicPhases.size() - 1)
- gotoNextFrame(0, 0);
+ if ((uint)_currDynamicPhaseIndex != _currMovement->_dynamicPhases.size() - 1) {
+ do {
+ gotoNextFrame(0, 0);
+ } while ((uint)_currDynamicPhaseIndex != _currMovement->_dynamicPhases.size() - 1);
+ }
} else {
- while ((uint)_currDynamicPhaseIndex != _dynamicPhases.size() - 1)
- gotoNextFrame(0, 0);
+ if ((uint)_currDynamicPhaseIndex != _dynamicPhases.size() - 1) {
+ do {
+ gotoNextFrame(0, 0);
+ } while ((uint)_currDynamicPhaseIndex != _dynamicPhases.size() - 1);
+ }
}
}
@@ -2189,7 +2216,7 @@ DynamicPhase::DynamicPhase(DynamicPhase *src, bool reverse) {
_field_7E = 0;
_rect = new Common::Rect();
- debug(1, "DynamicPhase::DynamicPhase(src, %d)", reverse);
+ debugC(1, kDebugAnimation, "DynamicPhase::DynamicPhase(src, %d)", reverse);
if (reverse) {
if (!src->_bitmap)
@@ -2251,23 +2278,23 @@ DynamicPhase::DynamicPhase(DynamicPhase *src, bool reverse) {
}
bool DynamicPhase::load(MfcArchive &file) {
- debug(5, "DynamicPhase::load()");
+ debugC(5, kDebugLoading, "DynamicPhase::load()");
StaticPhase::load(file);
_field_7C = file.readUint16LE();
_rect = new Common::Rect();
- _rect->left = file.readUint32LE();
- _rect->top = file.readUint32LE();
- _rect->right = file.readUint32LE();
- _rect->bottom = file.readUint32LE();
+ _rect->left = file.readSint32LE();
+ _rect->top = file.readSint32LE();
+ _rect->right = file.readSint32LE();
+ _rect->bottom = file.readSint32LE();
- assert (g_fp->_gameProjectVersion >= 1);
+ assert(g_fp->_gameProjectVersion >= 1);
- _someX = file.readUint32LE();
- _someY = file.readUint32LE();
+ _someX = file.readSint32LE();
+ _someY = file.readSint32LE();
- assert (g_fp->_gameProjectVersion >= 12);
+ assert(g_fp->_gameProjectVersion >= 12);
_dynFlags = file.readUint32LE();
@@ -2287,7 +2314,7 @@ StaticPhase::~StaticPhase() {
}
bool StaticPhase::load(MfcArchive &file) {
- debug(5, "StaticPhase::load()");
+ debugC(5, kDebugLoading, "StaticPhase::load()");
Picture::load(file);