#ifndef _H_GAMEACTOR_H #define _H_GAMEACTOR_H #include #include #include "gameplay/entity.h" #include "utility/mousestate.h" class Component; class AI; class Weapon; class EventManager; class GameActor : public Entity { public: GameActor(const std::shared_ptr& shader) : Entity(shader) { actorid = SDL_GetTicks(); } ~GameActor(); void addComponent(std::shared_ptr component); void equipWeapon(std::shared_ptr weapon); void attachEventManager(std::shared_ptr eventManager); void update(float deltaTime) override; void render(const std::shared_ptr& camera) override; const std::shared_ptr& getHeldWeapon() const; const int getActorID() const { return actorid; } void setRotation(const float& rotation) override; void moveUp(); void moveDown(); void moveLeft(); void moveRight(); // Top down shooter controls, mostly for the player to use in top down shooting sections void moveForward(); void moveBackward(); void strafeLeft(); void strafeRight(); void fireWeapon(); void followMouse(const MouseState&); private: int actorid; std::vector> components; std::shared_ptr ai; std::shared_ptr currentWeapon = nullptr; std::shared_ptr eventManager; }; #endif //_H_GAMEACTOR_H