ScummVM API documentation
vmenu.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/*
23 * This code is based on original Sfinx source code
24 * Copyright (c) 1994-1997 Janusz B. Wisniewski and L.K. Avalon
25 */
26
27#ifndef CGE2_VMENU_H
28#define CGE2_VMENU_H
29
30#define kMenuBarVerticalMargin 1
31#define kMenuBarHorizontalMargin 3
32#define kLt 3
33#define kRb 1
34
35#include "cge2/cge2.h"
36#include "cge2/talk.h"
37
38namespace CGE2 {
39
40class Choice {
41protected:
42 CGE2Engine *_vm;
43public:
44 char *_text;
45
46 virtual void proc() = 0;
47
48 Choice(CGE2Engine *vm);
49 virtual ~Choice() {};
50};
51
52class ExitGameChoice : public Choice {
53public:
55 void proc() override;
56};
57
58class ReturnToGameChoice : public Choice {
59public:
61 void proc() override;
62};
63
64class MenuBar : public Talk {
65public:
66 MenuBar(CGE2Engine *vm, uint16 w, byte *c);
67};
68
69class VMenu : public Talk {
70 CGE2Engine *_vm;
71
72 uint16 _items;
74public:
75 char *_vmgt;
76 static VMenu *_addr;
77 int _recent;
78 int _lastN;
79 MenuBar *_bar;
80
81 VMenu(CGE2Engine *vm, Common::Array<Choice *> list, V2D pos, ColorBank col);
82 ~VMenu() override;
83 void touch(uint16 mask, V2D pos) override;
84 char *vmGather(Common::Array<Choice *> list);
85};
86
87} // End of namespace CGE2
88
89#endif // CGE2_VMENU_H
Definition: cge2.h:149
Definition: vmenu.h:40
Definition: vmenu.h:52
Definition: vmenu.h:64
Definition: vmenu.h:58
Definition: talk.h:62
Definition: vga13h.h:94
Definition: vmenu.h:69
Definition: array.h:52