diff options
Diffstat (limited to 'engines/agi/systemui.h')
-rw-r--r-- | engines/agi/systemui.h | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/engines/agi/systemui.h b/engines/agi/systemui.h new file mode 100644 index 0000000000..283de8794c --- /dev/null +++ b/engines/agi/systemui.h @@ -0,0 +1,167 @@ +/* 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; + +struct SystemUIButtonEntry { + Common::Rect rect; + const char *text; + int16 textWidth; + bool active; + bool isDefault; +}; +typedef Common::Array<SystemUIButtonEntry> SystemUIButtonArray; + +class SystemUI { +public: + SystemUI(AgiEngine *vm, GfxMgr *gfx, TextMgr *text); + ~SystemUI(); + +private: + AgiEngine *_vm; + GfxMgr *_gfx; + TextMgr *_text; + +public: + const char *getStatusTextScore(); + const char *getStatusTextSoundOn(); + const char *getStatusTextSoundOff(); + + void pauseDialog(); + bool restartDialog(); + bool quitDialog(); + +private: + + +public: + const char *getInventoryTextNothing(); + const char *getInventoryTextYouAreCarrying(); + const char *getInventoryTextSelectItems(); + const char *getInventoryTextReturnToGame(); + + bool askForCommand(Common::String &commandText); + + int16 figureOutAutomaticSaveGameSlot(const char *automaticSaveDescription); + int16 figureOutAutomaticRestoreGameSlot(const char *automaticSaveDescription); + + int16 askForSaveGameSlot(); + int16 askForRestoreGameSlot(); + bool askForSaveGameDescription(int16 slotId, Common::String &newDescription); + + void savedGameSlot_KeyPress(uint16 newKey); + +private: + int16 askForSavedGameSlot(const char *slotListText); + bool askForSavedGameVerification(const char *verifyText, const char *verifyButton1, const char *verifyButton2, const char *actualDescription, int16 slotId); + + bool askForVerification(const char *verifyText, const char *button1Text, const char *button2Text, bool continueOnMessageBoxClick); + + void createSavedGameDisplayText(char *destDisplayText, const char *actualDescription, int16 slotId, bool fillUpWithSpaces); + 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: + SystemUIButtonArray _buttonArray; + + Common::Rect createRect(int16 x, int16 adjX, int16 y, int16 adjY, int16 width, int16 adjWidth, int16 height, int16 adjHeight); + //void moveRect(int16 x, int16 adjX, int16 y, int16 adjY); + + void drawButton(SystemUIButtonEntry *button); + void drawButtonAppleIIgs(SystemUIButtonEntry *buttonEntry); + void drawButtonAppleIIgsEdgePixels(int16 x, int16 adjX, int16 y, int16 adjY, byte *edgeBitmap, bool mirrored, bool upsideDown); + void drawButtonAmiga(SystemUIButtonEntry *buttonEntry); + void drawButtonAtariST(SystemUIButtonEntry *buttonEntry); + +public: + void askForVerificationKeyPress(uint16 newKey); + +private: + bool _askForVerificationContinueOnMessageBoxClick; + bool _askForVerificationCancelled; + int16 _askForVerificationMouseLockedButtonNr; + int16 _askForVerificationMouseActiveButtonNr; + +private: + const char *_textStatusScore; + const char *_textStatusSoundOn; + const char *_textStatusSoundOff; + + const char *_textEnterCommand; + + const char *_textPause; + const char *_textPauseButton; + const char *_textRestart; + const char *_textRestartButton1; + const char *_textRestartButton2; + const char *_textQuit; + const char *_textQuitButton1; + const char *_textQuitButton2; + + const char *_textInventoryNothing; + const char *_textInventoryYouAreCarrying; + const char *_textInventorySelectItems; + const char *_textInventoryReturnToGame; + + const char *_textSaveGameSelectSlot; + const char *_textSaveGameEnterDescription; + const char *_textSaveGameVerify; + const char *_textSaveGameVerifyButton1; + const char *_textSaveGameVerifyButton2; + + const char *_textRestoreGameNoSlots; + const char *_textRestoreGameSelectSlot; + const char *_textRestoreGameError; + const char *_textRestoreGameVerify; + const char *_textRestoreGameVerifyButton1; + const char *_textRestoreGameVerifyButton2; +}; + +} // End of namespace Agi + +#endif /* AGI_SYSTEMUI_H */ |