#pragma once

#include <Schrift.h>
#include <UIMLView.h>

#include "InventoryView.h"
#include "NetworkAPIProcessor.h"

class StatusBarsElement : public Framework::UIMLElement
{
public:
    StatusBarsElement();
    //! prüft, ob dieses UIML Element für ein bestimmtes xml Element zuständig
    //! ist
    bool isApplicableFor(Framework::XML::Element& element) override;
    //! erstellt eine neue Zeichnung zu einem gegebenen xml Element
    Framework::Zeichnung* parseElement(Framework::XML::Element& element,
        Framework::UIMLContainer& generalFactory) override;
    bool updateElement(Framework::XML::Element& element,
        Framework::Zeichnung& z,
        Framework::UIMLContainer& generalFactory) override;
    //! wendet die layout parameter zu einer Zeichnung an
    void layout(Framework::XML::Element& element,
        Framework::Zeichnung& z,
        int pWidth,
        int pHeight,
        Framework::UIMLContainer& generalLayouter) override;
};

class StatusBarsView : public Framework::ZeichnungHintergrund,
                       public NetworkAPIProcessor
{
private:
    Framework::Text id;
    int targetEntity;
    float health;
    float hunger;
    float thirst;
    float energy;
    Framework::Text healthText;
    Framework::Text hungerText;
    Framework::Text thirstText;
    Framework::Text energyText;
    Framework::Bild* healthIcon;
    Framework::Bild* hungerIcon;
    Framework::Bild* thirstIcon;
    Framework::Bild* energyIcon;
    Framework::TextRenderer tr;

public:
    StatusBarsView(Framework::Text id, int targetEntity);
    ~StatusBarsView();
    void api(char* message) override;
    void render(Framework::Bild& rObj) override;
};