Changeset 1236 for code/branches/input/src/core/InputBuffer.h
- Timestamp:
- May 6, 2008, 2:32:19 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/input/src/core/InputBuffer.h
r1219 r1236 1 1 /* 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 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 28 29 29 #ifndef _InputBuffer_H__ … … 35 35 #include <list> 36 36 37 #include " ois/OISKeyboard.h"38 #include " InputHandler.h"37 #include "InputInterfaces.h" 38 #include "Tickable.h" 39 39 40 40 namespace orxonox 41 41 { 42 43 42 class _CoreExport InputBufferListener 43 {}; 44 44 45 class _CoreExport InputBuffer : public KeyHandler 45 class _CoreExport InputBuffer : public KeyHandler, public Tickable 46 { 47 struct InputBufferListenerTuple 46 48 { 47 struct InputBufferListenerTuple 48 { 49 InputBufferListener* listener_; 50 void (InputBufferListener::*function_)(); 51 bool bListenToAllChanges_; 52 bool bOnlySingleInput_; 53 char char_; 54 }; 49 InputBufferListener* listener_; 50 void (InputBufferListener::*function_)(); 51 bool bListenToAllChanges_; 52 bool bOnlySingleInput_; 53 char char_; 54 }; 55 55 56 57 InputBuffer();58 InputBuffer(const std::string allowedChars);56 public: 57 InputBuffer(const std::string allowedChars = 58 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZäöüÄÖÜ0123456789 \\\"(){}[]<>.:,;_-+*/=!?|$&%^"); 59 59 60 template <class T> 61 void registerListener(T* listener, void (T::*function)(), bool bOnlySingleInput) 62 { 63 struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, true, bOnlySingleInput, ' '}; 64 this->listeners_.insert(this->listeners_.end(), newListener); 65 } 66 template <class T> 67 void registerListener(T* listener, void (T::*function)() const, bool bOnlySingleInput) 68 { 69 struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, true, bOnlySingleInput, ' '}; 70 this->listeners_.insert(this->listeners_.end(), newListener); 71 } 60 void setConfigValues(); 72 61 73 74 void registerListener(T* listener, void (T::*function)(), char char_, bool bOnlySingleInput)75 76 struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, false, bOnlySingleInput, char_};77 78 79 80 void registerListener(T* listener, void (T::*function)() const, char char_, bool bOnlySingleInput)81 82 struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, false, bOnlySingleInput, char_};83 84 62 template <class T> 63 void registerListener(T* listener, void (T::*function)(), bool bOnlySingleInput) 64 { 65 struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, true, bOnlySingleInput, ' '}; 66 this->listeners_.insert(this->listeners_.end(), newListener); 67 } 68 template <class T> 69 void registerListener(T* listener, void (T::*function)() const, bool bOnlySingleInput) 70 { 71 struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, true, bOnlySingleInput, ' '}; 72 this->listeners_.insert(this->listeners_.end(), newListener); 73 } 85 74 86 void set(const std::string& input); 87 void append(const std::string& input); 88 void append(const char& input); 89 void removeLast(); 90 void clear(); 75 template <class T> 76 void registerListener(T* listener, void (T::*function)(), char char_, bool bOnlySingleInput) 77 { 78 struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, false, bOnlySingleInput, char_}; 79 this->listeners_.insert(this->listeners_.end(), newListener); 80 } 81 template <class T> 82 void registerListener(T* listener, void (T::*function)() const, char char_, bool bOnlySingleInput) 83 { 84 struct InputBufferListenerTuple newListener = {listener, (void (InputBufferListener::*)())function, false, bOnlySingleInput, char_}; 85 this->listeners_.insert(this->listeners_.end(), newListener); 86 } 91 87 92 void updated(); 93 void updated(const char& update, bool bSingleInput); 88 void set(const std::string& input); 89 void append(const std::string& input); 90 void append(const char& input); 91 void removeLast(); 92 void clear(); 94 93 95 inline std::string get() const96 { return this->buffer_; }94 void updated(); 95 void updated(const char& update, bool bSingleInput); 97 96 98 /*inline void activate() 99 { this->setActivated(true); } 100 inline void deactivate() 101 { this->setActivated(false); } 102 inline void setActivated(bool bActivated) 103 { if (this->bActivated_ != bActivated) { this->bActivated_ = bActivated; this->activityChanged(); } else { this->bActivated_ = bActivated; } } 104 inline bool isActivated() const 105 { return this->bActivated_; } 97 inline std::string get() const 98 { return this->buffer_; } 106 99 107 void activityChanged() const;*/ 100 private: 101 bool charIsAllowed(const char& input); 108 102 109 private: 110 bool charIsAllowed(const char& input); 103 bool keyPressed (const KeyEvent& evt); 104 bool keyReleased(const KeyEvent& evt) { return true; } 105 bool keyHeld (const KeyEvent& evt); 106 void processKey (const KeyEvent &e); 111 107 112 bool keyPressed(const OIS::KeyEvent &e); 113 bool keyReleased(const OIS::KeyEvent &e); 114 bool keyHeld(const OIS::KeyEvent &e) { return true; } 108 void tick(float dt); 115 109 116 OIS::Keyboard* keyboard_; 117 //bool bActivated_; 118 std::string buffer_; 119 std::list<InputBufferListenerTuple> listeners_; 120 std::string allowedChars_; 121 }; 110 std::string buffer_; 111 std::list<InputBufferListenerTuple> listeners_; 112 std::string allowedChars_; 113 114 KeyCode::Enum lastKey_; 115 float timeSinceKeyPressed_; 116 float timeSinceKeyRepeated_; 117 int keysToRepeat_; 118 119 // configured values 120 float keyRepeatDeleay_; 121 float keyRepeatTime_; 122 }; 122 123 } 123 124
Note: See TracChangeset
for help on using the changeset viewer.