diff options
Diffstat (limited to 'engines/agi/systemui.h')
-rw-r--r-- | engines/agi/systemui.h | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/engines/agi/systemui.h b/engines/agi/systemui.h new file mode 100644 index 0000000000..da9f09f5be --- /dev/null +++ b/engines/agi/systemui.h @@ -0,0 +1,119 @@ +/* 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 AGI_SYSTEMUI_H +#define AGI_SYSTEMUI_H + +namespace Agi { + +#define SYSTEMUI_SAVEDGAME_MAXIMUM_SLOTS 100 +#define SYSTEMUI_SAVEDGAME_SLOTS_ON_SCREEN 12 +#define SYSTEMUI_SAVEDGAME_DESCRIPTION_LEN 30 +#define SYSTEMUI_SAVEDGAME_DISPLAYTEXT_LEN 31 +#define SYSTEMUI_SAVEDGAME_DISPLAYTEXT_PREFIX_LEN 3 + +struct SystemUISavedGameEntry { + int16 slotId; + bool exists; + bool isValid; + char description[SYSTEMUI_SAVEDGAME_DESCRIPTION_LEN + 1]; // actual description + char displayText[SYSTEMUI_SAVEDGAME_DISPLAYTEXT_LEN + 1]; // modified description, meant for display purposes only +}; +typedef Common::Array<SystemUISavedGameEntry> SystemUISavedGameArray; + +class SystemUI { +public: + SystemUI(AgiEngine *vm, GfxMgr *gfx, TextMgr *text); + ~SystemUI(); + +private: + AgiEngine *_vm; + GfxMgr *_gfx; + PictureMgr *_picture; + TextMgr *_text; + +public: + const char *getStatusTextScore(); + const char *getStatusTextSoundOn(); + const char *getStatusTextSoundOff(); + + void pauseDialog(); + bool restartDialog(); + bool quitDialog(); + + const char *getInventoryTextNothing(); + const char *getInventoryTextYouAreCarrying(); + const char *getInventoryTextSelectItems(); + const char *getInventoryTextReturnToGame(); + + int16 figureOutAutomaticSaveGameSlot(const char *automaticSaveDescription); + int16 figureOutAutomaticRestoreGameSlot(const char *automaticSaveDescription); + + int16 askForSaveGameSlot(); + int16 askForRestoreGameSlot(); + bool askForSaveGameDescription(int16 slotId, Common::String &newDescription); + + void savedGameSlot_CharPress(int16 newChar); + +private: + int16 askForSavedGameSlot(const char *slotListText); + bool askForSavedGameVerification(const char *verifyText, const char *description); + + void createSavedGameDisplayText(char *destDisplayText, const char *actualDescription, int16 slotId); + void clearSavedGameSlots(); + void readSavedGameSlots(bool filterNonexistant, bool withAutoSaveSlot); + void figureOutAutomaticSavedGameSlot(const char *automaticSaveDescription, int16 &matchedGameSlotId, int16 &freshGameSlotId); + + void drawSavedGameSlots(); + void drawSavedGameSlotSelector(bool active); + + SystemUISavedGameArray _savedGameArray; + int16 _savedGameUpmostSlotNr; + int16 _savedGameSelectedSlotNr; + +private: + const char *_textStatusScore; + const char *_textStatusSoundOn; + const char *_textStatusSoundOff; + + const char *_textPause; + const char *_textRestart; + const char *_textQuit; + + const char *_textInventoryNothing; + const char *_textInventoryYouAreCarrying; + const char *_textInventorySelectItems; + const char *_textInventoryReturnToGame; + + const char *_textSaveGameSelectSlot; + const char *_textSaveGameEnterDescription; + const char *_textSaveGameVerify; + + const char *_textRestoreGameNoSlots; + const char *_textRestoreGameSelectSlot; + const char *_textRestoreGameError; + const char *_textRestoreGameVerify; +}; + +} // End of namespace Agi + +#endif /* AGI_SYSTEMUI_H */ |