#ifndef _HPP_KUNGFLOW_DECORATION
#define _HPP_KUNGFLOW_DECORATION

#include "physicsobject.hpp"

#include "gaia/gaia.hpp"
using namespace gaia;

class PlayState;

class Decoration : public PhysicsObject {

  public:

    Decoration(const PlayState *playState, const std::string &filename, e_FilterMode filterMode, const Vector2 &position, float zPosition, float height);
    virtual ~Decoration();

    //virtual void GetSpriteBounds(Vector2 &center, Vector2 &radius) const override;

    virtual void OnStepPhysicsTime() override;
    //virtual void PostStepPhysicsTime() override;
    virtual void Draw(const Viewport &viewport, const Camera &camera) const override;

    virtual Vector2 GetPosition() const override { return position; }
    virtual void SetPosition(const Vector2 &newPosition) override { position = newPosition; }
    virtual float GetZPosition() const override { return zPosition; }
    virtual void SetZPosition(float newZPosition) override { zPosition = newZPosition; }
    virtual Vector2 GetMovement() const override { return 0; }
    virtual void SetMovement(const Vector2 &newMovement) override {}
    virtual float GetZMovement() const override { return 0; }
    virtual void SetZMovement(float newZMovement) override {}

    virtual float GetRadius() const override { return 0.5f; }
    virtual float GetHeight() const override { return height; }

    Object *GetObject() const { return object; }

  private:

    Vector2 position;
    float zPosition;
    float height;

    Object *object;
    Sprite *sprite;

};

#endif
