Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/network/src/core/ConfigValueIncludes.h @ 1444

Last change on this file since 1444 was 1444, checked in by rgrieder, 16 years ago

Added 'calibrate' command for the joystick
Simply type 'calibrate', move your axes around, center them press enter again.
Values are stored in keybindings.ini

File size: 5.1 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 *      Fabian 'x3n' Landau
24 *   Co-authors:
25 *      ...
26 *
27 */
28
29/**
30    @file ConfigValueIncludes.h
31    @brief Definition of macros for config-values.
32*/
33
34#ifndef _ConfigValueIncludes_H__
35#define _ConfigValueIncludes_H__
36
37#include "CorePrereqs.h"
38
39#include "Identifier.h"
40#include "ConfigValueContainer.h"
41#include "ConfigFileManager.h"
42
43
44/**
45    @brief Assigns the value, defined in the config-file, to the variable (or the default-value, if there is no entry in the file).
46    @param varname The name of the variable
47    @param defvalue The default-value of the variable
48*/
49#define SetConfigValue(varname, defvalue) \
50    orxonox::ConfigValueContainer* container##varname = this->getIdentifier()->getConfigValueContainer(#varname); \
51    if (!container##varname) \
52    { \
53        container##varname = new orxonox::ConfigValueContainer(CFT_Settings, this->getIdentifier(), #varname, varname = defvalue); \
54        this->getIdentifier()->addConfigValueContainer(#varname, container##varname); \
55    } \
56    container##varname->getValue(&varname)
57
58/**
59    @brief Assigns the value, defined in the config-file, to the variable (or the default-value, if there is no entry in the file).
60    @param classname name in which the config value should be stored
61    @param varname The name of the variable
62    @param defvalue The default-value of the variable
63*/
64#define SetConfigValueGeneric(classname, varname, defvalue) \
65    orxonox::ConfigValueContainer* container##varname = ClassManager<classname>::getIdentifier()->getConfigValueContainer(#varname); \
66    if (!container##varname) \
67    { \
68        container##varname = new orxonox::ConfigValueContainer(CFT_Settings, ClassManager<classname>::getIdentifier(), #varname, varname = defvalue); \
69        ClassManager<classname>::getIdentifier()->addConfigValueContainer(#varname, container##varname); \
70    } \
71    container##varname->getValue(&varname)
72
73/**
74    @brief Assigns the vector-values, defined in the config-file, to the vector (or the default-value, if there are no entries in the file).
75    @param varname The name of the std::vector
76    @param defvalue The default-value
77*/
78#define SetConfigValueVector(varname, defvalue) \
79    orxonox::ConfigValueContainer* container##varname = this->getIdentifier()->getConfigValueContainer(#varname); \
80    if (!container##varname) \
81    { \
82        std::vector<MultiTypeMath> temp; \
83        for (unsigned int i = 0; i < defvalue.size(); i++) \
84            temp.push_back(MultiTypeMath(defvalue[i])); \
85        container##varname = new orxonox::ConfigValueContainer(CFT_Settings, this->getIdentifier(), #varname, temp); \
86        this->getIdentifier()->addConfigValueContainer(#varname, container##varname); \
87    } \
88    container##varname->getValue(&varname)
89
90/**
91    @brief Sets the variable and the config-file entry back to the previously defined default-value.
92    @param varname The name of the variable
93*/
94#define ResetConfigValue(varname) \
95    orxonox::ConfigValueContainer* container##varname##reset = this->getIdentifier()->getConfigValueContainer(#varname); \
96    if (container##varname##reset) \
97    { \
98        container##varname##reset->reset(); \
99        container##varname##reset->getValue(&varname); \
100    } \
101    else \
102    { \
103        COUT(2) << "Warning: Couldn't reset config-value '" << #varname << "', corresponding container doesn't exist." << std::endl; \
104    }
105
106/**
107    @brief Modifies a config-value by using a modifier and some arguments.
108    @param varname The name of the config-value
109    @param modifier The name of the modifier: set, tset, add, remove, reset, update
110*/
111#define ModifyConfigValue(varname, modifier, ...) \
112    orxonox::ConfigValueContainer* container##varname##modify##modifier = this->getIdentifier()->getConfigValueContainer(#varname); \
113    if (container##varname##modify##modifier) \
114    { \
115        container##varname##modify##modifier->modifier(__VA_ARGS__); \
116        container##varname##modify##modifier->getValue(&varname); \
117    } \
118    else \
119    { \
120        COUT(2) << "Warning: Couln't modify config-value '" << #varname << "', corresponding container doesn't exist." << std::endl; \
121    }
122
123#endif /* _ConfigValueIncludes_H__ */
Note: See TracBrowser for help on using the repository browser.