#include "Menestrel.h"

Menestrel::Menestrel(Input *input, Niveau *terrain, Controle controle): Joueur(input, terrain, controle)
{
    m_skin = IMG_Load("Skins/Menestrel.png");
    if(m_skin == 0)
        std::cout << "Erreur de chargement du skin Skins/Menestrel.png" << std::endl;
}
Menestrel::~Menestrel()
{
    SDL_FreeSurface(m_skin);
}


void Menestrel::deplacer()
{
    if(m_controle == local)
    {
        if(m_input->getTouches(SDLK_UP))
            m_nouvDir = Haut;
        else if(m_input->getTouches(SDLK_RIGHT))
            m_nouvDir = Droite;
        else if(m_input->getTouches(SDLK_DOWN))
            m_nouvDir = Bas;
        else if(m_input->getTouches(SDLK_LEFT))
            m_nouvDir = Gauche;
    }
    int posX = m_pos.x + (m_skin->w-LG_BLOC)/2;
    int posY = m_pos.y + (m_skin->h-LG_BLOC)/2;
    int dirPossible = Arret;
     if(m_terrain->typeBloc(posX-1, posY, 1) != MUR && m_terrain->typeBloc(posX-1, posY+LG_BLOC-1, 1) != MUR)
            dirPossible |= Gauche;
     if(m_terrain->typeBloc(posX+LG_BLOC, posY, 1) != MUR && m_terrain->typeBloc(posX+LG_BLOC, posY+LG_BLOC-1, 1) != MUR)
            dirPossible |= Droite;
     if(m_terrain->typeBloc(posX, posY-1, 1) != MUR && m_terrain->typeBloc(posX+LG_BLOC-1, posY-1, 1) != MUR)
            dirPossible |= Haut;
     if(m_terrain->typeBloc(posX, posY+LG_BLOC, 1) != MUR && m_terrain->typeBloc(posX+LG_BLOC-1, posY+LG_BLOC, 1) != MUR)
            dirPossible |= Bas;

    if(dirPossible & m_nouvDir)
        m_direction = m_nouvDir;

    if(dirPossible & m_direction)
    {
        m_pos+=m_direction;
        posX = m_pos.x + (m_skin->w-LG_BLOC)/2;
        posY = m_pos.y + (m_skin->h-LG_BLOC)/2;
    }
    else if((!(dirPossible&Haut) && !(dirPossible&Bas) && (m_direction == Gauche || m_direction == Droite)) ||
            (!(dirPossible&Gauche) && !(dirPossible&Droite) && (m_direction == Haut || m_direction == Bas)))
    {
        m_direction = m_direction==Gauche?Droite:m_direction==Droite?Gauche:m_direction==Haut?Bas:Haut;
        m_nouvDir = m_direction;
    }
}