diff options
author | Paul Gilbert | 2014-08-16 11:58:59 -0400 |
---|---|---|
committer | Paul Gilbert | 2014-08-16 11:58:59 -0400 |
commit | 5ff004b2d839a4e3a06112916efe0412a5112903 (patch) | |
tree | d04a09f64ba9016c44f29062fedab815626edb15 /engines | |
parent | dc5500e2464d3457d9dee70993ecd4340963946e (diff) | |
download | scummvm-rg350-5ff004b2d839a4e3a06112916efe0412a5112903.tar.gz scummvm-rg350-5ff004b2d839a4e3a06112916efe0412a5112903.tar.bz2 scummvm-rg350-5ff004b2d839a4e3a06112916efe0412a5112903.zip |
ACCESS: Fix initialisation of player positioning and scaling values
Diffstat (limited to 'engines')
-rw-r--r-- | engines/access/access.h | 3 | ||||
-rw-r--r-- | engines/access/player.cpp | 10 | ||||
-rw-r--r-- | engines/access/player.h | 1 | ||||
-rw-r--r-- | engines/access/room.cpp | 7 |
4 files changed, 12 insertions, 9 deletions
diff --git a/engines/access/access.h b/engines/access/access.h index 105b00b0ff..32be053089 100644 --- a/engines/access/access.h +++ b/engines/access/access.h @@ -138,8 +138,6 @@ public: byte *_music; byte *_title; int _converseMode; - int _startAboutItem; - int _startTravelItem; int _startAboutBox; int _startTravelBox; bool _currentCharFlag; @@ -152,7 +150,6 @@ public: int _scaleMaxY; int _scaleI; bool _scaleFlag; - int _playFieldHeight; // Fields that are included in savegames int _conversation; diff --git a/engines/access/player.cpp b/engines/access/player.cpp index 72cafde243..79ce2190f3 100644 --- a/engines/access/player.cpp +++ b/engines/access/player.cpp @@ -61,6 +61,7 @@ Player::Player(AccessEngine *vm): Manager(vm), ImageEntry() { _move = NONE; _playerDirection = NONE; _xFlag = _yFlag = 0; + _inactiveYOff = 0; } Player::~Player() { @@ -168,12 +169,13 @@ void Player::freeSprites() { void Player::calcManScale() { if (!_vm->_manScaleOff) { - _vm->_scale = (((_rawPlayer.y - _vm->_scaleMaxY + _vm->_scaleN1) * - _vm->_scaleT1 + (_vm->_scaleH2 << 8)) / _vm->_scaleH1 * _vm->_scaleI) >> 8; + _vm->_scale = ((((_rawPlayer.y - _vm->_scaleMaxY + _vm->_scaleN1) * + _vm->_scaleT1 + (_vm->_scaleH2 << 8)) & 0xff00) / _vm->_scaleH1 * _vm->_scaleI) >> 8; _vm->_screen->setScaleTable(_vm->_scale); _playerOffset.x = _vm->_screen->_scaleTable1[20]; _playerOffset.y = _vm->_screen->_scaleTable1[67]; + _inactiveYOff = _playerOffset.y; } } @@ -188,6 +190,7 @@ void Player::walk() { return; } + _vm->_timers[0]._flag = true; switch (_move) { case UP: _vm->_events->_mouseMove = false; @@ -646,7 +649,8 @@ void Player::plotCom2() { void Player::plotCom3() { // Update the base ImageEntry fields for the player - _position = _rawPlayer; + _position.x = _rawPlayer.x; + _position.y = _rawPlayer.y - _playerOffset.y; _priority = _playerOffset.y; _spritesPtr = _playerSprites; _frameNumber = _frame; diff --git a/engines/access/player.h b/engines/access/player.h index a291f4589d..a9efff2433 100644 --- a/engines/access/player.h +++ b/engines/access/player.h @@ -57,6 +57,7 @@ private: SpriteResource *_playerSprites1; byte *_manPal1; int _scrollEnd; + int _inactiveYOff; bool codeWalls(); void checkMove(); diff --git a/engines/access/room.cpp b/engines/access/room.cpp index cf8da17f05..ccd19b0ed9 100644 --- a/engines/access/room.cpp +++ b/engines/access/room.cpp @@ -182,14 +182,14 @@ void Room::loadRoomData(const byte *roomData) { _vm->_scaleH1 = roomInfo._scaleH1; _vm->_scaleH2 = roomInfo._scaleH2; _vm->_scaleN1 = roomInfo._scaleN1; - _vm->_scaleT1 = ((_vm->_scaleH2 - _vm->_scaleH1) << 8) / _vm->_scaleN1; + _vm->_scaleT1 = ((_vm->_scaleH1 - _vm->_scaleH2) << 8) / _vm->_scaleN1; if (roomInfo._playFieldFile._fileNum != -1) { loadPlayField(roomInfo._playFieldFile._fileNum, roomInfo._playFieldFile._subfile); setupRoom(); - _vm->_scaleMaxY = _vm->_playFieldHeight << 4; + _vm->_scaleMaxY = _playFieldHeight << 4; } // Load cells @@ -211,7 +211,8 @@ void Room::loadRoomData(const byte *roomData) { _vm->_animation->loadAnimations(data, _vm->_files->_filesize); } - _vm->_scaleI = roomInfo._scaleI; + _vm->_scale = _vm->_scaleI = roomInfo._scaleI; + _vm->_screen->setScaleTable(_vm->_scale); _vm->_player->_scrollThreshold = roomInfo._scrollThreshold; // Handle loading scene palette data |