Skip to content

Commit

Permalink
ACCESS: Implemented setupRoom method
Browse files Browse the repository at this point in the history
  • Loading branch information
dreammaster committed Aug 7, 2014
1 parent 031cc32 commit bea93f3
Show file tree
Hide file tree
Showing 12 changed files with 85 additions and 24 deletions.
7 changes: 1 addition & 6 deletions engines/access/access.cpp
Expand Up @@ -71,18 +71,13 @@ AccessEngine::AccessEngine(OSystem *syst, const AccessGameDescription *gameDesc)
_currentCharFlag = false;
_boxSelect = false;
_charFlag = 0;
_scale = 0;
_scaleH1 = _scaleH2 = 0;
_scaleN1 = 0;
_scaleT1 = 0;
_scaleMaxY = 0;
_scaleI = 0;
_playFieldHeight = 0;

_roomNumber = 0;
_rawPlayerXLow = 0;
_rawPlayerX = 0;
_rawPlayerYLow = 0;
_rawPlayerY = 0;
_conversation = 0;
_currentMan = 0;
_newTime = 0;
Expand Down
7 changes: 2 additions & 5 deletions engines/access/access.h
Expand Up @@ -136,6 +136,7 @@ class AccessEngine : public Engine {
byte *_manPal1;
byte *_music;
byte *_playField;
Common::Point _playFieldSize;
byte *_tile;
byte *_anim;
byte *_title;
Expand All @@ -149,6 +150,7 @@ class AccessEngine : public Engine {
bool _currentCharFlag;
bool _boxSelect;
int _charFlag;
int _scale;
int _scaleH1, _scaleH2;
int _scaleN1;
int _scaleT1;
Expand All @@ -157,11 +159,6 @@ class AccessEngine : public Engine {
int _playFieldHeight;

// Fields that are included in savegames
int _roomNumber;
int _rawPlayerXLow;
int _rawPlayerX;
int _rawPlayerYLow;
int _rawPlayerY;
int _conversation;
int _currentMan;
uint32 _newTime;
Expand Down
6 changes: 3 additions & 3 deletions engines/access/amazon/amazon_game.cpp
Expand Up @@ -164,9 +164,9 @@ void AmazonEngine::setupGame() {
}

// Set miscellaneous fields
_roomNumber = 4;
_player->_playerX = _rawPlayerX = TRAVEL_POS[_roomNumber][0];
_player->_playerY = _rawPlayerY = TRAVEL_POS[_roomNumber][1];
_player->_roomNumber = 4;
_player->_playerX = _player->_rawPlayer.x = TRAVEL_POS[_player->_roomNumber][0];
_player->_playerY = _player->_rawPlayer.y = TRAVEL_POS[_player->_roomNumber][1];
_selectCommand = -1;
}

Expand Down
16 changes: 8 additions & 8 deletions engines/access/amazon/amazon_room.cpp
Expand Up @@ -38,7 +38,7 @@ void AmazonRoom::loadRoom(int roomNumber) {
}

void AmazonRoom::reloadRoom() {
loadRoom(_vm->_roomNumber);
loadRoom(_vm->_player->_roomNumber);

if (_roomFlag != 1) {
_vm->_currentMan = _roomFlag;
Expand Down Expand Up @@ -68,8 +68,8 @@ void AmazonRoom::reloadRoom() {
}

void AmazonRoom::reloadRoom1() {
if (_vm->_roomNumber == 22 || _vm->_roomNumber == 31
|| _vm->_roomNumber == 42 || _vm->_roomNumber == 44) {
if (_vm->_player->_roomNumber == 22 || _vm->_player->_roomNumber == 31
|| _vm->_player->_roomNumber == 42 || _vm->_player->_roomNumber == 44) {
_vm->_inactive = _vm->_files->loadFile("MAYA.LZ");
_vm->_currentCharFlag = false;
}
Expand All @@ -84,13 +84,13 @@ void AmazonRoom::reloadRoom1() {
_vm->_screen->clearScreen();
roomSet();

if (!_roomFlag && (_vm->_roomNumber != 61 || !_antOutFlag)) {
if (!_roomFlag && (_vm->_player->_roomNumber != 61 || !_antOutFlag)) {
_vm->_player->load();
_vm->_player->calcManScale();
}

if (_vm->_roomNumber != 20 && _vm->_roomNumber != 24
&& _vm->_roomNumber != 33 && _vm->_roomNumber != 45) {
if (_vm->_player->_roomNumber != 20 && _vm->_player->_roomNumber != 24
&& _vm->_player->_roomNumber != 33 && _vm->_player->_roomNumber != 45) {
roomMenu();
}

Expand All @@ -99,8 +99,8 @@ void AmazonRoom::reloadRoom1() {
setWallCodes();
buildScreen();

if (_vm->_roomNumber != 20 && _vm->_roomNumber != 24
&& _vm->_roomNumber != 33) {
if (_vm->_player->_roomNumber != 20 && _vm->_player->_roomNumber != 24
&& _vm->_player->_roomNumber != 33) {
_vm->_screen->setPalette();
_vm->_screen->copyBF2Vid();
}
Expand Down
9 changes: 9 additions & 0 deletions engines/access/asurface.cpp
Expand Up @@ -30,4 +30,13 @@ void ASurface::clearBuffer() {
Common::fill(pSrc, pSrc + w * h, 0);
}

void ASurface::setScaleTable(int scale) {
int total = 0;
for (int idx = 0; idx < 256; ++idx) {
_scaleTable1[idx] = total >> 8;
_scaleTable2[idx] = total & 0xff;
total += scale;
}
}

} // End of namespace Access
6 changes: 6 additions & 0 deletions engines/access/asurface.h
Expand Up @@ -23,16 +23,22 @@
#ifndef ACCESS_ASURFACE_H
#define ACCESS_ASURFACE_H

#include "common/scummsys.h"
#include "common/rect.h"
#include "graphics/surface.h"

namespace Access {

class ASurface : public Graphics::Surface {
private:
byte _scaleTable1[256];
byte _scaleTable2[256];
public:
void clearBuffer();

void copyBuffer(Graphics::Surface *src) { copyFrom(*src); }

void setScaleTable(int scale);
};

} // End of namespace Access
Expand Down
2 changes: 2 additions & 0 deletions engines/access/player.cpp
Expand Up @@ -44,6 +44,8 @@ Player::Player(AccessEngine *vm): _vm(vm) {
_frame = 0;

_playerOff = false;

_roomNumber = 0;
}

void Player::load() {
Expand Down
5 changes: 5 additions & 0 deletions engines/access/player.h
Expand Up @@ -60,6 +60,11 @@ class Player {

// Additional globals we've added to new Player class
bool _playerOff;

// Additional globals that need to be saved
int _roomNumber;
Common::Point _rawPlayerLow;
Common::Point _rawPlayer;
public:
Player(AccessEngine *vm);

Expand Down
43 changes: 41 additions & 2 deletions engines/access/room.cpp
Expand Up @@ -206,7 +206,9 @@ void Room::loadRoomData(const byte *roomData) {
}

void Room::roomLoop() {
// TODO
_vm->_scripts->_sequence = 2000;
_vm->_scripts->searchForSeq();
_vm->_scripts->executeCommand();
}


Expand All @@ -215,7 +217,44 @@ void Room::doCommands() {
}

void Room::setupRoom() {
// TODO
_vm->_screen->setScaleTable(_vm->_scale);
_vm->_screen->setBufferScan();

if (_roomFlag != 2)
setIconPalette();

if (_vm->_screen->_vWindowSize.x == _vm->_playFieldSize.x) {
_vm->_screen->_scrollX = 0;
_vm->_screen->_scrollCol = 0;
} else {
_vm->_screen->_scrollX = _vm->_player->_rawPlayer.x -
(_vm->_player->_rawPlayer.x >> 4);
int xp = MAX((_vm->_player->_rawPlayer.x >> 4) -
(_vm->_screen->_vWindowSize.x / 2), 0);
_vm->_screen->_scrollCol = xp;

xp = xp + _vm->_screen->_vWindowSize.x - _vm->_playFieldSize.x;
if (xp >= 0) {
_vm->_screen->_scrollCol = xp + 1;
}
}

if (_vm->_screen->_vWindowSize.y == _vm->_playFieldSize.y) {
_vm->_screen->_scrollY = 0;
_vm->_screen->_scrollRow = 0;
}
else {
_vm->_screen->_scrollY = _vm->_player->_rawPlayer.y -
(_vm->_player->_rawPlayer.y >> 4);
int yp = MAX((_vm->_player->_rawPlayer.y >> 4) -
(_vm->_screen->_vWindowSize.y / 2), 0);
_vm->_screen->_scrollRow = yp;

yp = yp + _vm->_screen->_vWindowSize.y - _vm->_playFieldSize.y;
if (yp >= 0) {
_vm->_screen->_scrollRow = yp + 1;
}
}
}

void Room::setWallCodes() {
Expand Down
2 changes: 2 additions & 0 deletions engines/access/room.h
Expand Up @@ -45,6 +45,8 @@ class Room {
virtual void reloadRoom() = 0;

virtual void reloadRoom1() = 0;

virtual void setIconPalette() {}
public:
int _function;
int _roomFlag;
Expand Down
3 changes: 3 additions & 0 deletions engines/access/screen.cpp
Expand Up @@ -45,6 +45,9 @@ Screen::Screen(AccessEngine *vm) : _vm(vm) {
_scrollFlag = false;
_scrollThreshold = 0;
_startColor = _numColors = 0;
_scrollX = _scrollY = 0;
_scrollCol = _scrollRow = 0;

}

void Screen::setDisplayScan() {
Expand Down
3 changes: 3 additions & 0 deletions engines/access/screen.h
Expand Up @@ -58,6 +58,9 @@ class Screen: public ASurface {
bool _scrollFlag;
int _scrollThreshold;
int _startColor, _numColors;
Common::Point _vWindowSize;
int _scrollX, _scrollY;
int _scrollCol, _scrollRow;
public:
Screen(AccessEngine *vm);

Expand Down

0 comments on commit bea93f3

Please sign in to comment.