From d09fbbabe66b583d06482a5b25f46b2eebf63d1e Mon Sep 17 00:00:00 2001 From: Benjamin Haisch Date: Tue, 16 Sep 2008 07:14:07 +0000 Subject: TOLTECS: - Added menu system prototype (may change later) - Added movie player (still incomplete, sound is not yet implemented) Both are not yet hooked to the engine. - Added code for microtile arrays (from the SEL - Simple DirectMedia Layer Extension Library project), under the LGPL This will be used as dirty rectangle "manager". This is experimental for now, it may be removed later. --- engines/toltecs/menu.h | 140 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 engines/toltecs/menu.h (limited to 'engines/toltecs/menu.h') diff --git a/engines/toltecs/menu.h b/engines/toltecs/menu.h new file mode 100644 index 0000000000..15b73b78f7 --- /dev/null +++ b/engines/toltecs/menu.h @@ -0,0 +1,140 @@ +/* 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 TOLTECS_MENU_H +#define TOLTECS_MENU_H + +#include "common/scummsys.h" +#include "common/endian.h" +#include "common/util.h" +#include "common/file.h" +#include "common/savefile.h" +#include "common/system.h" +#include "common/hash-str.h" +#include "common/events.h" +#include "common/keyboard.h" +#include "common/array.h" +#include "common/rect.h" +#include "common/str.h" + +#include "sound/audiostream.h" +#include "sound/mixer.h" +#include "sound/voc.h" +#include "sound/audiocd.h" + +#include "engines/engine.h" + +namespace Toltecs { + +const byte kFontColorMenuDefault = 229; +const byte kFontColorMenuActive = 255; + +class Widget { +public: + Widget(ToltecsEngine *vm, int x, int y); + virtual ~Widget(); + virtual void redraw(); + virtual Widget *getHoveredWidget(int mouseX, int mouseY); + virtual void calcDimensions(); + void setRect(Common::Rect rect); + //virtual void setHilighted(bool active); + virtual void onMouseEnter(); + virtual void onMouseLeave(); + virtual void onMouseMove(int mouseX, int mouseY); +protected: + ToltecsEngine *_vm; + Common::Rect _rect; + //bool _hilighted; +}; + +const int kLabelCentered = 1 << 1; +const int kLabelHideOnMovie = 1 << 2; + +class LabelWidget : public Widget { +public: + LabelWidget(ToltecsEngine *vm, int x, int y, Common::String caption, uint flags); + ~LabelWidget(); + void redraw(); + void calcDimensions(); + void setCaption(Common::String caption); + void setFontColor(byte fontColor); + void onMouseEnter(); + void onMouseLeave(); +protected: + Common::String _caption; + uint _flags; + byte _fontColor; +}; + +class VolumeControlWidget : public Widget { +public: + VolumeControlWidget(ToltecsEngine *vm, int x, int y, Common::String caption, uint flags); + ~VolumeControlWidget(); + void redraw(); + Widget *getHoveredWidget(int mouseX, int mouseY); + void calcDimensions(); + //void setHilighted(bool active); + void onMouseEnter(); + void onMouseLeave(); + void onMouseMove(int mouseX, int mouseY); +protected: + uint _flags; + LabelWidget *_label, *_up, *_down, *_indicator; + Widget *_activeWidget; +}; + +class MenuPage { +public: + MenuPage(Common::String caption); + ~MenuPage(); + void addWidget(Widget *widget); + void redraw(); + Widget *getHoveredWidget(int mouseX, int mouseY); +protected: + typedef Common::Array WidgetArray; + Common::String _caption; + WidgetArray _widgets; +}; + +class MenuSystem { + +public: + MenuSystem(ToltecsEngine *vm); + ~MenuSystem(); + + void update(); + +protected: + ToltecsEngine *_vm; + + //LabelWidget *label1, *label2; + MenuPage *_page; + + Widget *_activeWidget; + int16 _oldMouseX, _oldMouseY; + +}; + +} // End of namespace Toltecs + +#endif /* TOLTECS_MENU_H */ -- cgit v1.2.3