1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
/* 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 3 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, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef QUEEN_QUEEN_H
#define QUEEN_QUEEN_H
#include "engines/engine.h"
#include "common/random.h"
namespace Common {
class SeekableReadStream;
}
/**
* This is the namespace of the Queen engine.
*
* Status of this engine: ???
*
* Games using this engine:
* - Flight of the Amazon Queen
*/
namespace Queen {
struct GameStateHeader {
uint32 version;
uint32 flags;
uint32 dataSize;
char description[32];
};
class BamScene;
class BankManager;
class Command;
class Debugger;
class Display;
class Graphics;
class Grid;
class Input;
class Logic;
class Resource;
class Sound;
class Walk;
class QueenEngine : public Engine {
public:
QueenEngine(OSystem *syst);
~QueenEngine() override;
BamScene *bam() const { return _bam; }
BankManager *bankMan() const { return _bankMan; }
Command *command() const { return _command; }
Debugger *debugger() const { return _debugger; }
Display *display() const { return _display; }
Graphics *graphics() const { return _graphics; }
Grid *grid() const { return _grid; }
Input *input() const { return _input; }
Logic *logic() const { return _logic; }
Resource *resource() const { return _resource; }
Sound *sound() const { return _sound; }
Walk *walk() const { return _walk; }
Common::RandomSource randomizer;
void registerDefaultSettings();
void checkOptionSettings();
void readOptionSettings();
void writeOptionSettings();
int talkSpeed() const { return _talkSpeed; }
void talkSpeed(int speed) { _talkSpeed = speed; }
bool subtitles() const { return _subtitles; }
void subtitles(bool enable) { _subtitles = enable; }
void update(bool checkPlayerInput = false);
bool canLoadOrSave() const;
bool canLoadGameStateCurrently(Common::U32String *msg = nullptr) override;
bool canSaveGameStateCurrently(Common::U32String *msg = nullptr) override;
Common::Error saveGameState(int slot, const Common::String &desc, bool isAutosave = false) override;
Common::Error loadGameState(int slot) override;
int getAutosaveSlot() const override { return 99; }
Common::String getSaveStateName(int slot) const override;
void makeGameStateName(int slot, char *buf) const;
int getGameStateSlot(const char *filename) const;
void findGameStateDescriptions(char descriptions[100][32]);
Common::SeekableReadStream *readGameStateHeader(int slot, GameStateHeader *gsh);
enum {
SAVESTATE_CUR_VER = 1,
SAVESTATE_MAX_NUM = 100,
SAVESTATE_MAX_SIZE = 30000,
SLOT_LISTPREFIX = -2,
SLOT_AUTOSAVE = -1,
SLOT_QUICKSAVE = 0,
MIN_TEXT_SPEED = 4,
MAX_TEXT_SPEED = 100
};
protected:
// Engine APIs
Common::Error run() override;
bool hasFeature(EngineFeature f) const override;
void syncSoundSettings() override;
int _talkSpeed;
bool _subtitles;
uint32 _lastUpdateTime;
bool _gameStarted;
BamScene *_bam;
BankManager *_bankMan;
Command *_command;
Debugger *_debugger;
Display *_display;
Graphics *_graphics;
Grid *_grid;
Input *_input;
Logic *_logic;
Resource *_resource;
Sound *_sound;
Walk *_walk;
};
} // End of namespace Queen
#endif
|