diff options
Diffstat (limited to 'engines/m4/gui.h')
-rw-r--r-- | engines/m4/gui.h | 453 |
1 files changed, 0 insertions, 453 deletions
diff --git a/engines/m4/gui.h b/engines/m4/gui.h deleted file mode 100644 index 2b673d624c..0000000000 --- a/engines/m4/gui.h +++ /dev/null @@ -1,453 +0,0 @@ -/* 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 M4_GUI_H -#define M4_GUI_H - -#include "common/list.h" -#include "common/rect.h" - -#include "m4/viewmgr.h" -#include "m4/events.h" -#include "m4/globals.h" -#include "m4/graphics.h" -#include "m4/saveload.h" -#include "m4/sprite.h" -#include "m4/assets.h" - -namespace M4 { - -class GUIObject; -class MenuObject; -class GUIObjectButton; -class SpriteAsset; -class View; - -enum MenuType {GAME_MENU, OPTIONS_MENU, SAVE_MENU, LOAD_MENU, MAIN_MENU}; - -enum { - BTNID_QUIT = 1, - BTNID_OPTIONS = 2, - BTNID_RESUME = 3, - BTNID_SAVE = 4, - BTNID_LOAD = 5, - BTNID_MAIN = 6, - - OPTIONID_DONE = 1, - OPTIONID_CANCEL = 2, - OPTIONID_HSLIDER_DIGI = 3, - OPTIONID_HSLIDER_MIDI = 4, - - SAVELOADID_SAVE = 1, - SAVELOADID_CANCELSAVE = 2, - SAVELOADID_LOAD = 3, - SAVELOADID_CANCELLOAD = 4, - - SLTAG_SAVELOAD = 100, - SLTAG_SAVELOAD_LABEL = 101, - SLTAG_CANCEL = 102, - SLTAG_VSLIDER = 103, - SLTAG_THUMBNAIL = 104, - - SLTAG_SLOTS_START = 1001, - SLTAG_TEXTFIELD = 2000 -}; - -enum ObjectType { - OBJTYPE_BUTTON, - - OBJTYPE_SLIDER, - OBJTYPE_OM_SWITCH_ON, - OBJTYPE_OM_SWITCH_OFF, - OBJTYPE_OM_DONE, - OBJTYPE_OM_CANCEL, - - OBJTYPE_SL_SAVE, - OBJTYPE_SL_LOAD, - OBJTYPE_SL_CANCEL, - OBJTYPE_SL_TEXT -}; - -enum GameMenuSpriteType { - GM_DIALOG_BOX, - - GM_BUTTON_GREYED, - GM_BUTTON_NORMAL, - GM_BUTTON_MOUSEOVER, - GM_BUTTON_PRESSED -}; - -enum OptionMenuSpriteType { - OM_DIALOG_BOX, - - OM_SLIDER_BTN_NORMAL, - OM_SLIDER_BTN_MOUSEOVER, - OM_SLIDER_BTN_PRESSED, - OM_SLIDER_BAR, - OM_DONE_BTN_GREYED, - OM_DONE_BTN_NORMAL, - OM_DONE_BTN_MOUSEOVER, - OM_DONE_BTN_PRESSED, - OM_CANCEL_BTN_NORMAL, - OM_CANCEL_BTN_MOUSEOVER, - OM_CANCEL_BTN_PRESSED -}; - - -enum SaveLoadSpriteType { - SL_DIALOG_BOX, - SL_EMPTY_THUMBNAIL, - - SL_SAVE_BTN_GREYED, - SL_SAVE_BTN_NORMAL, - SL_SAVE_BTN_MOUSEOVER, - SL_SAVE_BTN_PRESSED, - - SL_LOAD_BTN_GREYED, - SL_LOAD_BTN_NORMAL, - SL_LOAD_BTN_MOUSEOVER, - SL_LOAD_BTN_PRESSED, - - SL_CANCEL_BTN_NORMAL, - SL_CANCEL_BTN_MOUSEOVER, - SL_CANCEL_BTN_PRESSED, - - SL_UP_BTN_GREYED, - SL_UP_BTN_NORMAL, - SL_UP_BTN_MOUSEOVER, - SL_UP_BTN_PRESSED, - - SL_DOWN_BTN_GREYED, - SL_DOWN_BTN_NORMAL, - SL_DOWN_BTN_MOUSEOVER, - SL_DOWN_BTN_PRESSED, - - SL_SAVE_LABEL, - SL_LOAD_LABEL, - - SL_SLIDER_BTN_NORMAL, - SL_SLIDER_BTN_MOUSEOVER, - SL_SLIDER_BTN_PRESSED, - - SL_LINE_NORMAL, - SL_LINE_MOUSEOVER, - SL_LINE_PRESSED, - - SL_SCROLLBAR -}; - -enum TextColors { - TEXT_COLOR_NORMAL = 1, - TEXT_COLOR_GREYED = 1, - TEXT_COLOR_MOUSEOVER = 2, - TEXT_COLOR_PRESSED = 2, - - TEXT_COLOR_GREYED_HILIGHT = 236, - TEXT_COLOR_GREYED_FOREGROUND = 131, - TEXT_COLOR_GREYED_SHADOW = 186, - - TEXT_COLOR_NORMAL_HILIGHT = 129, - TEXT_COLOR_NORMAL_FOREGROUND = 130, - TEXT_COLOR_NORMAL_SHADOW = 236, - - TEXT_COLOR_MOUSEOVER_HILIGHT = 129, - TEXT_COLOR_MOUSEOVER_FOREGROUND = 130, - TEXT_COLOR_MOUSEOVER_SHADOW = 236, - - TEXT_COLOR_PRESSED_HILIGHT = 236, - TEXT_COLOR_PRESSED_FOREGROUND = 130, - TEXT_COLOR_PRESSED_SHADOW = 129 -}; - -#define MENU_SS_FIELD_NORMAL 5 -#define MENU_SS_FIELD_MOUSEOVER 6 - -#define MENU_SS_H_SLIDER_NORMAL 5 -#define MENU_SS_H_SLIDER_MOUSE_OVER 6 -#define MENU_SS_H_SLIDER_PRESSED 7 - -#define MENU_SS_SWITCH_ON_NORMAL 8 -#define MENU_SS_SWITCH_ON_MOUSEOVER 9 -#define MENU_SS_SWITCH_ON_PRESSED 13 - -#define MENU_SS_SWITCH_OFF_PRESSED 10 -#define MENU_SS_SWITCH_OFF_NORMAL 11 -#define MENU_SS_SWITCH_OFF_MOUSEOVER 12 - -#define MENU_GUI "gui menu" -#define MENU_GAME "gamemenu" -#define MENU_OPTIONS "opmenu" -#define MENU_ERROR "errmenu" -#define MENU_SAVELOAD "slmenu" -#define MENU_BURGMAIN "903menu" -#define MENU_BURGDEMOMAIN "901menu" - -#define SL_NUM_VISIBLE_SLOTS 8 -#define SL_THUMBNAIL_WIDTH 215 -#define SL_THUMBNAIL_HEIGHT 162 - -enum MenuObjectState {OS_GREYED = 0, OS_NORMAL = 1, OS_MOUSEOVER = 2, OS_PRESSED = 3}; - -class DialogView : public View { -public: - DialogView(MadsM4Engine *Vm, const Common::Rect &viewBounds, bool transparent = false): - View(Vm, viewBounds, transparent) {} - DialogView(MadsM4Engine *Vm, int x = 0, int y = 0, bool transparent = false): - View(Vm, x, y, transparent) {} - - MadsM4Engine *vm() { return _vm; } - virtual SpriteAsset *sprites() = 0; - virtual MenuType getMenuType() = 0; - virtual MenuObject *getItem(int objectId) { return NULL; } - virtual void refresh(const Common::Rect &areaRect) {} - virtual void close(); - - int _topSaveSlotIndex, _selectedSlot; - int _highlightedSlot; - bool _deleteSaveDesc; - M4Surface *_savegameThumbnail; -}; - -class GUIObject { -protected: - View *_parent; - Common::Rect _bounds; - M4Surface *_background; -public: - GUIObject(View *owner, const Common::Rect &bounds); - virtual ~GUIObject() {} - - bool isInside(int x, int y) { return _bounds.contains(x, y); } - Common::Rect getBounds() const { return _bounds; } - - virtual void onRefresh() {} -}; - -class MenuObject : public GUIObject { -public: - typedef void (*Callback)(DialogView *view, MenuObject *item); -protected: - MenuObject::Callback _callback; - ObjectType _objectType; - MenuObjectState _objectState; - bool _transparent; - int _objectId; -public: - MenuObject(DialogView *owner, int objectId, int xs, int ys, int width, int height, - bool greyed = false, bool transparent = false); - ~MenuObject(); - - DialogView *parent() { return (DialogView *)_parent; } - MenuObjectState getState() { return _objectState; } - virtual void setState(MenuObjectState state) { - _objectState = state; - onRefresh(); - } - int getObjectId() { return _objectId; } - - void onExecute(); - virtual bool onEvent(M4EventType event, int32 param, int x, int y, MenuObject *¤tItem) { return false; } -}; - -class MenuButton : public MenuObject { -public: - MenuButton(DialogView *owner, int buttonId, int xs, int ys, int width, int height, - Callback callbackFn = NULL, bool greyed = false, bool transparent = false, - ObjectType buttonType = OBJTYPE_BUTTON); - - void onRefresh(); - bool onEvent(M4EventType event, int32 param, int x, int y, MenuObject *¤tItem); - bool getToggled() { return _objectType == OBJTYPE_OM_SWITCH_ON; } -}; - -enum MenuHorizSliderState {HSLIDER_THUMB_NORMAL = 0, HSLIDER_THUMB_MOUSEOVER = 1, HSLIDER_THUMB_PRESSED = 2}; -#define SLIDER_BAR_COLOR 129 - -class MenuHorizSlider : public MenuObject { -protected: - MenuHorizSliderState _sliderState; - Common::Point _thumbSize; - int _maxThumbX; - int _percent; - int _thumbX; -public: - MenuHorizSlider(DialogView *owner, int sliderId, int xs, int ys, int width, int height, - int initialPercentage, Callback callbackFn = NULL, bool transparent = false); - - void onRefresh(); - bool onEvent(M4EventType event, int32 param, int x, int y, MenuObject *¤tItem); - int percent() { return _percent; } -}; - -enum MenuVertSliderState { - VSLIDER_NONE = 0x0000, - VSLIDER_UP = 0x0010, - VSLIDER_PAGE_UP = 0x0020, - VSLIDER_THUMBNAIL = 0x0030, - VSLIDER_PAGE_DOWN = 0x0040, - VSLIDER_DOWN = 0x0050 -}; - -class MenuVertSlider : public MenuObject { -protected: - MenuVertSliderState _sliderState; - Common::Point _thumbSize; - int _percent; - int _thumbY; - int _minThumbY; - int _maxThumbY; - - MenuVertSliderState getSliderArea(int y); - void updateThumbnails() {} -public: - MenuVertSlider(DialogView *owner, int sliderId, int xs, int ys, int width, int height, - int initialPercentage, Callback callbackFn = NULL, bool transparent = false); - - void onRefresh(); - bool onEvent(M4EventType event, int32 param, int x, int y, MenuObject *¤tItem); - MenuVertSliderState sliderState() { return _sliderState; } - int percent() { return _percent; } - void setPercentage(int value); -}; - -class MenuMessage : public MenuObject { -public: - MenuMessage(DialogView *owner, int objectId, int x, int y, int w, int h, bool transparent = false); - - void onRefresh(); -}; - -class MenuImage : public MenuObject { -private: - M4Surface *_sprite; -public: - MenuImage(DialogView *owner, int objectId, int xs, int ys, int width, int height, - M4Surface *image, bool transparent = false); - - void onRefresh(); - const M4Surface *sprite() { return _sprite; } - void setSprite(M4Surface *v) { - _sprite = v; - onRefresh(); - } -}; - -class MenuSaveLoadText : public MenuButton { -private: - bool _loadFlag; - const char *_displayText; - int _displayValue; - int _index; - bool _visible; -public: - MenuSaveLoadText(DialogView *owner, int textId, int xs, int ys, int width, int height, - Callback callbackFn = NULL, bool greyed = false, bool transparent = false, - bool loadFlag = false, const char *displayText = NULL, int displayValue = 0); - - void onRefresh(); - bool onEvent(M4EventType event, int32 param, int x, int y, MenuObject *¤tItem); - void setDisplay(int value, const char *text) { _displayValue = value; _displayText = text; } - int getIndex() { return _index; } - const char *getText() { return _displayText; } - bool getVisible() const { return _visible; } - void setVisible(bool value); -}; - -class MenuTextField : public MenuObject { -private: - int _displayValue; - char _displayText[MAX_SAVEGAME_NAME]; - int _pixelWidth; - char *_promptEnd; - char *_cursor; -public: - MenuTextField(DialogView *owner, int fieldId, int xs, int ys, int width, int height, - bool greyed, Callback callbackFn = NULL, const char *displayText = NULL, - int displayValue = 0, bool transparent = true); - - void onRefresh(); - bool onEvent(M4EventType event, int32 param, int x, int y, MenuObject *¤tItem); - - const char *getText() { return _displayText; } - int getDisplayValue() { return _displayValue; } - -}; - -class GUIRect : public GUIObject { -private: - int _tag; -public: - GUIRect(View *owner, const Common::Rect &bounds, int tag): GUIObject(owner, bounds) { _tag = tag; } - - virtual bool onEvent(M4EventType eventType, int32 param, int x, int y, GUIObject *¤tItem) { return false; } - int getTag() const { return _tag; } -}; - -enum GUIButtonState {BUTTON_NORMAL, BUTTON_MOUSEOVER, BUTTON_PRESSED}; - -class GUIButton : public GUIRect { -protected: - M4Surface *_normalSprite, *_mouseOverSprite, *_pressedSprite; - GUIButtonState _buttonState; - bool _visible; - bool _tracking; -public: - GUIButton(View *owner, const Common::Rect &bounds, int tag, - M4Surface *normalSprite, M4Surface *mouseOverSprite, M4Surface *pressedSprite); - - void onRefresh(); - bool onEvent(M4EventType eventType, int32 param, int x, int y, GUIObject *¤tItem); - GUIButtonState getState() const { return _buttonState; } -}; - -class GUITextField : public GUIRect { -private: - Common::String _text; -public: - GUITextField(View *owner, const Common::Rect &bounds); - void setText(const char *value) { - _text = value; - onRefresh(); - } - - void onRefresh(); -}; - - -class Dialogs { -public: - void keyMouseCollision() {} -}; - -class GameInterfaceView : public View { -public: - GameInterfaceView(MadsM4Engine *vm, const Common::Rect &rect): View(vm, rect) {} - ~GameInterfaceView() {} - - virtual void initialize() {} - virtual void setSelectedObject(int objectNumber) {} - virtual void addObjectToInventory(int objectNumber) {} -}; - -} - -#endif |