#pragma once #include "GameObject.hpp" #include "Material.hpp" #include "Sprite.hpp" #include #include #define GLFW_INCLUDE_NONE #include #include #include 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 GetKeyArray(); std::span GetKeyStatusArray(); }; class Player : public GameObject { BRUSSEL_CLASS() public: std::vector boundKeyboards; PlayerKeyBinds keybinds; Sprite sprite; RenderObject renderObject; int mId; public: Player(GameWorld* world, int id); virtual void Awaken() override; virtual void Resleep() override; virtual void Update() override; Material* GetMaterial() const; void SetMaterial(Material* material); virtual std::span GetRenderObjects() const override; int GetId() const { return mId; } void HandleKeyInput(int key, int action); // File is designated by player ID bool LoadFromFile(); bool SaveToFile(); };