Changeset 6536 for code/trunk/src/libraries/core/input
- Timestamp:
- Mar 16, 2010, 11:22:36 AM (15 years ago)
- Location:
- code/trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
code/trunk
- Property svn:mergeinfo changed
/code/branches/gamestate (added) merged: 6430-6432,6437,6439-6440
- Property svn:mergeinfo changed
-
code/trunk/src/libraries/core/input/Button.cc
r6428 r6536 42 42 #include "core/CommandEvaluation.h" 43 43 #include "core/CommandExecutor.h" 44 #include "core/ConfigFileManager.h" 44 45 45 46 namespace orxonox … … 81 82 } 82 83 83 void Button::readBinding(ConfigFileType type) 84 { 85 const std::string& binding = ConfigFileManager::getInstance().getValue(type, groupName_, name_, "", true); 84 void Button::readBinding(ConfigFile* configFile, ConfigFile* fallbackFile) 85 { 86 std::string binding = configFile->getOrCreateValue(groupName_, name_, "", true); 87 if (binding.empty() && fallbackFile) 88 binding = fallbackFile->getValue(groupName_, name_, true); 86 89 this->parse(binding); 87 90 } 88 91 89 void Button::setBinding(ConfigFile Type type, const std::string& binding, bool bTemporary)92 void Button::setBinding(ConfigFile* configFile, ConfigFile* fallbackFile, const std::string& binding, bool bTemporary) 90 93 { 91 94 if (!bTemporary) 92 ConfigFileManager::getInstance().setValue(type,groupName_, name_, binding, true);95 configFile->setValue(groupName_, name_, binding, true); 93 96 this->parse(binding); 94 97 } … … 103 106 this->bindingString_ = binding; 104 107 105 if (isEmpty(bindingString_) )108 if (isEmpty(bindingString_) || removeTrailingWhitespaces(getLowercase(binding)) == "nobinding") 106 109 return; 107 110 -
code/trunk/src/libraries/core/input/Button.h
r6428 r6536 41 41 #include <vector> 42 42 #include "InputCommands.h" 43 #include "core/ConfigFileManager.h"44 43 45 44 namespace orxonox … … 53 52 virtual bool addParamCommand(ParamCommand* command) { return false; } 54 53 void parse(const std::string& binding); 55 void readBinding(ConfigFile Type type);56 void setBinding(ConfigFile Type type, const std::string& binding, bool bTemporary);54 void readBinding(ConfigFile* configFile, ConfigFile* fallbackFile); 55 void setBinding(ConfigFile* configFile, ConfigFile* fallbackFile, const std::string& binding, bool bTemporary); 57 56 bool execute(KeybindMode::Value mode, float abs = 1.0f, float rel = 1.0f); 58 57 -
code/trunk/src/libraries/core/input/JoyStick.cc
r6417 r6536 106 106 { 107 107 list.resize(size); 108 unsigned int configValueVectorSize = ConfigFileManager::getInstance().get VectorSize(ConfigFileType::JoyStickCalibration,sectionName, valueName);108 unsigned int configValueVectorSize = ConfigFileManager::getInstance().getConfigFile(ConfigFileType::JoyStickCalibration)->getVectorSize(sectionName, valueName); 109 109 if (configValueVectorSize > size) 110 110 configValueVectorSize = size; … … 112 112 for (unsigned int i = 0; i < configValueVectorSize; ++i) 113 113 { 114 list[i] = multi_cast<int>(ConfigFileManager::getInstance().get Value(115 ConfigFileType::JoyStickCalibration,sectionName, valueName, i, multi_cast<std::string>(defaultValue), false));114 list[i] = multi_cast<int>(ConfigFileManager::getInstance().getConfigFile(ConfigFileType::JoyStickCalibration) 115 ->getOrCreateValue(sectionName, valueName, i, multi_cast<std::string>(defaultValue), false)); 116 116 } 117 117 … … 153 153 if (configMinValues_[i] == INT_MAX) 154 154 configMinValues_[i] = -32768; 155 ConfigFileManager::getInstance(). setValue(ConfigFileType::JoyStickCalibration,156 deviceName_, "MinValue", i, multi_cast<std::string>(configMinValues_[i]), false);155 ConfigFileManager::getInstance().getConfigFile(ConfigFileType::JoyStickCalibration) 156 ->getOrCreateValue(deviceName_, "MinValue", i, multi_cast<std::string>(configMinValues_[i]), false); 157 157 158 158 // Maximum values 159 159 if (configMaxValues_[i] == INT_MIN) 160 160 configMaxValues_[i] = 32767; 161 ConfigFileManager::getInstance(). setValue(ConfigFileType::JoyStickCalibration,162 deviceName_, "MaxValue", i, multi_cast<std::string>(configMaxValues_[i]), false);161 ConfigFileManager::getInstance().getConfigFile(ConfigFileType::JoyStickCalibration) 162 ->getOrCreateValue(deviceName_, "MaxValue", i, multi_cast<std::string>(configMaxValues_[i]), false); 163 163 164 164 // Middle values 165 ConfigFileManager::getInstance(). setValue(ConfigFileType::JoyStickCalibration,166 deviceName_, "ZeroValue", i, multi_cast<std::string>(configZeroValues_[i]), false);165 ConfigFileManager::getInstance().getConfigFile(ConfigFileType::JoyStickCalibration) 166 ->getOrCreateValue(deviceName_, "ZeroValue", i, multi_cast<std::string>(configZeroValues_[i]), false); 167 167 } 168 168 -
code/trunk/src/libraries/core/input/KeyBinder.cc
r6428 r6536 37 37 #include "core/CoreIncludes.h" 38 38 #include "core/ConfigFileManager.h" 39 #include "core/PathConfig.h" 39 40 #include "InputCommands.h" 40 41 #include "JoyStick.h" … … 49 50 : deriveTime_(0.0f) 50 51 , filename_(filename) 52 , configFile_(NULL) 53 , fallbackConfigFile_(NULL) 51 54 { 52 55 mouseRelative_[0] = 0; … … 94 97 } 95 98 96 // We might not even load any bindings at all (KeyDetector for instance)97 this->configFile_ = ConfigFileType::NoType;98 99 99 // initialise joy sticks separatly to allow for reloading 100 100 this->JoyStickQuantityChanged(this->getJoyStickList()); … … 116 116 // almost no destructors required because most of the arrays are static. 117 117 clearBindings(); // does some destruction work 118 if (this->configFile_) 119 delete this->configFile_; 120 if (this->fallbackConfigFile_) 121 delete this->fallbackConfigFile_; 118 122 } 119 123 … … 163 167 164 168 // load the bindings if required 165 if (configFile_ != ConfigFileType::NoType)169 if (configFile_ != NULL) 166 170 { 167 171 for (unsigned int iDev = oldValue; iDev < joySticks_.size(); ++iDev) 168 172 { 169 173 for (unsigned int i = 0; i < JoyStickButtonCode::numberOfButtons; ++i) 170 (*joyStickButtons_[iDev])[i].readBinding(this->configFile_ );174 (*joyStickButtons_[iDev])[i].readBinding(this->configFile_, this->fallbackConfigFile_); 171 175 for (unsigned int i = 0; i < JoyStickAxisCode::numberOfAxes * 2; ++i) 172 (*joyStickAxes_[iDev])[i].readBinding(this->configFile_ );176 (*joyStickAxes_[iDev])[i].readBinding(this->configFile_, this->fallbackConfigFile_); 173 177 } 174 178 } … … 249 253 COUT(3) << "KeyBinder: Loading key bindings..." << std::endl; 250 254 251 // Get a new ConfigFileType from the ConfigFileManager 252 this->configFile_ = ConfigFileManager::getInstance().getNewConfigFileType(); 253 254 ConfigFileManager::getInstance().setFilename(this->configFile_, this->filename_); 255 this->configFile_ = new ConfigFile(this->filename_, !PathConfig::isDevelopmentRun()); 256 this->configFile_->load(); 257 258 if (PathConfig::isDevelopmentRun()) 259 { 260 // Dev users should have combined key bindings files 261 std::string defaultFilepath(PathConfig::getDataPathString() + ConfigFile::DEFAULT_CONFIG_FOLDER + '/' + this->filename_); 262 std::ifstream file(defaultFilepath.c_str()); 263 if (file.is_open()) 264 { 265 file.close(); 266 // Open the default file for later use (use absolute path!) 267 this->fallbackConfigFile_ = new ConfigFile(defaultFilepath, false); 268 this->fallbackConfigFile_->load(); 269 } 270 } 255 271 256 272 // Parse bindings and create the ConfigValueContainers if necessary 257 273 for (std::map<std::string, Button*>::const_iterator it = allButtons_.begin(); it != allButtons_.end(); ++it) 258 274 { 259 it->second->readBinding(this->configFile_ );275 it->second->readBinding(this->configFile_, this->fallbackConfigFile_); 260 276 addButtonToCommand(it->second->bindingString_, it->second); 261 277 } … … 270 286 { 271 287 addButtonToCommand(binding, it->second); 272 it->second->setBinding(this->configFile_, binding, bTemporary); 288 std::string str = binding; 289 if (PathConfig::isDevelopmentRun() && binding.empty()) 290 str = "NoBinding"; 291 it->second->setBinding(this->configFile_, this->fallbackConfigFile_, binding, bTemporary); 273 292 return true; 274 293 } -
code/trunk/src/libraries/core/input/KeyBinder.h
r6428 r6536 38 38 #include <boost/shared_ptr.hpp> 39 39 40 #include "core/ConfigFileManager.h"41 40 #include "InputHandler.h" 42 41 #include "Button.h" … … 157 156 //! Name of the file used in this KeyBinder (constant!) 158 157 const std::string filename_; 159 //! Config file used. ConfigFileType::NoType in case of KeyDetector. Also indicates whether we've already loaded. 160 ConfigFileType configFile_; 158 //! Config file used. NULL in case of KeyDetector. Also indicates whether we've already loaded. 159 ConfigFile* configFile_; 160 //! Config file from the data directory that only serves as fallback 161 ConfigFile* fallbackConfigFile_; 161 162 162 163 private:
Note: See TracChangeset
for help on using the changeset viewer.