Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/gamestate/src/libraries/core/input/Button.h @ 6432

Last change on this file since 6432 was 6432, checked in by rgrieder, 14 years ago

Changed the way config values associated with general settings (ConfigFileType::Settings) are handled:

  • ConfigFileManager only handles config files listed in the ConfigFileType enum (normal enum again)
  • ConfigFileManager only takes care of ConfigFiles and returns a pointer to the right one, just two functions left. —> use like: ConfigFileManager::getInstance().getConfigFile(myType)→doSomething();
  • Moved all code (except for the argument completion functions) relating to ConfigFileType::Settings to a new class: SettingsConfigFile, which is a Singleton (it doesn't make sense to have multiple instances unless you start coding a lot more)
  • SettingsConfigFile handles config value containers according to their section and entry in the ini file, not according to class and variables names. (In most cases it will be class and variable names though)
  • SettingsConfigFile supports:
    • clear() (removes any file entries not associated to a config value container)
    • updateConfigValues() (does exactly that through the identifier)
    • config, tconfig and getConfig
    • commands listed above are exported to tolua, and tconfig, config and getConfig were given shortcuts in Lua (e.g. orxonox.config)
  • If you need to organise ConfigFiles yourself, just do it without the ConfigFileManager, like the KeyBinder does.
  • All getValue() functions have been split into getOrCreateValue() and getValue(), which is const
  • Removed obsolete config value management code in the Identifier (it still stores and destroys them and provides access to them)

All of that leads to one HUGE advantage:
"config OutputHandler softDebugLevelInGameConsole"
works now :D (any further implications are up to the reader…)
(it didn't work before because the actual config value container is in the InGameConsole singleton)

  • Property svn:eol-style set to native
File size: 2.7 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *                    > www.orxonox.net <
4 *
5 *
6 *   License notice:
7 *
8 *   This program is free software; you can redistribute it and/or
9 *   modify it under the terms of the GNU General Public License
10 *   as published by the Free Software Foundation; either version 2
11 *   of the License, or (at your option) any later version.
12 *
13 *   This program is distributed in the hope that it will be useful,
14 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *   GNU General Public License for more details.
17 *
18 *   You should have received a copy of the GNU General Public License
19 *   along with this program; if not, write to the Free Software
20 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 *
22 *   Author:
23 *      Reto Grieder
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29/**
30@file
31@brief
32    Different definitions of input processing.
33*/
34
35#ifndef _Button_H__
36#define _Button_H__
37
38#include "InputPrereqs.h"
39
40#include <string>
41#include <vector>
42#include "InputCommands.h"
43
44namespace orxonox
45{
46    class _CoreExport Button
47    {
48    public:
49        Button();
50        virtual ~Button();
51        virtual void clear();
52        virtual bool addParamCommand(ParamCommand* command) { return false; }
53        void parse(const std::string& binding);
54        void readBinding(ConfigFile* configFile);
55        void setBinding(ConfigFile* configFile, const std::string& binding, bool bTemporary);
56        bool execute(KeybindMode::Value mode, float abs = 1.0f, float rel = 1.0f);
57
58        //! The configured string value
59        std::string bindingString_;
60        //! Name of the trigger as strings
61        std::string name_;
62        //! Name of the group of input triggers
63        std::string groupName_;
64        //! Basic commands for OnPress, OnHold and OnRelease
65        BaseCommand** commands_[3];
66        //! Number of basic commands
67        unsigned int nCommands_[3];
68        //! Says how much it takes for an analog axis to trigger a button
69        //! Note: This variable is here to have only one parse() function.
70        float buttonThreshold_;
71        bool bButtonThresholdUser_;
72        //! Pointer to the list of parametrised commands
73        std::vector<BufferedParamCommand*>* paramCommandBuffer_;
74
75    private:
76        void parseError(const std::string& message, bool serious);
77    };
78
79    inline bool Button::execute(KeybindMode::Value mode, float abs, float rel)
80    {
81        // execute all the parsed commands in the string
82        for (unsigned int iCommand = 0; iCommand < nCommands_[mode]; iCommand++)
83            commands_[mode][iCommand]->execute(abs, rel);
84        return true;
85    }
86
87}
88
89#endif /* _Button_H__ */
Note: See TracBrowser for help on using the repository browser.