#include "shape.hpp"

//construire la form avec le tableau const char
void shape::build(const char * newShape)
{
    for (_qty=0;_qty<20;_qty++)
    {
        char c = _qty+49;					//ascii {1, 2, 3 .... 8, 9}
        if (_qty>8)
            c+=7;							//ascii {A, B, C .... J, K}
	    int i = findIndex<6,6>(newShape,c);	//trouver le caracter et retourne l'index dans le tableau
	    if (i==-1)							//quitter en cas d'échec
		    return;
	    _x[_qty] = xFromIndex<6,6>(i);		//battire les coordonnés avec l'index
	    _y[_qty] = yFromIndex<6,6>(i);
    }
    reset();								//initialisé les autres variable
}

//reinitialise les variables
void shape::reset()
{
    _sx = _sy = 0;
    _size = _qty;
}

//validation de la taille du robot avec celle de la forme
bool shape::resize(int newSize)
{
    if (_qty < newSize)
        return false;
    _size = newSize;
    return true;
}

//ajustement pour conformer les permutations avec le level
void shape::adjust(int vx, int vy)
{
    _sx = vx - _x[0];
    _sy = vy - _y[0];
}

//retourne la coordonné horizontale avec modif
int shape::col(int i)
{
    return _x[i] + _sx;
}

//retourne la coordonné verticale avec modif
int shape::row(int i)
{
    return _y[i] + _sy;
}

//retourne la taille modifier
int shape::size()
{
    return _size;
}
