#ifndef TM_H
#define TM_H

#define TM_TAILLE_MAX_X      32
#define TM_TAILLE_MAX_Y      32
#define TM_TAILLE_MAX_Z      32

/* macro pour pointer sur une cellule du tableau tm */
#define P_TM( x, y, z ) \
    &tab_tm[ x + ( y * tm_taille_max_x ) + \
            (z * tm_taille_max_x * tm_taille_max_y) ]

/* énumération des objets */
#define OBJET_VIDE            0
#define OBJET_BLOC            1
#define OBJET_SAUT            2
#define OBJET_SAUT_COMPLEMENT 3
#define OBJET_DEPART          4
#define OBJET_ARRIVEE         5
#define OBJET_LUMIERE         6
#define OBJET_ROUTE           7
#define OBJET_SAUT_ROUTE      8

#define DIR_NORD  1
#define DIR_EST   2
#define DIR_SUD   4
#define DIR_OUEST 8

struct cell_tm {
    unsigned char objet;
    unsigned char orientation;
    unsigned char forcer_direction;
};

extern int inventaire_de_tous_les_blocs(long *nb_objets,
                                        long *tab_objets,
                                        long nb_max_objets,
                                        struct cell_tm *tab_tm,
                                        long tm_taille_max_x,
                                        long tm_taille_max_y,
                                        long tm_taille_max_z,
                                        char *buffer_erreur,
                                        int maxlen_erreur);

extern int transferer_dans_tableau_tm(struct cell *tabcells,
                                      long total_cells,
                                      long taille_x, long taille_y,
                                      long taille_z,
                                      struct cell_tm *tab_tm,
                                      int tm_taille_max_x,
                                      int tm_taille_max_y,
                                      int tm_taille_max_z,
                                      int opt_silent_mode,
                                      char *buffer_erreur,
                                      int maxlen_erreur);
#endif                          /* TM_H */
