aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/gui.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/gui.h')
-rw-r--r--engines/kyra/gui.h169
1 files changed, 18 insertions, 151 deletions
diff --git a/engines/kyra/gui.h b/engines/kyra/gui.h
index 6e9606f1de..854f10e85d 100644
--- a/engines/kyra/gui.h
+++ b/engines/kyra/gui.h
@@ -40,10 +40,10 @@ struct Button {
typedef Common::Functor1<Button *, int> CallbackFunctor;
typedef Common::SharedPtr<CallbackFunctor> Callback;
- Button() : nextButton(0), index(0), keyCode(0), keyCode2(0), data0Val1(0), data1Val1(0), data2Val1(0), flags(0),
+ Button() : nextButton(0), index(0), keyCode(0), keyCode2(0), data0Val1(0), data1Val1(0), data2Val1(0), data3Val1(0), flags(0),
data0ShapePtr(0), data1ShapePtr(0), data2ShapePtr(0), data0Callback(), data1Callback(), data2Callback(),
dimTableIndex(0), x(0), y(0), width(0), height(0), data0Val2(0), data0Val3(0), data1Val2(0), data1Val3(0),
- data2Val2(0), data2Val3(0), flags2(0), mouseWheel(0), buttonCallback(), arg(0) {}
+ data2Val2(0), data2Val3(0), data3Val2(0), data3Val3(0), flags2(0), mouseWheel(0), buttonCallback(), extButtonDef(0), arg(0) {}
Button *nextButton;
uint16 index;
@@ -54,6 +54,7 @@ struct Button {
byte data0Val1;
byte data1Val1;
byte data2Val1;
+ byte data3Val1;
uint16 flags;
@@ -78,63 +79,18 @@ struct Button {
uint8 data2Val2;
uint8 data2Val3;
+ uint8 data3Val2;
+ uint8 data3Val3;
+
uint16 flags2;
int8 mouseWheel;
Callback buttonCallback;
- uint16 arg;
-};
-
-struct MenuItem {
- bool enabled;
-
- const char *itemString;
- uint16 itemId;
-
- int16 x, y;
- uint16 width, height;
+ const void *extButtonDef;
- uint8 textColor, highlightColor;
-
- int16 titleX;
-
- uint8 color1, color2;
- uint8 bkgdColor;
-
- Button::Callback callback;
-
- int16 saveSlot;
-
- const char *labelString;
- uint16 labelId;
- int16 labelX, labelY;
-
- uint16 keyCode;
-};
-
-struct Menu {
- int16 x, y;
- uint16 width, height;
-
- uint8 bkgdColor;
- uint8 color1, color2;
-
- const char *menuNameString;
- uint16 menuNameId;
-
- uint8 textColor;
- int16 titleX, titleY;
-
- uint8 highlightedItem;
-
- uint8 numberOfItems;
-
- int16 scrollUpButtonX, scrollUpButtonY;
- int16 scrollDownButtonX, scrollDownButtonY;
-
- MenuItem item[7];
+ uint16 arg;
};
class Screen;
@@ -143,128 +99,39 @@ class TextDisplayer;
class GUI {
public:
GUI(KyraEngine_v1 *vm);
- virtual ~GUI() {}
+ virtual ~GUI();
// button specific
- virtual Button *addButtonToList(Button *list, Button *newButton);
-
virtual void processButton(Button *button) = 0;
virtual int processButtonList(Button *buttonList, uint16 inputFlags, int8 mouseWheel) = 0;
- virtual int redrawShadedButtonCallback(Button *button);
- virtual int redrawButtonCallback(Button *button);
-
- // menu specific
- virtual void initMenuLayout(Menu &menu);
- void initMenu(Menu &menu);
-
- void processHighlights(Menu &menu);
-
// utilities for thumbnail creation
virtual void createScreenThumbnail(Graphics::Surface &dst) = 0;
+ void notifyUpdateSaveSlotsList() { _saveSlotsListUpdateNeeded = true; }
+
protected:
KyraEngine_v1 *_vm;
Screen *_screen;
- TextDisplayer *_text;
-
- Button *_menuButtonList;
- bool _displayMenu;
- bool _displaySubMenu;
- bool _cancelSubMenu;
-
- virtual void printMenuText(const char *str, int x, int y, uint8 c0, uint8 c1, uint8 c2);
- virtual int getMenuCenterStringX(const char *str, int x1, int x2);
-
- Button::Callback _redrawShadedButtonFunctor;
- Button::Callback _redrawButtonFunctor;
-
- virtual Button *getButtonListData() = 0;
- virtual Button *getScrollUpButton() = 0;
- virtual Button *getScrollDownButton() = 0;
-
- virtual Button::Callback getScrollUpButtonHandler() const = 0;
- virtual Button::Callback getScrollDownButtonHandler() const = 0;
-
- virtual uint8 defaultColor1() const = 0;
- virtual uint8 defaultColor2() const = 0;
-
- virtual const char *getMenuTitle(const Menu &menu) = 0;
- virtual const char *getMenuItemTitle(const MenuItem &menuItem) = 0;
- virtual const char *getMenuItemLabel(const MenuItem &menuItem) = 0;
-
- void updateAllMenuButtons();
- void updateMenuButton(Button *button);
- virtual void updateButton(Button *button);
-
- void redrawText(const Menu &menu);
- void redrawHighlight(const Menu &menu);
// The engine expects a list of contiguous savegame indices.
// Since ScummVM's savegame indices aren't, we re-index them.
// The integers stored in _saveSlots are ScummVM savegame indices.
Common::Array<int> _saveSlots;
- void updateSaveList(bool excludeQuickSaves = false);
+ void updateSaveFileList(Common::String targetName, bool excludeQuickSaves = false);
int getNextSavegameSlot();
+ void updateSaveSlotsList(Common::String targetName, bool force = false);
virtual void sortSaveSlots();
uint32 _lastScreenUpdate;
- Common::KeyState _keyPressed;
- void checkTextfieldInput();
-};
-
-class Movie;
+ char **_savegameList;
+ int _savegameListSize;
+ bool _saveSlotsListUpdateNeeded;
-class MainMenu {
-public:
- MainMenu(KyraEngine_v1 *vm);
- virtual ~MainMenu() {}
-
- struct Animation {
- Animation() : anim(0), startFrame(0), endFrame(0), delay(0) {}
-
- Movie *anim;
- int startFrame;
- int endFrame;
- int delay;
- };
-
- struct StaticData {
- const char *strings[5];
-
- uint8 menuTable[7];
- uint8 colorTable[4];
-
- Screen::FontId font;
- uint8 altColor;
- };
-
- void init(StaticData data, Animation anim);
- int handle(int dim);
-private:
- KyraEngine_v1 *_vm;
- Screen *_screen;
- OSystem *_system;
-
- StaticData _static;
- struct AnimIntern {
- int curFrame;
- int direction;
- };
- Animation _anim;
- AnimIntern _animIntern;
-
- uint32 _nextUpdate;
-
- void updateAnimation();
- void draw(int select);
- void drawBox(int x, int y, int w, int h, int fill);
- bool getInput();
-
- void printString(const char *string, int x, int y, int col1, int col2, int flags, ...) GCC_PRINTF(2, 8);
+ Common::KeyState _keyPressed;
};
-} // end of namesapce Kyra
+} // End of namespace Kyra
#endif