#include "DisplayHP.h"

DisplayHP::DisplayHP( int vieMax, Uint32 front, Uint32 back, Vec up )
:Affichable( 0x0 ), m_vieMax( vieMax ), m_front( front ), m_back( back ), m_up( up ), m_vie()
{
    /// Création de la surface de barre de vie
    cadrer();

    /// Remplissage
    m_vie.h = BARRE_EPAIS;
    m_vie.w = vieMax;
    SDL_FillRect(m_img, 0x0, m_front);
}

DisplayHP::~DisplayHP()
{
    SDL_FreeSurface( m_img );
}

void DisplayHP::updateImg( const int &vie )
{
    m_vie.w = vie;

    SDL_FillRect(m_img, 0x0, m_back);
    SDL_FillRect(m_img, &m_vie, m_front);
}

void DisplayHP::IAmHere( const Vec &pos )
{
    m_pos = m_up + pos;
}

void DisplayHP::setMax( int max )
{
    if (m_vieMax != max)
    {
        m_vieMax = max;
        cadrer();
    }
}

void DisplayHP::cadrer()
{
    if ( m_img ) SDL_FreeSurface( m_img );
    m_img = SDL_CreateRGBSurface( SDL_HWSURFACE, m_vieMax, BARRE_EPAIS, 32, 0, 0, 0, 0 );
}