0x47 stub
[scummvm-innocent.git] / gui / Actions.h
blob67faa03cbada1d301690b9bae6ca3743cc9d8599
1 /* ScummVM - Graphic Adventure Engine
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.
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
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.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 * $URL$
22 * $Id$
26 #ifndef GUI_ACTIONS_H
27 #define GUI_ACTIONS_H
29 #include "common/scummsys.h"
30 #include "common/system.h"
31 #include "gui/Key.h"
33 namespace GUI {
35 typedef int ActionType;
37 class Actions {
39 public:
40 static Actions* Instance();
41 static void init();
42 virtual void initInstanceMain(OSystem *mainSystem);
43 virtual void initInstanceGame();
44 bool initialized();
46 // Actions
47 virtual bool perform(ActionType action, bool pushed = true) = 0;
48 bool isActive(ActionType action);
49 bool isEnabled(ActionType action);
50 virtual Common::String actionName(ActionType action) = 0;
51 virtual int size() = 0;
53 // Mapping
54 void beginMapping(bool start);
55 bool mappingActive();
56 bool performMapped(unsigned int keyCode, bool pushed);
57 bool loadMapping();
58 bool saveMapping();
59 unsigned int getMapping(ActionType action);
60 void setMapping(ActionType action, unsigned int keyCode);
61 Key& getKeyAction(ActionType action);
63 // Action domain
64 virtual Common::String domain() = 0;
65 virtual int version() = 0;
67 virtual ~Actions();
69 protected:
70 Actions();
72 protected:
73 enum {
74 MAX_ACTIONS = 20
77 static Actions* _instance;
78 OSystem *_mainSystem;
79 Key _key_action[MAX_ACTIONS + 1];
80 bool _action_enabled[MAX_ACTIONS + 1];
81 unsigned int _action_mapping[MAX_ACTIONS + 1];
82 bool _mapping_active;
83 bool _initialized;
86 } // namespace GUI
87 typedef GUI::Actions GUI_Actions;
88 #endif