#include "api.hh"
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;



struct EPosition{  // Enhanced position
    int colonne;
    int ligne;
    int niveau;
    int distance;
};

// Fonction appelée au début de la partie.
void partie_init(void)
{
    // TODO
    
}

// Fonction appelée à chaque tour.
void jouer_tour(void)
{
    printf("TOUR %d\n", tour_actuel());
    
    if(current_phase == CONQUETE_NIDS){
        vector<troupe> troupes = troupes_joueur(player_id);
        vector<position> pains_pos = pains();
        
        if(pains_pos.size() == 0) return;
        for(troupe tr : troupes){

            int tr_id = tr.id;
            // position pos = tr.maman;
            position pos = {12, 1, 0}, pepep = {17, 17, 0};
            
            pains_pos = sort_by_distance(pains_pos, pos);
            // vector<direction> path2br = trouver_chemin(pos, pains_pos.at(0));
            vector<direction> path2br = trouver_chemin(pos, pepep);
            if(tour_actuel() < 100){
            printf("Troupe id:%d, troupe xy: (%d; %d), ", tr_id, pos.colonne, pos.ligne);
            printf("bread xy: (%d, %d), pathlen: %d\n\n", pains_pos.at(0).colonne, pains_pos.at(0).ligne, path2br.size());
            }
            for(direction dir : path2br){
                avancer(tr_id, dir);
            }
        }

        troupes = troupes_joueur(player_id);
        for(troupe tr : troupes){
            debug_poser_pigeon(tr.maman, PIGEON_JAUNE);
        }   
    }
}

// Fonction appelée à la fin de la partie.
void partie_fin(void)
{
    // TODO


}


int main(){
    EPosition p = {10, 10, 0, 1};
    position yes = (position)p;
    printf("%d %d %d \n", yes.colonne, yes.ligne, yes.niveau);

}

