Skip to content

Commit

Permalink
ACCESS: Minor river code clean up and saving fix
Browse files Browse the repository at this point in the history
  • Loading branch information
dreammaster committed Dec 13, 2014
1 parent 0745693 commit 8e90ef2
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 23 deletions.
1 change: 0 additions & 1 deletion engines/access/amazon/amazon_game.h
Expand Up @@ -107,7 +107,6 @@ class AmazonEngine : public AccessEngine {
int _updateChapter;
int _oldTitleChapter;
int _maxHits;
int _oldScrollCol;
int _iqValue;
public:
AmazonEngine(OSystem *syst, const AccessGameDescription *gameDesc);
Expand Down
51 changes: 29 additions & 22 deletions engines/access/amazon/amazon_logic.cpp
Expand Up @@ -1361,6 +1361,7 @@ River::River(AmazonEngine *vm): PannedScene(vm) {
_saveRiver = false;
_deathFlag = false;
_deathCount = 0;
_oldScrollCol = 0;
}

void River::setRiverPan() {
Expand Down Expand Up @@ -1472,7 +1473,7 @@ void River::initRiver() {

void River::resetPositions() {
riverSetPhysX();
int val = (_vm->_screen->_scrollCol + 1 - _vm->_oldScrollCol) * 16;
int val = (_vm->_screen->_scrollCol + 1 - _oldScrollCol) * 16;
if (val > 256) {
val &= 0x7F;
val |= 0x80;
Expand All @@ -1483,7 +1484,7 @@ void River::resetPositions() {
}

void River::checkRiverPan() {
int val = (_vm->_screen->_scrollCol + 20) * 16;
int val = _vm->_screen->_scrollCol * 16 + 320;

for (int i = 0; i < _pNumObj; i++) {
if (_pan[i]._pObjX < val)
Expand All @@ -1499,7 +1500,7 @@ bool River::riverJumpTest() {
++_mapPtr;
if (val == 0xFF)
return true;
_vm->_oldScrollCol = _vm->_screen->_scrollCol;
_oldScrollCol = _vm->_screen->_scrollCol;

if (val == 0) {
_vm->_screen->_scrollCol = 139;
Expand All @@ -1524,7 +1525,7 @@ bool River::riverJumpTest() {
_deathCount = 300;
_deathType = val2;
}
_vm->_oldScrollCol = _vm->_screen->_scrollCol;
_oldScrollCol = _vm->_screen->_scrollCol;
_vm->_screen->_scrollCol = 44;
_vm->_screen->_scrollX = 14;
_vm->_room->buildScreen();
Expand Down Expand Up @@ -1579,11 +1580,6 @@ void River::moveCanoe() {
} else {
// Clicked on the Disc icon
_saveRiver = true;
_rScrollRow = screen._scrollRow;
_rScrollCol = screen._scrollCol;
_rScrollX = screen._scrollX;
_rScrollY = screen._scrollY;
_mapOffset = _mapPtr - MAPTBL[_vm->_riverFlag];

// Show the ScummVM menu
_vm->_room->handleCommand(9);
Expand Down Expand Up @@ -1635,6 +1631,8 @@ void River::updateObstacles() {
break;

if (cur->_riverX < (_screenVertX + 319)) {
// Object is now on-screen. So set _topList/_botList to the range
// of river obstacles that are currently visible
_topList = cur;
_botList = cur;

Expand All @@ -1657,11 +1655,10 @@ void River::updateObstacles() {
}

void River::riverSetPhysX() {
int val = (_vm->_screen->_scrollCol * 16) + _vm->_screen->_scrollX;
RiverStruct *cur = _topList;
while (cur <= _botList) {
cur[0]._xp = val - (_screenVertX - cur[0]._riverX);
++cur;
int xAmt = (_vm->_screen->_scrollCol * 16) + _vm->_screen->_scrollX;

for (RiverStruct *cur = _topList; cur <= _botList; ++cur) {
cur->_xp = xAmt - (_screenVertX - cur->_riverX);
}
}

Expand All @@ -1688,14 +1685,15 @@ bool River::checkRiverCollide() {
}

void River::plotRiver() {
// Handle cycling through the canoe rowing frames
if (_vm->_timers[3]._flag == 0) {
++_vm->_timers[3]._flag;
if (_canoeFrame == 12)

if (_canoeFrame++ == 12)
_canoeFrame = 0;
else
++_canoeFrame;
}

// Draw the canoe
ImageEntry ie;
ie._flags = IMGFLAG_UNSCALED;
ie._spritesPtr = _vm->_objectsTable[45];
Expand All @@ -1705,19 +1703,17 @@ void River::plotRiver() {
ie._offsetY = 41;
_vm->_images.addToList(ie);

RiverStruct *cur = _topList;
while (cur <= _botList) {
// Draw any on-screen obstacles
for (RiverStruct *cur = _topList; cur <= _botList; ++cur) {
if (cur->_id != -1) {
ie._flags = IMGFLAG_UNSCALED;
ie._spritesPtr = _vm->_objectsTable[45];
ie._frameNumber = cur->_id;
ie._position.x = cur->_xp;
int val = (cur[0]._lane * 5) + 56;
ie._position.y = val - cur->_offsetY;
ie._position.y = (cur->_lane * 5) + 56 - cur->_offsetY;
ie._offsetY = cur->_offsetY;
_vm->_images.addToList(ie);
}
++cur;
}
}

Expand Down Expand Up @@ -1890,8 +1886,19 @@ void River::river() {
}
}
}

void River::synchronize(Common::Serializer &s) {
if (_vm->_player->_roomNumber == 45) {
if (s.isSaving()) {
// Set river properties to be saved out
Screen &screen = *_vm->_screen;
_rScrollRow = screen._scrollRow;
_rScrollCol = screen._scrollCol;
_rScrollX = screen._scrollX;
_rScrollY = screen._scrollY;
_mapOffset = _mapPtr - MAPTBL[_vm->_riverFlag];
}

s.syncAsSint16LE(_canoeLane);
s.syncAsSint16LE(_canoeYPos);
s.syncAsSint16LE(_hitCount);
Expand Down
1 change: 1 addition & 0 deletions engines/access/amazon/amazon_logic.h
Expand Up @@ -183,6 +183,7 @@ class River: public PannedScene {
int _rScrollY;
int _mapOffset;
int _screenVertX;
int _oldScrollCol;

void initRiver();
void resetPositions();
Expand Down

0 comments on commit 8e90ef2

Please sign in to comment.