mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-03 01:15:58 +00:00
ACCESS: Add scripts classes and Amazon room setup
This commit is contained in:
parent
7d605ce573
commit
8e43a6c528
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
121
engines/access/amazon/amazon_room.cpp
Normal file
121
engines/access/amazon/amazon_room.cpp
Normal file
@ -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
|
54
engines/access/amazon/amazon_room.h
Normal file
54
engines/access/amazon/amazon_room.h
Normal file
@ -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 */
|
36
engines/access/amazon/amazon_scripts.cpp
Normal file
36
engines/access/amazon/amazon_scripts.cpp
Normal file
@ -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
|
42
engines/access/amazon/amazon_scripts.h
Normal file
42
engines/access/amazon/amazon_scripts.h
Normal file
@ -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 */
|
@ -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)
|
||||
|
@ -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");
|
||||
}
|
||||
|
@ -63,6 +63,10 @@ public:
|
||||
public:
|
||||
Player(AccessEngine *vm);
|
||||
|
||||
void load();
|
||||
|
||||
void calcManScale();
|
||||
|
||||
void walk();
|
||||
};
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -207,4 +207,8 @@ void Screen::copyRects() {
|
||||
// TODO
|
||||
}
|
||||
|
||||
void Screen::setBufferScan() {
|
||||
// TODO
|
||||
}
|
||||
|
||||
} // End of namespace Access
|
||||
|
@ -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
|
||||
|
42
engines/access/scripts.cpp
Normal file
42
engines/access/scripts.cpp
Normal file
@ -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
|
48
engines/access/scripts.h
Normal file
48
engines/access/scripts.h
Normal file
@ -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 */
|
Loading…
x
Reference in New Issue
Block a user