aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/crepe/api')
-rw-r--r--src/crepe/api/Event.h10
-rw-r--r--src/crepe/api/KeyCodes.h4
-rw-r--r--src/crepe/api/Script.cpp7
-rw-r--r--src/crepe/api/Script.h10
4 files changed, 23 insertions, 8 deletions
diff --git a/src/crepe/api/Event.h b/src/crepe/api/Event.h
index 17ae809..d353a5b 100644
--- a/src/crepe/api/Event.h
+++ b/src/crepe/api/Event.h
@@ -39,7 +39,7 @@ public:
*/
class MousePressEvent : public Event {
public:
- //! mouse position
+ //! mouse position in game units
vec2 mouse_pos = {0, 0};
//! The mouse button that was pressed.
@@ -51,7 +51,7 @@ public:
*/
class MouseClickEvent : public Event {
public:
- //! mouse position
+ //! mouse position in game units
vec2 mouse_pos = {0, 0};
//! The mouse button that was clicked.
@@ -63,7 +63,7 @@ public:
*/
class MouseReleaseEvent : public Event {
public:
- //! mouse position
+ //! mouse position in game units
vec2 mouse_pos = {0, 0};
//! The mouse button that was released.
@@ -75,7 +75,7 @@ public:
*/
class MouseMoveEvent : public Event {
public:
- //! new mouse position
+ //! mouse position in game units
vec2 mouse_pos = {0, 0};
//! The change in mouse position relative to the last position (in pixels).
ivec2 mouse_delta = {0, 0};
@@ -86,7 +86,7 @@ public:
*/
class MouseScrollEvent : public Event {
public:
- //! mouse position when the scroll happened.
+ //! mouse position in game units when the scroll happened.
vec2 mouse_pos = {0, 0};
//! scroll direction (-1 = down, 1 = up)
int scroll_direction = 0;
diff --git a/src/crepe/api/KeyCodes.h b/src/crepe/api/KeyCodes.h
index dc3219a..1b9573a 100644
--- a/src/crepe/api/KeyCodes.h
+++ b/src/crepe/api/KeyCodes.h
@@ -3,6 +3,7 @@
#include <unordered_map>
namespace crepe {
+
//! Enumeration for mouse button inputs, including standard and extended buttons.
enum class MouseButton {
NONE = 0, //!< No mouse button input.
@@ -154,5 +155,6 @@ enum class Keycode {
/// \}
MENU = 348, //!< Menu key.
};
-
+//! Typedef for keyboard state.
+typedef std::unordered_map<Keycode, bool> keyboard_state_t;
} // namespace crepe
diff --git a/src/crepe/api/Script.cpp b/src/crepe/api/Script.cpp
index 753a9e3..7b56f61 100644
--- a/src/crepe/api/Script.cpp
+++ b/src/crepe/api/Script.cpp
@@ -1,7 +1,7 @@
#include <string>
#include "../manager/SceneManager.h"
-
+#include "../facade/SDLContext.h"
#include "Script.h"
using namespace crepe;
@@ -25,3 +25,8 @@ void Script::set_next_scene(const string & name) {
}
SaveManager & Script::get_save_manager() const { return this->mediator->save_manager; }
+
+const keyboard_state_t& Script::get_keyboard_state() const{
+ SDLContext& sdl_context = this->mediator->sdl_context;
+ return sdl_context.get_keyboard_state();
+}
diff --git a/src/crepe/api/Script.h b/src/crepe/api/Script.h
index 668e5d1..4fbf344 100644
--- a/src/crepe/api/Script.h
+++ b/src/crepe/api/Script.h
@@ -6,6 +6,7 @@
#include "../manager/Mediator.h"
#include "../system/CollisionSystem.h"
#include "../types.h"
+#include "../api/KeyCodes.h"
#include "../util/OptionalRef.h"
namespace crepe {
@@ -134,7 +135,14 @@ protected:
//! Retrieve SaveManager reference
SaveManager & get_save_manager() const;
-
+ /**
+ * \brief Utility function to retrieve the keyboard state
+ * \see SDLContext::get_keyboard_state
+ *
+ * \return current keyboard state map with Keycode as key and bool as value(true = pressed, false = not pressed)
+ *
+ */
+ const keyboard_state_t& get_keyboard_state() const;
//! \}
private: