Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jun 19, 2008, 5:02:45 AM (17 years ago)
Author:
landauf
Message:
  • fixed bug #2 in ConfigValueContainer (callback not being called if the configured value is the same as default value)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/core3/src/core/ConfigValueIncludes.h

    r1596 r1611  
    4747    @param defvalue The default-value of the variable
    4848*/
    49 #define SetConfigValue(varname, defvalue) \
     49#define SetConfigValueGeneric(type, varname, defvalue) \
    5050    static orxonox::Identifier* identifier##varname = this->getIdentifier(); \
    5151    orxonox::ConfigValueContainer* container##varname = identifier##varname->getConfigValueContainer(#varname); \
    5252    if (!container##varname) \
    5353    { \
    54         container##varname = new orxonox::ConfigValueContainer(CFT_Settings, identifier##varname, #varname, varname = defvalue); \
     54        container##varname = new orxonox::ConfigValueContainer(CFT_Settings, identifier##varname, #varname, defvalue, varname); \
    5555        identifier##varname->addConfigValueContainer(#varname, container##varname); \
    5656    } \
    5757    container##varname->getValue(&varname, this)
    5858
    59 /**
    60     @brief Assigns the value, defined in the config-file, to the variable (or the default-value, if there is no entry in the file).
    61     @param classname name in which the config value should be stored
    62     @param varname The name of the variable
    63     @param defvalue The default-value of the variable
    64 */
    65 #define SetConfigValueGeneric(classname, varname, defvalue) \
    66     static orxonox::Identifier* identifier##varname = ClassIdentifier<classname>::getIdentifier(); \
    67     orxonox::ConfigValueContainer* container##varname = identifier##varname->getConfigValueContainer(#varname); \
    68     if (!container##varname) \
    69     { \
    70         container##varname = new orxonox::ConfigValueContainer(CFT_Settings, identifier##varname, #varname, varname = defvalue); \
    71         identifier##varname->addConfigValueContainer(#varname, container##varname); \
    72     } \
    73     container##varname->getValue(&varname, this)
     59#define SetConfigValue(varname, defvalue) SetConfigValueGeneric(CFT_Settings, varname, defvalue)
     60#define SetKeybindingValue(varname, defvalue) SetConfigValueGeneric(CFT_Keybindings, varname, defvalue)
     61
    7462
    7563/**
     
    7866    @param defvalue The default-value
    7967*/
    80 #define SetConfigValueVector(varname, defvalue) \
     68#define SetConfigValueVectorGeneric(type, varname, defvalue) \
    8169    static orxonox::Identifier* identifier##varname = this->getIdentifier(); \
    8270    orxonox::ConfigValueContainer* container##varname = identifier##varname->getConfigValueContainer(#varname); \
    8371    if (!container##varname) \
    8472    { \
    85         std::vector<MultiTypeMath> temp; \
    86         for (unsigned int i = 0; i < defvalue.size(); i++) \
    87             temp.push_back(MultiTypeMath(defvalue[i])); \
    88         container##varname = new orxonox::ConfigValueContainer(CFT_Settings, identifier##varname, #varname, temp); \
    89         container##varname->setVectorType(varname); \
     73        container##varname = new orxonox::ConfigValueContainer(CFT_Settings, identifier##varname, #varname, defvalue); \
    9074        identifier##varname->addConfigValueContainer(#varname, container##varname); \
    9175    } \
    9276    container##varname->getValue(&varname, this)
     77
     78#define SetConfigValueVector(varname, defvalue) SetConfigValueVectorGeneric(CFT_Settings, varname, defvalue)
     79#define SetKeybindingValueVector(varname, defvalue) SetConfigValueVectorGeneric(CFT_Keybindings, varname, defvalue)
     80
    9381
    9482/**
     
    10795        COUT(2) << "Warning: Couldn't reset config-value '" << #varname << "', corresponding container doesn't exist." << std::endl; \
    10896    }
     97
    10998
    11099/**
Note: See TracChangeset for help on using the changeset viewer.