aboutsummaryrefslogtreecommitdiff
path: root/source/Player.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Player.hpp')
-rw-r--r--source/Player.hpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/source/Player.hpp b/source/Player.hpp
new file mode 100644
index 0000000..1ed30cd
--- /dev/null
+++ b/source/Player.hpp
@@ -0,0 +1,42 @@
+#pragma once
+
+#include "GameObject.hpp"
+#include "GameObjectTypeTag.hpp"
+
+#define GLFW_INCLUDE_NONE
+#include <GLFW/glfw3.h>
+
+#include <span>
+#include <vector>
+
+struct PlayerKeyBinds {
+ int keyLeft = GLFW_KEY_A;
+ int keyRight = GLFW_KEY_D;
+ int keyJump = GLFW_KEY_SPACE;
+ int keyAttack = GLFW_KEY_J;
+
+ bool pressedLeft = 0;
+ bool pressedRight = 0;
+ bool pressedJump = 0;
+ bool pressedAttack = 0;
+
+ std::span<int> GetKeyArray();
+ std::span<bool> GetKeyStatusArray();
+};
+
+class Player : public GameObject {
+public:
+ std::vector<GLFWkeyboard*> boundKeyboards;
+ PlayerKeyBinds keybinds;
+
+public:
+ using GameObject::GameObject;
+
+ virtual Tags::GameObjectType GetTypeTag() const override { return Tags::GOT_Player; }
+
+ virtual void Awaken() override;
+ virtual void Resleep() override;
+ virtual void Update() override;
+
+ void HandleKeyInput(int key, int action);
+};