Changeset 5863 for code/branches/core5/src/orxonox
- Timestamp:
- Oct 3, 2009, 5:33:31 PM (15 years ago)
- Location:
- code/branches/core5/src/orxonox/gamestates
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/core5/src/orxonox/gamestates/GSGraphics.cc
r5855 r5863 41 41 #include "core/Game.h" 42 42 #include "core/GUIManager.h" 43 #include "core/input/InputManager.h"44 #include "core/input/KeyBinder.h"45 #include "core/input/InputState.h"46 43 #include "core/Loader.h" 47 44 #include "core/XMLFile.h" … … 56 53 GSGraphics::GSGraphics(const GameStateInfo& info) 57 54 : GameState(info) 58 , masterKeyBinder_(0)59 , masterInputState_(0)60 55 , debugOverlay_(0) 61 56 { 62 // load master key bindings63 masterInputState_ = InputManager::getInstance().createInputState("master", true);64 masterKeyBinder_ = new KeyBinder();65 masterInputState_->setKeyHandler(masterKeyBinder_);66 57 } 67 58 68 59 GSGraphics::~GSGraphics() 69 60 { 70 InputManager::getInstance().destroyState("master");71 this->masterKeyBinder_->destroy();72 61 } 73 62 … … 94 83 Loader::open(debugOverlay_); 95 84 96 masterKeyBinder_->loadBindings("masterKeybindings.ini");97 98 85 // add console command to toggle GUI 99 86 this->ccToggleGUI_ = createConsoleCommand(createFunctor(&GSGraphics::toggleGUI, this), "toggleGUI"); 100 87 CommandExecutor::addConsoleCommandShortcut(this->ccToggleGUI_); 101 102 // enable master input103 InputManager::getInstance().enterState("master");104 88 } 105 89 -
code/branches/core5/src/orxonox/gamestates/GSGraphics.h
r5850 r5863 60 60 61 61 private: 62 KeyBinder* masterKeyBinder_; //!< Key binder for master key bindings63 InputState* masterInputState_; //!< Special input state for master input64 62 XMLFile* debugOverlay_; 65 63 ConsoleCommand* ccToggleGUI_; //!< Console command to toggle GUI -
code/branches/core5/src/orxonox/gamestates/GSLevel.cc
r5855 r5863 35 35 #include "core/input/InputManager.h" 36 36 #include "core/input/InputState.h" 37 #include "core/input/KeyBinder .h"37 #include "core/input/KeyBinderManager.h" 38 38 #include "core/ConsoleCommand.h" 39 39 #include "core/ConfigValueIncludes.h" … … 57 57 GSLevel::GSLevel(const GameStateInfo& info) 58 58 : GameState(info) 59 , keyBinder_(0)60 59 , gameInputState_(0) 61 60 , guiMouseOnlyInputState_(0) … … 63 62 { 64 63 RegisterObject(GSLevel); 65 66 this->ccKeybind_ = 0;67 this->ccTkeybind_ = 0;68 64 } 69 65 … … 74 70 void GSLevel::setConfigValues() 75 71 { 76 SetConfigValue(keyDetectorCallbackCode_, "KeybindBindingStringKeyName=");77 72 } 78 73 … … 84 79 { 85 80 gameInputState_ = InputManager::getInstance().createInputState("game"); 86 keyBinder_ = new KeyBinder(); 87 keyBinder_->loadBindings("keybindings.ini"); 88 gameInputState_->setHandler(keyBinder_); 81 gameInputState_->setHandler(KeyBinderManager::getInstance().getDefaultAsHandler()); 82 KeyBinderManager::getInstance().setToDefault(); 89 83 90 84 guiMouseOnlyInputState_ = InputManager::getInstance().createInputState("guiMouseOnly"); … … 102 96 if (GameMode::showsGraphics()) 103 97 { 104 // keybind console command105 ccKeybind_ = createConsoleCommand(createFunctor(&GSLevel::keybind, this), "keybind");106 CommandExecutor::addConsoleCommandShortcut(ccKeybind_);107 ccTkeybind_ = createConsoleCommand(createFunctor(&GSLevel::tkeybind, this), "tkeybind");108 CommandExecutor::addConsoleCommandShortcut(ccTkeybind_);109 // set our console command as callback for the key detector110 InputManager::getInstance().setKeyDetectorCallback(std::string("keybind ") + keyDetectorCallbackCode_);111 112 98 // level is loaded: we can start capturing the input 113 99 InputManager::getInstance().enterState("game"); … … 136 122 void GSLevel::deactivate() 137 123 { 138 /*139 // destroy console commands140 if (this->ccKeybind_)141 {142 delete this->ccKeybind_;143 this->ccKeybind_ = 0;144 }145 if (this->ccTkeybind_)146 {147 delete this->ccTkeybind_;148 this->ccTkeybind_ = 0;149 }150 */151 152 124 if (GameMode::showsGraphics()) 153 125 { … … 181 153 InputManager::getInstance().destroyState("guiKeysOnly"); 182 154 InputManager::getInstance().destroyState("guiMouseOnly"); 183 if (this->keyBinder_)184 {185 this->keyBinder_->destroy();186 this->keyBinder_ = 0;187 }188 155 } 189 156 } … … 211 178 delete startFile_s; 212 179 } 213 214 void GSLevel::keybind(const std::string &command)215 {216 this->keybindInternal(command, false);217 }218 219 void GSLevel::tkeybind(const std::string &command)220 {221 this->keybindInternal(command, true);222 }223 224 /**225 @brief226 Assigns a command string to a key/button/axis. The name is determined via KeyDetector.227 @param command228 Command string that can be executed by the CommandExecutor229 OR: Internal string "KeybindBindingStringKeyName=" used for the second call to identify230 the key/button/axis that has been activated. This is configured above in activate().231 */232 void GSLevel::keybindInternal(const std::string& command, bool bTemporary)233 {234 if (GameMode::showsGraphics())235 {236 static std::string bindingString = "";237 static bool bTemporarySaved = false;238 static bool bound = true;239 // note: We use a long name to make 'sure' that the user doesn't use it accidentally.240 // Howerver there will be no real issue if it happens anyway.241 if (command.find(keyDetectorCallbackCode_) != 0)242 {243 if (bound)244 {245 COUT(0) << "Press any button/key or move a mouse/joystick axis" << std::endl;246 InputManager::getInstance().enterState("detector");247 bindingString = command;248 bTemporarySaved = bTemporary;249 bound = false;250 }251 //else: We're still in a keybind command. ignore this call.252 }253 else254 {255 if (!bound)256 {257 // user has pressed the key258 std::string name = command.substr(this->keyDetectorCallbackCode_.size());259 COUT(0) << "Binding string \"" << bindingString << "\" on key '" << name << "'" << std::endl;260 this->keyBinder_->setBinding(bindingString, name, bTemporarySaved);261 InputManager::getInstance().leaveState("detector");262 bound = true;263 }264 // else: A key was pressed within the same tick, ignore it.265 }266 }267 }268 180 } -
code/branches/core5/src/orxonox/gamestates/GSLevel.h
r5850 r5863 57 57 void unloadLevel(); 58 58 59 // console commands60 void keybind(const std::string& command);61 void tkeybind(const std::string& command);62 void keybindInternal(const std::string& command, bool bTemporary);63 64 KeyBinder* keyBinder_; //!< tool that loads and manages the input bindings65 59 InputState* gameInputState_; //!< input state for normal ingame playing 66 60 InputState* guiMouseOnlyInputState_; //!< input state if we only need the mouse to use the GUI 67 61 InputState* guiKeysOnlyInputState_; //!< input state if we only need the keys to use the GUI 68 69 //##### ConfigValues #####70 std::string keyDetectorCallbackCode_;71 72 // console commands73 ConsoleCommand* ccKeybind_;74 ConsoleCommand* ccTkeybind_;75 62 }; 76 63 } -
code/branches/core5/src/orxonox/gamestates/GSMainMenu.cc
r5855 r5863 34 34 #include "core/input/InputManager.h" 35 35 #include "core/input/InputState.h" 36 #include "core/input/KeyBinderManager.h" 36 37 #include "core/Game.h" 37 38 #include "core/ConsoleCommand.h" … … 51 52 inputState_ = InputManager::getInstance().createInputState("mainMenu"); 52 53 inputState_->setHandler(GUIManager::getInstancePtr()); 54 inputState_->setKeyHandler(KeyBinderManager::getInstance().getDefaultAsHandler()); 53 55 inputState_->setJoyStickHandler(&InputHandler::EMPTY); 54 56 inputState_->setIsExclusiveMouse(false); … … 86 88 CommandExecutor::addConsoleCommandShortcut(this->ccStartMainMenu_); 87 89 90 KeyBinderManager::getInstance().setToDefault(); 88 91 InputManager::getInstance().enterState("mainMenu"); 89 92
Note: See TracChangeset
for help on using the changeset viewer.