#ifndef MADUTILITY
#define MADUTILITY 1

#include <il/il.h>
#include <il/ilu.h>
#include <il/ilut.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glut.h>
#include <math.h>
#include <vcg/xml/xml.h>
#include <stdio.h>
#include <assert.h>
#include <vector>
#include <algorithm>
#include <vcg/Point3.h>
#define MAXMAP 50

#define TILE  0
#define WALL 1
#define GOAL  2
#define START 5
#define UP   8
#define ZERO 9
#define FLAT 4
#define INCLINE 3
#define PYRAMID 6
#define LEVEL 1
#define SLIDE 2
#define ENEMY 10
#define MAXENEMY 4
#define MAX_Y 100 // massima dimensione verticale definita nella glortho
#define MAX_X 100
#define MAX_Z 100
#define DEFAULT_Y 0 // dimensione della mappa di default
#define DEFAULT_X 50
#define DEFAULT_Z 50
#define MIN_Y 0 //  dimensione minima della mappa 
#define MIN_X 10
#define MIN_Z 10
#define NOMAP -1
#define NOGOAL -1    //indica spazi vuoti nel vettore dei tile goal
#define WIREFRAME 1
#define SOLID 2
#define TEXTURED 3
#define ROBOT 55
#define NOROBOT 0
#define NORTH 13
#define SOUTH -13
#define EAST 80
#define WEST -80
#define NTH 0
#define STH 1
#define WST 2
#define EST 3
#define XX 0
#define YY 1
#define ZZ 2

//=======================MadTile========================================
//struttura che contiene le 5 altezze(NO,NE,SO,SE) di una singola 
//piastrella.                                                       <br>
//le infomazioni significative per ogni piastrella sono 5 valori  
//che rappresentano le altezze di 5 punti                           <br>
//
//<!--TABELLA PER DOCUMENTAZIONE IN HTML-->
//  <table border="1" cellpadding="0" cellspacing="0" 
//  style="border-collapse: collapse" bordercolor="#111111" width="12%" 
//  id="AutoNumber1" bgcolor="#000000">
//  <tr><td width="6%"><p align="left"><font color="#FFFFFF">NE</font>
//  </td><td width="75%"> </td><td width="23%">
//  <p align="right"><font color="#FFFFFF">NW</font></td></tr>
//  <tr> <td width="6%"> </td> <td width="75%"> <p align="center">
//  <font color="#FFFFFF">C</font></td> <td width="23%"> </td>
//  </tr><tr> <td width="6%"><font color="#FFFFFF">SE</font></td> 
//  <td width="75%"> </td> <td width="23%"><p align="right">
//  <font color="#FFFFFF">SW</font></td></tr></table> 
//======================================================================

struct MadTile
{
    /**Altezza NordOvest*/
    double NW;
    /**Altezza NordEst*/
    double NE;
    /**Altezza SudOvest*/
    double SW;
    /**Altezza SudEst*/
    double SE;
    /**Altezza Centrale*/
    double C;
    /**Id Texture Tile*/
    int typet;
    /**Id Texture Wall*/
    int typew;
    /**tag goal*/
    int goal;
    /**informazione gravità*/
    double grav;
    /**informazione attrito*/
    double attr;
};
//=======================coord==========================================
//struttura per le coordinate di una tile nella mappa (X,Z)
//======================================================================
struct coord
{   /**coordinata Tile X*/
    int X;
    /**coordinata Tile Z*/
    int Z;
};

#endif