From d570da065ec422132b4dd409b9b4ecf9cea92fc8 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 17 Aug 2014 23:15:32 -0400 Subject: [PATCH] ACCESS: Fix selecting location for player to walk to --- engines/access/amazon/amazon_room.cpp | 9 ++++++--- engines/access/events.cpp | 1 - engines/access/events.h | 1 - engines/access/player.cpp | 29 ++++++++++++++------------- engines/access/player.h | 3 ++- 5 files changed, 23 insertions(+), 20 deletions(-) diff --git a/engines/access/amazon/amazon_room.cpp b/engines/access/amazon/amazon_room.cpp index bf3c2501bb1b..79c70c0b338c 100644 --- a/engines/access/amazon/amazon_room.cpp +++ b/engines/access/amazon/amazon_room.cpp @@ -148,14 +148,17 @@ void AmazonRoom::mainAreaClick() { switch (checkBoxes1(_vm->_events->_mousePos)) { case 0: _game->_jasMayaFlag = 0; - break; + return; case 1: _game->_jasMayaFlag = 1; - break; + return; default: break; } - } + } + + _vm->_player->_moveTo = _vm->_events->_mousePos; + _vm->_player->_playerMove = true; } else if (_vm->_events->_mousePos.x >= _vm->_screen->_windowXAdd && _vm->_events->_mousePos.x <= _vm->_screen->_vWindowBytesWide && _vm->_events->_mousePos.y >= _vm->_screen->_windowYAdd && diff --git a/engines/access/events.cpp b/engines/access/events.cpp index 25a77f82dec2..1afc5515b0ad 100644 --- a/engines/access/events.cpp +++ b/engines/access/events.cpp @@ -40,7 +40,6 @@ EventsManager::EventsManager(AccessEngine *vm): _vm(vm) { _frameCounter = 10; _priorFrameTime = 0; _leftButton = _rightButton = false; - _mouseMove = false; _mouseCol = _mouseRow = 0; _mouseMode = 0; _cursorExitFlag = false; diff --git a/engines/access/events.h b/engines/access/events.h index c6702ec7af98..4c052f96f0f4 100644 --- a/engines/access/events.h +++ b/engines/access/events.h @@ -55,7 +55,6 @@ class EventsManager { bool _leftButton, _rightButton; Common::Point _mousePos; int _mouseCol, _mouseRow; - bool _mouseMove; int _mouseMode; bool _cursorExitFlag; Common::FixedStack _keypresses; diff --git a/engines/access/player.cpp b/engines/access/player.cpp index dfbee481347c..cde1a74de29a 100644 --- a/engines/access/player.cpp +++ b/engines/access/player.cpp @@ -49,6 +49,7 @@ Player::Player(AccessEngine *vm): Manager(vm), ImageEntry() { _playerY = 0; _frame = 0; _playerOff = false; + _playerMove = false; _leftDelta = _rightDelta = 0; _upDelta = _downDelta = 0; _scrollConst = 0; @@ -193,35 +194,35 @@ void Player::walk() { _vm->_timers[0]._flag = true; switch (_move) { case UP: - _vm->_events->_mouseMove = false; + _playerMove = false; walkUp(); break; case DOWN: - _vm->_events->_mouseMove = false; + _playerMove = false; walkDown(); break; case LEFT: - _vm->_events->_mouseMove = false; + _playerMove = false; walkLeft(); break; case RIGHT: - _vm->_events->_mouseMove = false; + _playerMove = false; walkRight(); break; case UPLEFT: - _vm->_events->_mouseMove = false; + _playerMove = false; walkUpLeft(); break; case DOWNLEFT: - _vm->_events->_mouseMove = false; + _playerMove = false; walkDownLeft(); break; case UPRIGHT: - _vm->_events->_mouseMove = false; + _playerMove = false; walkUpRight(); break; case DOWNRIGHT: - _vm->_events->_mouseMove = false; + _playerMove = false; walkDownRight(); break; default: @@ -562,7 +563,7 @@ void Player::walkDownRight() { } void Player::checkMove() { - if (_vm->_events->_mouseMove) { + if (_playerMove) { if (_xFlag == 0 && _yFlag == 0) { int xp = (_playerOffset.x / 2) + _rawPlayer.x - _moveTo.x; if (xp < 0) @@ -582,7 +583,7 @@ void Player::checkMove() { if ((yd >= 0 && yd <= _upDelta) || (yd < 0 && -yd <= _upDelta)) { ++_yFlag; if (_xFlag) { - _vm->_events->_mouseMove = false; + _playerMove = false; _xFlag = _yFlag = 0; } else { ++_xFlag; @@ -594,7 +595,7 @@ void Player::checkMove() { walkDown(); if (_collideFlag) { - _vm->_events->_mouseMove = false; + _playerMove = false; _xFlag = _yFlag = 0; } } @@ -604,7 +605,7 @@ void Player::checkMove() { ++_xFlag; if (_yFlag) { - _vm->_events->_mouseMove = false; + _playerMove = false; _xFlag = _yFlag = 0; } } else { @@ -614,14 +615,14 @@ void Player::checkMove() { walkRight(); if (_collideFlag) { - _vm->_events->_mouseMove = false; + _playerMove = false; _xFlag = _yFlag = 0; } } } else if (!_yFlag) { ++_yFlag; } else { - _vm->_events->_mouseMove = false; + _playerMove = false; _xFlag = _yFlag = 0; } } diff --git a/engines/access/player.h b/engines/access/player.h index b904e46170fc..b11cc4a826ac 100644 --- a/engines/access/player.h +++ b/engines/access/player.h @@ -51,7 +51,6 @@ class Player: public ImageEntry, Manager { bool _collideFlag; Direction _move; int _xFlag, _yFlag; - Common::Point _moveTo; SpriteResource *_playerSprites1; byte *_manPal1; int _scrollEnd; @@ -102,6 +101,8 @@ class Player: public ImageEntry, Manager { // Additional public globals we've added to new Player class bool _playerOff; + bool _playerMove; + Common::Point _moveTo; bool _scrollFlag; int _scrollThreshold; int _scrollAmount;