diff options
Diffstat (limited to 'engines')
| -rw-r--r-- | engines/access/access.cpp | 6 | ||||
| -rw-r--r-- | engines/access/access.h | 6 | ||||
| -rw-r--r-- | engines/access/amazon/amazon_game.cpp | 9 | ||||
| -rw-r--r-- | engines/access/amazon/amazon_room.cpp | 121 | ||||
| -rw-r--r-- | engines/access/amazon/amazon_room.h | 54 | ||||
| -rw-r--r-- | engines/access/amazon/amazon_scripts.cpp | 36 | ||||
| -rw-r--r-- | engines/access/amazon/amazon_scripts.h | 42 | ||||
| -rw-r--r-- | engines/access/module.mk | 5 | ||||
| -rw-r--r-- | engines/access/player.cpp | 8 | ||||
| -rw-r--r-- | engines/access/player.h | 4 | ||||
| -rw-r--r-- | engines/access/room.cpp | 48 | ||||
| -rw-r--r-- | engines/access/room.h | 13 | ||||
| -rw-r--r-- | engines/access/screen.cpp | 4 | ||||
| -rw-r--r-- | engines/access/screen.h | 6 | ||||
| -rw-r--r-- | engines/access/scripts.cpp | 42 | ||||
| -rw-r--r-- | engines/access/scripts.h | 48 | 
16 files changed, 444 insertions, 8 deletions
diff --git a/engines/access/access.cpp b/engines/access/access.cpp index fa1775feca..e175b1c081 100644 --- a/engines/access/access.cpp +++ b/engines/access/access.cpp @@ -37,6 +37,7 @@ AccessEngine::AccessEngine(OSystem *syst, const AccessGameDescription *gameDesc)  	_player = nullptr;  	_room = nullptr;  	_screen = nullptr; +	_scripts = nullptr;  	_sound = nullptr;  	_destIn = nullptr; @@ -48,10 +49,10 @@ AccessEngine::AccessEngine(OSystem *syst, const AccessGameDescription *gameDesc)  	_currentMan = 0;  	_currentManOld = -1;  	_man1 = nullptr; +	_inactive = nullptr;  	_manPal1 = nullptr;  	_music = nullptr;  	_playField = nullptr; -	_script = nullptr;  	_anim = nullptr;  	_title = nullptr;  	_converseMode = 0; @@ -65,6 +66,8 @@ AccessEngine::AccessEngine(OSystem *syst, const AccessGameDescription *gameDesc)  	_nextImage = 0;  	_numAnimTimers = 0;  	_startup = 0; +	_currentCharFlag = false; +	_boxSelect = false;  	_roomNumber = 0;  	_rawPlayerXLow = 0; @@ -119,6 +122,7 @@ AccessEngine::~AccessEngine() {  	delete _player;  	delete _room;  	delete _screen; +	delete _scripts;  	delete _sound;  	_buffer1.free(); diff --git a/engines/access/access.h b/engines/access/access.h index fce6c443f4..21f8072311 100644 --- a/engines/access/access.h +++ b/engines/access/access.h @@ -37,6 +37,7 @@  #include "access/player.h"  #include "access/room.h"  #include "access/screen.h" +#include "access/scripts.h"  #include "access/sound.h"  /** @@ -108,6 +109,7 @@ public:  	Player *_player;  	Room *_room;  	Screen *_screen; +	Scripts *_scripts;  	SoundManager *_sound;  	byte *_destIn; @@ -127,10 +129,10 @@ public:  	int _currentManOld;  	byte *_man1; +	byte *_inactive;  	byte *_manPal1;  	byte *_music;  	byte *_playField; -	byte *_script;  	byte *_anim;  	byte *_title;  	int _converseMode; @@ -140,6 +142,8 @@ public:  	int _startInvBox;  	int _startAboutBox;  	int _startTravelBox; +	bool _currentCharFlag; +	bool _boxSelect;  	// Fields that are included in savegames  	int _roomNumber; diff --git a/engines/access/amazon/amazon_game.cpp b/engines/access/amazon/amazon_game.cpp index 8cbd0767b2..ffe4cb56f1 100644 --- a/engines/access/amazon/amazon_game.cpp +++ b/engines/access/amazon/amazon_game.cpp @@ -20,8 +20,10 @@   *   */ -#include "access/amazon/amazon_game.h"  #include "access/resources.h" +#include "access/amazon/amazon_game.h" +#include "access/amazon/amazon_room.h" +#include "access/amazon/amazon_scripts.h"  namespace Access { @@ -50,6 +52,7 @@ AmazonEngine::~AmazonEngine() {  }  void AmazonEngine::playGame() { +	// Do introduction  	doIntroduction();  	if (shouldQuit())  		return; @@ -62,6 +65,10 @@ void AmazonEngine::playGame() {  	_screen->forceFadeOut();  	_events->showCursor(); + +	// Setup and execute the room +	_room = new AmazonRoom(this); +	_scripts = new AmazonScripts(this);  	_room->doRoom();  } diff --git a/engines/access/amazon/amazon_room.cpp b/engines/access/amazon/amazon_room.cpp new file mode 100644 index 0000000000..ce0683f124 --- /dev/null +++ b/engines/access/amazon/amazon_room.cpp @@ -0,0 +1,121 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "common/scummsys.h" +#include "access/access.h" +#include "access/amazon/amazon_room.h" + +namespace Access { + +namespace Amazon { + +AmazonRoom::AmazonRoom(AccessEngine *vm): Room(vm) { +	_antOutFlag = false; +} + +void AmazonRoom::reloadRoom() { +	loadRoom(_vm->_roomNumber); + +	if (_roomFlag != 1) { +		_vm->_currentMan = _roomFlag; +		_vm->_currentManOld = _roomFlag; +		_vm->_manScaleOff = 0; +		 +		switch (_vm->_currentMan) { +		case 0: +			_vm->_man1 = _vm->_files->loadFile("MAN.LZ"); +			break; + +		case 2: +			_vm->_man1 = _vm->_files->loadFile("JMAN.LZ"); +			break; + +		case 3: +			_vm->_man1 = _vm->_files->loadFile("OVERHEAD.LZ"); +			_vm->_manScaleOff = 1; +			break; + +		default: +			break; +		} +	} + +	reloadRoom1(); +} + +void AmazonRoom::reloadRoom1() { +	if (_vm->_roomNumber == 22 || _vm->_roomNumber == 31  +			|| _vm->_roomNumber == 42 || _vm->_roomNumber == 44) { +		_vm->_inactive = _vm->_files->loadFile("MAYA.LZ"); +		_vm->_currentCharFlag = false; +	} + +	_vm->_selectCommand = -1; +	_vm->_normalMouse = 1; +	_vm->_mouseMode = 0; +	_vm->_boxSelect = true; +	_vm->_player->_playerOff = 0; + +	_vm->_screen->fadeOut(); +	_vm->_screen->clearScreen(); +	roomSet(); + +	if (!_roomFlag && (_vm->_roomNumber != 61 || !_antOutFlag)) { +		_vm->_player->load(); +		_vm->_player->calcManScale(); +	} + +	if (_vm->_roomNumber != 20 && _vm->_roomNumber != 24 +			&& _vm->_roomNumber != 33 && _vm->_roomNumber != 45) { +		roomMenu(); +	} + +	_vm->_screen->setBufferScan(); +	setupRoom(); +	setWallCodes(); +	buildScreen(); + +	if (_vm->_roomNumber != 20 && _vm->_roomNumber != 24 +			&& _vm->_roomNumber != 33) { +		_vm->_screen->setPalette(); +		_vm->_screen->copyBF2Vid(); +	} + +	_vm->_player->_frame = 0; +	_vm->_oldRect.clear(); +	_vm->_newRect.clear(); +} + +void AmazonRoom::roomSet() { +	_vm->_numAnimTimers = 0; +	_vm->_scripts->_sequence = 1000; +	_vm->_scripts->searchForSeq(); +	_vm->_scripts->executeCommand(); +} + +void AmazonRoom::roomMenu() { +	// TODO +} + +} // End of namespace Amazon + +} // End of namespace Access diff --git a/engines/access/amazon/amazon_room.h b/engines/access/amazon/amazon_room.h new file mode 100644 index 0000000000..6d13a4e52c --- /dev/null +++ b/engines/access/amazon/amazon_room.h @@ -0,0 +1,54 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef ACCESS_AMAZON_ROOM_H +#define ACCESS_AMAZON_ROOM_H + +#include "common/scummsys.h" +#include "access/room.h" + +namespace Access { + +class AccessEngine; + +namespace Amazon { + +class AmazonRoom : public Room { +private: +	bool _antOutFlag; + +	void roomSet(); + +	void roomMenu(); +protected: +	virtual void reloadRoom(); + +	virtual void reloadRoom1(); +public: +	AmazonRoom(AccessEngine *vm); +}; + +} // End of namespace Amazon + +} // End of namespace Access + +#endif /* ACCESS_AMAZON_ROOM_H */ diff --git a/engines/access/amazon/amazon_scripts.cpp b/engines/access/amazon/amazon_scripts.cpp new file mode 100644 index 0000000000..1d3e7b4b76 --- /dev/null +++ b/engines/access/amazon/amazon_scripts.cpp @@ -0,0 +1,36 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "common/scummsys.h" +#include "access/access.h" +#include "access/amazon/amazon_scripts.h" + +namespace Access { + +namespace Amazon { + +AmazonScripts::AmazonScripts(AccessEngine *vm) : Scripts(vm) { +} + +} // End of namespace Amazon + +} // End of namespace Access diff --git a/engines/access/amazon/amazon_scripts.h b/engines/access/amazon/amazon_scripts.h new file mode 100644 index 0000000000..08fbc3a0f2 --- /dev/null +++ b/engines/access/amazon/amazon_scripts.h @@ -0,0 +1,42 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef ACCESS_AMAZON_SCRIPTS_H +#define ACCESS_AMAZON_SCRIPTS_H + +#include "common/scummsys.h" +#include "access/scripts.h" + +namespace Access { + +namespace Amazon { + +class AmazonScripts: public Scripts { +public: +	AmazonScripts(AccessEngine *vm); +}; + +} // End of namespace Amazon + +} // End of namespace Access + +#endif /* ACCESS_AMAZON_SCRIPTS_H */ diff --git a/engines/access/module.mk b/engines/access/module.mk index 791abcc861..5c9203fde2 100644 --- a/engines/access/module.mk +++ b/engines/access/module.mk @@ -13,8 +13,11 @@ MODULE_OBJS := \  	resources.o \  	room.o \  	screen.o \ +	scripts.o \  	sound.o \ -	amazon\amazon_game.o +	amazon\amazon_game.o \ +	amazon\amazon_room.o \ +	amazon\amazon_scripts.o  # This module can be built as a plugin  ifeq ($(ENABLE_ACCESS), DYNAMIC_PLUGIN) diff --git a/engines/access/player.cpp b/engines/access/player.cpp index f7429bd9b5..a85df0320b 100644 --- a/engines/access/player.cpp +++ b/engines/access/player.cpp @@ -46,6 +46,14 @@ Player::Player(AccessEngine *vm): _vm(vm) {  	_playerOff = false;  } +void Player::load() { +	// TODO +} + +void Player::calcManScale() { +	// TODO +} +  void Player::walk() {  	warning("TODO: Player::walk");  } diff --git a/engines/access/player.h b/engines/access/player.h index 94ae9872b5..4d19601230 100644 --- a/engines/access/player.h +++ b/engines/access/player.h @@ -63,6 +63,10 @@ public:  public:  	Player(AccessEngine *vm); +	void load(); + +	void calcManScale(); +  	void walk();  }; diff --git a/engines/access/room.cpp b/engines/access/room.cpp index 25d3584ede..c3a3a9f8e2 100644 --- a/engines/access/room.cpp +++ b/engines/access/room.cpp @@ -28,6 +28,7 @@ namespace Access {  Room::Room(AccessEngine *vm) : _vm(vm) {  	_function = 0; +	_roomFlag = 0;  }  void Room::doRoom() { @@ -40,6 +41,8 @@ void Room::doRoom() {  			_vm->_oldRect.clear();  			_vm->_nextImage = 0;  			_vm->_numAnimTimers = 0; + +			reloadRoom();  		}  		reloadFlag = false; @@ -113,18 +116,63 @@ void Room::clearRoom() {  	// TODO  } +void Room::reloadRoom() { +	loadRoom(_vm->_roomNumber); + +	if (_roomFlag != 1) { +		_vm->_currentMan = _roomFlag; +		_vm->_currentManOld = _roomFlag; +		_vm->_manScaleOff = 0; +		 +		switch (_vm->_currentMan) { +		case 0: +			_vm->_man1 = _vm->_files->loadFile("MAN.LZ"); +			break; + +		case 2: +			_vm->_man1 = _vm->_files->loadFile("JMAN.LZ"); +			break; + +		case 3: +			_vm->_man1 = _vm->_files->loadFile("OVERHEAD.LZ"); +			_vm->_manScaleOff = 1; +			break; + +		default: +			break; +		} +	} + +	reloadRoom1(); +} +  void Room::reloadRoom1() {  	// TODO  } +void Room::loadRoom(int room) { +	// TODO +} +  void Room::roomLoop() {  	// TODO  }  void Room::doCommands() { +	// TODO +} + +void Room::setupRoom() { +	// TODO +} +void Room::setWallCodes() { +	// TODO  } +void Room::buildScreen() { +	// TODO +}  } // End of namespace Access diff --git a/engines/access/room.h b/engines/access/room.h index 3b1a3347f9..fd5e602348 100644 --- a/engines/access/room.h +++ b/engines/access/room.h @@ -31,11 +31,20 @@ class AccessEngine;  class Room {  private: +	void roomLoop(); +protected:  	AccessEngine *_vm; -	void roomLoop(); +	void setupRoom(); +	void setWallCodes(); +	void buildScreen(); + +	virtual void reloadRoom() = 0; + +	virtual void reloadRoom1() = 0;  public:  	int _function; +	int _roomFlag;  public:  	Room(AccessEngine *vm); @@ -45,7 +54,7 @@ public:  	void clearRoom(); -	void reloadRoom1(); +	void loadRoom(int room);  };  } // End of namespace Access diff --git a/engines/access/screen.cpp b/engines/access/screen.cpp index 8c87638937..8dcc9f1db9 100644 --- a/engines/access/screen.cpp +++ b/engines/access/screen.cpp @@ -207,4 +207,8 @@ void Screen::copyRects() {  	// TODO  } +void Screen::setBufferScan() { +	// TODO +} +  } // End of namespace Access diff --git a/engines/access/screen.h b/engines/access/screen.h index 5f9fff058e..1b03d261cf 100644 --- a/engines/access/screen.h +++ b/engines/access/screen.h @@ -50,8 +50,6 @@ private:  	int _topSkip, _bottomSkip;  	int _clipWidth, _clipHeight; -	void setPalette(); -  	void updatePalette();  	bool clip(Common::Rect &r); @@ -91,6 +89,8 @@ public:  	void loadPalette(Common::SeekableReadStream *stream); +	void setPalette(); +  	/**  	 * Copy a buffer to the screen  	 */ @@ -109,6 +109,8 @@ public:  	void copyBlocks();  	void copyRects(); + +	void setBufferScan();  };  } // End of namespace Access diff --git a/engines/access/scripts.cpp b/engines/access/scripts.cpp new file mode 100644 index 0000000000..e31cd0cf5c --- /dev/null +++ b/engines/access/scripts.cpp @@ -0,0 +1,42 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#include "common/scummsys.h" +#include "access/access.h" +#include "access/scripts.h" + +namespace Access { + +Scripts::Scripts(AccessEngine *vm) : _vm(vm) { +	_script = nullptr; +	_sequence = 0; +} + +void Scripts::searchForSeq() { +	// TODO +} + +void Scripts::executeCommand() { +	// TODO +} + +} // End of namespace Access diff --git a/engines/access/scripts.h b/engines/access/scripts.h new file mode 100644 index 0000000000..b3e898f512 --- /dev/null +++ b/engines/access/scripts.h @@ -0,0 +1,48 @@ +/* ScummVM - Graphic Adventure Engine + * + * ScummVM is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +#ifndef ACCESS_SCRIPTS_H +#define ACCESS_SCRIPTS_H + +#include "common/scummsys.h" + +namespace Access { + +class AccessEngine; + +class Scripts { +protected: +	AccessEngine *_vm; +public: +	byte *_script; +	int _sequence; +public: +	Scripts(AccessEngine *vm); + +	void searchForSeq(); +	 +	void executeCommand(); +}; + +} // End of namespace Access + +#endif /* ACCESS_SCRIPTS_H */  | 
