TurtleBrains  0.3.5
High quality, portable, C++ framework for rapid 2D game development.
tb_input_action.hpp
1 
9 #ifndef _TurtleBrainsUnstable_InputAction_hpp
10 #define _TurtleBrainsUnstable_InputAction_hpp
11 
12 #include <turtle_brains/application/tb_application_input.hpp>
13 #include <turtle_brains/system/unstable/tbu_input_device_manager.hpp>
14 #include <turtle_brains/math/tb_vector.hpp>
15 
16 #include <memory>
17 
18 namespace tbImplementation
19 {
20  class InputActionData;
21 };
22 
23 namespace TurtleBrains
24 {
25  namespace Game
26  {
27  namespace Input
28  {
36  bool IsKeyPressed(const tbApplication::Key& key);
37 
45  bool IsKeyReleased(const tbApplication::Key& key);
46 
53  bool IsKeyDown(const tbApplication::Key& key);
54 
62  void GetMousePosition(int* mouseX, int* mouseY);
63 
67  tbMath::Vector2 GetMousePosition(void);
68 
76  bool GetMouseMovement(int* mouseX, int* mouseY);
77 
82  tbMath::Vector2 GetMouseMovement(void);
83 
91  void SetMousePosition(int mouseX, int mouseY);
92 
102  void SetMousePosition(const tbMath::Vector2& mousePosition);
103  };
104 
111  {
112  public:
117 
122 
136  virtual float DigitalToAnalogConverter(bool digitalValue, float deltaTime) = 0;
137 
146  virtual bool AnalogToDigitalConverter(float analogValue, float deltaTime) = 0;
147 
156  virtual float AnalogToAnalogConverter(float analogValue, float deltaTime) = 0;
157 
163  virtual float InvertAnalogValue(float analogValue) { return 1.0f - analogValue; };
164  };
165 
176  {
177  public:
181  InputAction(void);
182 
189  explicit InputAction(const tbApplication::Key& keyBinding);
190 
196  InputAction(const InputAction& other);
197 
202  ~InputAction(void);
203 
209  bool IsDown(void) const;
210 
215  bool IsPressed(void) const;
216 
221  bool IsReleased(void) const;
222 
228  float GetAnalogValue(void) const;
229 
233  bool IsAnalog(void) const;
234 
238  bool IsDigital(void) const;
239 
244  void ClearBindings(void);
245 
252  void AddBinding(const tbApplication::Key& keyBinding);
253 
261  void AddBinding(const tbSystem::Unstable::DeviceHandle& deviceHandle, const tbSystem::Unstable::ButtonIdentifier& button);
262 
272  void AddAnalogBinding(const tbSystem::Unstable::DeviceHandle& deviceHandle, const tbSystem::Unstable::AxisIdentifier& axis, bool inverted = false);
273 
279  void RemoveBinding(const tbApplication::Key& keyBinding);
280 
288  void RemoveBinding(const tbSystem::Unstable::DeviceHandle& deviceHandle, const tbSystem::Unstable::ButtonIdentifier& button);
289 
297  void RemoveAnalogBinding(const tbSystem::Unstable::DeviceHandle& deviceHandle, const tbSystem::Unstable::AxisIdentifier& axis);
298 
312 
318  InputAction& operator=(const InputAction& other);
319 
320  private:
321  std::unique_ptr<tbImplementation::InputActionData> mData;
322  };
323 
324  }; /* namespace Game */
325 }; /* namespace TurtleBrains */
326 
327 namespace tbGame = TurtleBrains::Game;
328 
329 #endif /* _TurtleBrainsUnstable_InputAction_hpp */
InputAction & operator=(const InputAction &other)
Definition: tb_vector.hpp:48
virtual float InvertAnalogValue(float analogValue)
Definition: tb_input_action.hpp:163
Definition: tb_input_action.hpp:175
void AddAnalogBinding(const tbSystem::Unstable::DeviceHandle &deviceHandle, const tbSystem::Unstable::AxisIdentifier &axis, bool inverted=false)
virtual float DigitalToAnalogConverter(bool digitalValue, float deltaTime)=0
virtual float AnalogToAnalogConverter(float analogValue, float deltaTime)=0
Here is some information about the primary namespace.
Definition: tb_application_dialog.hpp:21
void RemoveAnalogBinding(const tbSystem::Unstable::DeviceHandle &deviceHandle, const tbSystem::Unstable::AxisIdentifier &axis)
virtual ~InputSignalConverterInterface(void)
Definition: tb_input_action.hpp:121
Key
Definition: tb_application_input.hpp:37
Definition: tb_input_action.hpp:110
float GetAnalogValue(void) const
InputSignalConverterInterface(void)
Definition: tb_input_action.hpp:116
void RemoveBinding(const tbApplication::Key &keyBinding)
void SetInputSignalConverter(InputSignalConverterInterface *signalConverter)
virtual bool AnalogToDigitalConverter(float analogValue, float deltaTime)=0
void AddBinding(const tbApplication::Key &keyBinding)
This is the heart of TurtleBrains for game developers to create GameScenes and Entities to interact w...
Definition: tb_application_dialog.hpp:19