#pragma once

#include <vectors/vec2.h>
#include <render/sprite/atlas.h>

#include "entity.hpp"

#include "../equipment/shield.hpp"
#include "../equipment/weapon.hpp"

namespace game {
namespace entity {


class Hero: public Entity
{
private:
    vec2f position;
    float speed;
    bool direction;

    equipment::Shield *shield;
    equipment::Weapon *weapon;

    int health;
    float invisibleTimer;
    float damageUpTimer;

    render::sprite::icon icons[4];

    b2Fixture *fixture;
public:

    Hero(World *world) noexcept;
    virtual ~Hero() noexcept;

    virtual void Update() noexcept;
    virtual void Render() noexcept;

    virtual void OnCollide(Entity *entity);

    vec2f GetPosition() const noexcept;
};

}
}
