25#ifndef PEGASUS_PEGASUS_H
26#define PEGASUS_PEGASUS_H
28#include "common/list.h"
30#include "common/rect.h"
31#include "common/scummsys.h"
32#include "common/str-array.h"
33#include "common/system.h"
34#include "common/util.h"
36#include "engines/engine.h"
38#include "pegasus/graphics.h"
39#include "pegasus/hotspot.h"
40#include "pegasus/input.h"
41#include "pegasus/notification.h"
42#include "pegasus/timers.h"
43#include "pegasus/items/autodragger.h"
44#include "pegasus/items/inventory.h"
45#include "pegasus/items/itemdragger.h"
46#include "pegasus/neighborhood/neighborhood.h"
59struct PegasusGameDescription;
99 bool isDVDDemo()
const;
100 bool isOldDemo()
const;
101 bool isWindows()
const;
102 bool isLinux()
const;
103 void addIdler(
Idler *idler);
104 void removeIdler(
Idler *idler);
105 void addTimeBase(
TimeBase *timeBase);
106 void removeTimeBase(
TimeBase *timeBase);
107 void delayShell(TimeValue time, TimeScale scale);
108 void resetIntroTimer();
109 void introTimerExpired();
110 void refreshDisplay();
113 void checkCallBacks();
114 void createInterface();
115 void setGameMode(
const GameMode);
116 GameMode getGameMode()
const {
return _gameMode; }
118 uint getRandomNumber(uint max);
119 void shuffleArray(int32 *arr, int32 count);
121 HotspotList &getAllHotspots() {
return _allHotspots; }
124 void setLastEnergyValue(
const int32 value) { _savedEnergyValue = value; }
125 int32 getSavedEnergyValue() {
return _savedEnergyValue; }
128 Sound &getDeathSound() {
return _deathSound; }
129 void setEnergyDeathReason(
const DeathReason reason) { _deathReason = reason; }
130 DeathReason getEnergyDeathReason() {
return _deathReason; }
131 void resetEnergyDeathReason();
132 void die(
const DeathReason);
133 DeathReason getDeathReason() {
return _deathReason; }
134 void playEndMessage();
137 uint16 getSoundFXLevel() {
return _FXLevel; }
138 void setSoundFXLevel(uint16);
139 uint16 getAmbienceLevel() {
return _ambientLevel; }
140 void setAmbienceLevel(uint16);
143 ItemList &getAllItems() {
return _allItems; }
144 bool playerHasItem(
const Item *);
145 bool playerHasItemID(
const ItemID);
146 void checkFlashlight();
147 bool itemInLocation(
const ItemID,
const NeighborhoodID,
const RoomID,
const DirectionConstant);
150 InventoryItem *getCurrentInventoryItem();
151 bool itemInInventory(InventoryItem *);
152 bool itemInInventory(ItemID);
153 Inventory *getItemsInventory() {
return &_items; }
154 InventoryResult addItemToInventory(InventoryItem *);
155 void removeAllItemsFromInventory();
156 InventoryResult removeItemFromInventory(InventoryItem *);
157 uint32 countInventoryItems() {
return _items.getNumItems(); }
160 BiochipItem *getCurrentBiochip();
161 bool itemInBiochips(BiochipItem *);
162 bool itemInBiochips(ItemID);
163 Inventory *getBiochipsInventory() {
return &_biochips; }
164 void removeAllItemsFromBiochips();
165 InventoryResult addItemToBiochips(BiochipItem *);
175 void requestToggle(
bool request =
true) { _toggleRequested = request; }
176 bool toggleRequested()
const {
return _toggleRequested; }
177 bool isChattyAI() {
return _chattyAI; }
178 void setChattyAI(
bool);
179 bool isChattyArthur() {
return _chattyArthur; }
180 void setChattyArthur(
bool);
184 void jumpToNewEnvironment(
const NeighborhoodID,
const RoomID,
const DirectionConstant);
185 NeighborhoodID getCurrentNeighborhoodID()
const;
188 void dragItem(
const Input &, Item *, DragType);
189 bool isDragging()
const {
return _dragType != kDragNoDrag; }
190 DragType getDragType()
const {
return _dragType; }
191 Item *getDraggingItem()
const {
return _draggingItem; }
192 void dragTerminated(
const Input &);
193 void autoDragItemIntoRoom(Item *, Sprite *);
194 void autoDragItemIntoInventory(Item *, Sprite*);
197 void makeContinuePoint();
198 bool swapSaveAllowed(
bool allow) {
199 bool old = _saveAllowed;
200 _saveAllowed = allow;
203 bool swapLoadAllowed(
bool allow) {
204 bool old = _loadAllowed;
205 _loadAllowed = allow;
208 void requestSave() { _saveRequested =
true; }
209 bool saveRequested()
const {
return _saveRequested; }
210 void requestLoad() { _loadRequested =
true; }
211 bool loadRequested()
const {
return _loadRequested; }
219 void receiveNotification(
Notification *notification,
const NotificationFlags flags)
override;
221 void handleInput(
const Input &input,
const Hotspot *cursorSpot)
override;
222 bool isClickInput(
const Input &,
const Hotspot *)
override;
223 InputBits getClickFilter()
override;
225 void clickInHotspot(
const Input &,
const Hotspot *)
override;
226 void activateHotspots(
void)
override;
229 bool wantsCursor()
override;
234 void stopIntroTimer();
235 bool detectOpeningClosingDirectory();
246 void createItem(ItemID itemID, NeighborhoodID neighborhoodID, RoomID roomID, DirectionConstant direction);
249 ItemID _currentItemID;
250 ItemID _currentBiochipID;
251 void destroyInventoryItem(
const ItemID itemID);
252 ItemID pickItemToDestroy();
260 void loadFromContinuePoint();
263 bool _saveAllowed, _loadAllowed;
267 bool _saveRequested, _loadRequested;
275 void throwAwayEverything();
276 void shellGameInput(
const Input &input,
const Hotspot *cursorSpot);
279 uint getNeighborhoodCD(
const NeighborhoodID neighborhood)
const;
281 InputBits getInputFilter()
override;
285 void doGameMenuCommand(
const GameMenuCommand);
286 void doInterfaceOverview();
288 void pauseMenu(
bool menuUp);
290 bool _heardOverviewVoice;
293 int32 _savedEnergyValue;
296 DeathReason _deathReason;
301 bool _toggleRequested;
308 void performJump(NeighborhoodID start);
310 void startNeighborhood();
314 uint16 _ambientLevel;
319 bool _switchModesSync;
320 void switchGameMode(
const GameMode,
const GameMode);
321 bool canSwitchGameMode(
const GameMode,
const GameMode);
331 void toggleInventoryDisplay();
332 void toggleBiochipDisplay();
333 void raiseInventoryDrawer();
334 void raiseBiochipDrawer();
335 void lowerInventoryDrawer();
336 void lowerBiochipDrawer();
337 void raiseInventoryDrawerSync();
338 void raiseBiochipDrawerSync();
339 void lowerInventoryDrawerSync();
340 void lowerBiochipDrawerSync();
341 void showInfoScreen();
342 void hideInfoScreen();
344 Movie _bigInfoMovie, _smallInfoMovie;
Definition: macresman.h:126
EngineFeature
Definition: engine.h:282
Definition: graphics.h:38
Definition: autodragger.h:34
Definition: graphics.h:44
Definition: hotspot.h:119
Definition: inventory.h:41
Definition: itemdragger.h:72
Definition: itemlist.h:41
Definition: neighborhood.h:111
Definition: notification.h:53
Definition: notification.h:103
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
bool hasFeature(EngineFeature f) const override
void pauseEngineIntern(bool pause) override
Common::Error loadGameState(int slot) override
Common::Error run() override
Definition: elements.h:226
Definition: elements.h:168
Definition: video_decoder.h:53
Definition: algorithm.h:29
Definition: atari-cursor.h:35
Definition: detection.h:29