diff options
Diffstat (limited to 'engines/kyra/gui_eob.h')
-rw-r--r-- | engines/kyra/gui_eob.h | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/engines/kyra/gui_eob.h b/engines/kyra/gui_eob.h new file mode 100644 index 0000000000..f6be18ffbb --- /dev/null +++ b/engines/kyra/gui_eob.h @@ -0,0 +1,165 @@ +/* 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. + * + */ + +#if defined(ENABLE_EOB) || defined(ENABLE_LOL) + +#ifndef KYRA_GUI_EOB_H +#define KYRA_GUI_EOB_H + +#include "kyra/gui.h" + +#ifdef ENABLE_EOB + +namespace Kyra { + +struct EoBRect16 { + int16 x1; + int16 y1; + uint16 x2; + uint16 y2; +}; + +class DarkMoonEngine; +class Screen_EoB; + +class GUI_EoB : public GUI { + friend class EoBCoreEngine; + friend class CharacterGenerator; +public: + GUI_EoB(EoBCoreEngine *vm); + virtual ~GUI_EoB(); + + void initStaticData() {} + + // button specific + void processButton(Button *button); + int processButtonList(Button *buttonList, uint16 inputFlags, int8 mouseWheel); + + // Non button based menu handling (main menu, character generation) + void simpleMenu_setup(int sd, int maxItem, const char *const *strings, int32 menuItemsMask, int unk, int lineSpacing); + int simpleMenu_process(int sd, const char *const *strings, void *b, int32 menuItemsMask, int unk); + + // Button based menus (camp menu, load menu) + void runCampMenu(); + bool runLoadMenu(int x, int y); + + bool confirmDialogue2(int dim, int id, int deflt); + void messageDialogue(int dim, int id, int buttonTextCol); + void messageDialogue2(int dim, int id, int buttonTextCol); + + void updateBoxFrameHighLight(int box); + + int getTextInput(char *dest, int x, int y, int destMaxLen, int textColor1, int textColor2, int cursorColor); + + // Transfer party + void transferWaitBox(); + Common::String transferTargetMenu(Common::Array<Common::String> &targets); + bool transferFileMenu(Common::String &targetName, Common::String &selection); + + // utilities for thumbnail creation + void createScreenThumbnail(Graphics::Surface &dst); + +private: + int simpleMenu_getMenuItem(int index, int32 menuItemsMask, int itemOffset); + void simpleMenu_flashSelection(const char *str, int x, int y, int color1, int color2, int color3); + void simpleMenu_initMenuItemsMask(int menuId, int maxItem, int32 menuItemsMask, int unk); + + bool runSaveMenu(int x, int y); + int selectSaveSlotDialogue(int x, int y, int id); + void runMemorizePrayMenu(int charIndex, int spellType); + void scribeScrollDialogue(); + bool restParty(); + + bool confirmDialogue(int id); + int selectCharacterDialogue(int id); + void displayTextBox(int id); + + Button *initMenu(int id); + void drawMenuButton(Button *b, bool clicked, bool highlight, bool noFill); + void drawMenuButtonBox(int x, int y, int w, int h, bool clicked, bool noFill); + void drawTextBox(int dim, int id); + void drawSaveSlotButton(int slot, int redrawBox, int textCol); + void memorizePrayMenuPrintString(int spellId, int bookPageIndex, int spellType, bool noFill, bool highLight); + void updateOptionsStrings(); + const char *getMenuString(int id); + + Button *linkButton(Button *list, Button *newbt); + void releaseButtons(Button *list); + + void setupSaveMenuSlots(); + int getHighlightSlot(); + void sortSaveSlots(); + + void restParty_updateRestTime(int hours, bool init); + + char **_menuStringsPrefsTemp; + char **_saveSlotStringsTemp; + int16 *_saveSlotIdTemp; + int _savegameOffset; + int16 _saveSlotX; + int16 _saveSlotY; + + EoBCoreEngine *_vm; + Screen_EoB *_screen; + + bool _pressFlag; + + Button *_specialProcessButton; + Button *_backupButtonList; + uint16 _flagsMouseLeft; + uint16 _flagsMouseRight; + uint16 _flagsModifier; + uint16 _progress; + uint16 _prcButtonUnk3; + uint16 _cflag; + + int _menuLineSpacing; + int _menuLastInFlags; + + uint8 _numPages; + uint8 _numVisPages; + int8 *_numAssignedSpellsOfType; + uint32 _clericSpellAvltyFlags; + uint32 _paladinSpellAvltyFlags; + bool _needRest; + + int _menuCur; + int _menuNumItems; + bool _charSelectRedraw; + + int _updateBoxIndex; + int _updateBoxColorIndex; + const uint8 *_highLightColorTable; + uint32 _highLightBoxTimer; + + static const EoBRect16 _highlightFrames[]; + static const uint8 _highlightColorTableVGA[]; + static const uint8 _highlightColorTableEGA[]; +}; + +} // End of namespace Kyra + +#endif // ENABLE_EOB + +#endif + +#endif // ENABLE_EOB || ENABLE_LOL |