ScummVM API documentation
menu.h
1/* ScummVM - Graphic Adventure Engine
2 *
3 * ScummVM is the legal property of its developers, whose names
4 * are too numerous to list here. Please refer to the COPYRIGHT
5 * file distributed with this source distribution.
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 */
21
22#ifndef AGI_MENU_H
23#define AGI_MENU_H
24
25namespace Agi {
26
28 Common::String text;
29 int16 textLen;
30
31 int16 row;
32 int16 column;
33
34 int16 itemCount; // total number of menu items
35 int16 firstItemNr; // first menu item number, points into _itemArray[]
36
37 int16 selectedItemNr; // currently selected menu item
38
39 int16 maxItemTextLen; // maximum text length of all menu items
40};
42
44 Common::String text;
45 int16 textLen;
46
47 int16 row;
48 int16 column;
49
50 bool enabled; // enabled-state, set by scripts
51 uint16 controllerSlot; // controller to trigger, when item is executed
52};
54
55class GfxMenu {
56public:
57 GfxMenu(AgiEngine *vm, GfxMgr *gfx, PictureMgr *picture, TextMgr *text);
58 ~GfxMenu();
59
60 void addMenu(const char *menuText);
61 void addMenuItem(const char *menuText, uint16 controlCode);
62 void submit();
63 void itemEnable(uint16 controllerSlot);
64 void itemDisable(uint16 controllerSlot);
65 void itemEnableAll();
66
67 void keyPress(uint16 newKey);
68 void mouseEvent(uint16 newKey);
69
70 bool isAvailable();
71
72 void accessAllow();
73 void accessDeny();
74
75 void delayedExecuteViaKeyboard();
76 void delayedExecuteViaMouse();
77 bool delayedExecuteActive();
78 void execute();
79
80private:
81 void itemEnableDisable(uint16 controllerSlot, bool enabled);
82
83 void drawMenuName(int16 menuNr, bool inverted);
84 void drawItemName(int16 itemNr, bool inverted);
85 void drawMenu(int16 selectedMenuNr, int16 selectedMenuItemNr);
86 void removeActiveMenu(int16 selectedMenuNr);
87
88 void mouseFindMenuSelection(int16 mouseRow, int16 mouseColumn, int16 &activeMenuNr, int16 &activeMenuItemNr);
89
90 AgiEngine *_vm;
91 GfxMgr *_gfx;
92 PictureMgr *_picture;
93 TextMgr *_text;
94
95 bool _allowed;
96 bool _submitted;
97 bool _delayedExecuteViaKeyboard;
98 bool _delayedExecuteViaMouse;
99
100 // for initial setup of the menu
101 int16 _setupMenuColumn;
102 int16 _setupMenuItemColumn;
103
104 GuiMenuArray _array;
105 GuiMenuItemArray _itemArray;
106
107 int16 _lastSelectedMenuNr; // only used for "via keyboard" mode
108
109 int16 _drawnMenuNr;
110
111 uint16 _drawnMenuHeight;
112 uint16 _drawnMenuWidth;
113 int16 _drawnMenuY;
114 int16 _drawnMenuX;
115
116 // Following variables are used in "via mouse" mode
117 int16 _mouseModeItemNr;
118};
119
120} // End of namespace Agi
121
122#endif /* AGI_MENU_H */
Definition: agi.h:699
Definition: menu.h:55
Definition: graphics.h:58
Definition: picture.h:48
Definition: text.h:76
Definition: str.h:59
Definition: agi.h:64
Definition: menu.h:27
Definition: menu.h:43