//
//  affichage.c
//  labyrinthe
//
//  Created by léo LELLOUCHE on 07/04/2016.
//  Copyright © 2016 léo LELLOUCHE. All rights reserved.
//

#include "../header.h"

void    init_affichage_map(int type, char **affichage, char **labyrinthe, t_point position, int *fd)
{
    if (type == 1)
        affichage_arround(labyrinthe, position);
    else if (type == 2)
        affichage_fil(labyrinthe, affichage, position, fd);
}

void    print_tab(char **tab, int i, int fd)
{
    dprintf(fd, "%s\n", tab[i]);
    if (tab[0][0] == '-')
    {
        if ((i > 0) && (tab[i][1] == '-'))
            return;
    }
    else if ((i % 2 == 1) && ((tab[i][1] == MUR_EXT) || (tab[i][1] == SORTIE)))
        return;
    print_tab(tab, i + 1, fd);
}

void    print_life(int vie, int i)
{
    if (i > 0)
    {
        if (vie >= 5)
            printf("/");
        else
            printf(" ");
        print_life(vie - 5, i - 1);
    }
}

void    affichage_infos(t_vie vie)
{
    printf("------------------------------------------------------------------\n");
    printf("|                        z : Aller en haut                       |\n");
    printf("|  q : Aller a gauche                        d : Aller a droite  |\n");
    printf("|                        s : Aller en bas                        |\n");
    printf("------------------------------------------------------------------\n\n");
    printf("Vie Restante : %d\n", vie.restante);
    printf("----------------------\n|");
    print_life((vie.restante * 100) / vie.totale, 20);
    printf("|\n----------------------\n");
    printf("Dans quel direction voulez-vous aller ?\n");
}

void    affichage_arround(char **labyrinthe, t_point position)
{
    char **affichage;
    
    affichage = malloc(sizeof(char *) * 7);
    malloc_2d(affichage, 7, 8, 0);
    
    affichage[0][0] = affichage[0][1] = affichage[0][2] = affichage[0][3] = affichage[0][4] = affichage[0][5] = affichage[0][6] = '-';
    affichage[6][0] = affichage[6][1] = affichage[6][2] = affichage[6][3] = affichage[6][4] = affichage[6][5] = affichage[6][6] = '-';
    affichage[1][0] = affichage[1][0] = affichage[2][0] = affichage[3][0] = affichage[4][0] = affichage[5][0] = '|';
    affichage[1][6] = affichage[1][6] = affichage[2][6] = affichage[3][6] = affichage[4][6] = affichage[5][6] = '|';
    
    affichage[1][1] = labyrinthe[min_0(position.line - 2)][min_0(position.col - 2)];
    affichage[1][2] = labyrinthe[min_0(position.line - 2)][min_0(position.col - 1)];
    affichage[1][3] = labyrinthe[min_0(position.line - 2)][position.col];
    affichage[1][4] = labyrinthe[min_0(position.line - 2)][position.col + 1];
    affichage[1][5] = labyrinthe[min_0(position.line - 2)][position.col + 2];
    
    affichage[2][1] = labyrinthe[min_0(position.line - 1)][min_0(position.col - 2)];
    affichage[2][2] = labyrinthe[min_0(position.line - 1)][min_0(position.col - 1)];
    affichage[2][3] = labyrinthe[min_0(position.line - 1)][position.col];
    affichage[2][4] = labyrinthe[min_0(position.line - 1)][position.col + 1];
    affichage[2][5] = labyrinthe[min_0(position.line - 1)][position.col + 2];
    
    affichage[3][1] = labyrinthe[position.line][min_0(position.col - 2)];
    affichage[3][2] = labyrinthe[position.line][min_0(position.col - 1)];
    affichage[3][3] = 'x';
    affichage[3][4] = labyrinthe[position.line][position.col + 1];
    affichage[3][5] = labyrinthe[position.line][position.col + 2];
    
    affichage[4][1] = labyrinthe[position.line + 1][min_0(position.col - 2)];
    affichage[4][2] = labyrinthe[position.line + 1][min_0(position.col - 1)];
    affichage[4][3] = labyrinthe[position.line + 1][position.col];
    affichage[4][4] = labyrinthe[position.line + 1][position.col + 1];
    affichage[4][5] = labyrinthe[position.line + 1][position.col + 2];
    
    affichage[5][1] = labyrinthe[position.line + 2][min_0(position.col - 2)];
    affichage[5][2] = labyrinthe[position.line + 2][min_0(position.col - 1)];
    affichage[5][3] = labyrinthe[position.line + 2][position.col];
    affichage[5][4] = labyrinthe[position.line + 2][position.col + 1];
    affichage[5][5] = labyrinthe[position.line + 2][position.col + 2];
    
    affichage[0][7] = affichage[1][7] = affichage[2][7] = affichage[3][7] = affichage[4][7] = affichage[5][7] = affichage[6][7] = '\0';
    
    print_tab(affichage, 0, 1);
    free_2d((void **)affichage, 0, 7);
    free(affichage);
}

