#pragma once
#include "MadUtility.h"
#include "CCamera.h"
#include <io.h>
#include <stdio.h>
#define MENU_MAIN 1000
#define MENU_PAUSE 2500
#define MENU_GAMEOVER 1500
#define MENU_GOAL 1100
#define MENU_MAP 2000
#define MENU_TIMEOUT 2800
#define MENU_DISPLAY 3000
#define MENU_CAMERA 4000
#define MENU_BALL 5000
#define MENU_CONTROL 6000
#define MENU_TIMER 7000
#define MENU_GRAPHICS 8000
#define MENU_ENV 8500
#define MENU_DEAD 9000
#define ITEM_MAIN_START 1
#define ITEM_MAIN_MAP 2
#define ITEM_MAIN_DISPLAY 3
#define ITEM_MAIN_CAMERA 4
#define ITEM_MAIN_GRAPHICS 5
#define ITEM_MAIN_BALL 6
#define ITEM_MAIN_CONTROL 7
#define ITEM_MAIN_TIMER 8
#define ITEM_GAMEOVER 1
#define ITEM_GOAL 1
#define ITEM_DEAD 1
#define ITEM_EXIT 9
#define ITEM_GRAPHICS_TEXTURED 1
#define ITEM_GRAPHICS_NORMAL 2
#define ITEM_GRAPHICS_WIREFRAME 3
#define ITEM_GRAPHICS_SOLID 4
#define ITEM_GRAPHICS_ROBOT 5
#define ITEM_GRAPHICS_NOROBOT 6
#define ITEM_GRAPHICS_ENV 7
#define ITEM_GRAPHICS_BACK 8
#define ITEM_ENV_DEFAULT 1
#define ITEM_ENV_METAL 2
#define ITEM_ENV_GLASS 3
#define ITEM_ENV_PLASTIC 4
#define ITEM_ENV_SHINING 5
#define ITEM_ENV_BACK 6
#define ITEM_DISPLAY_W_640x480 1
#define ITEM_DISPLAY_W_800x600 2
#define ITEM_DISPLAY_W_1024x768 3
#define ITEM_DISPLAY_FULLSCREEN 4
#define ITEM_DISPLAY_BACK 5
#define ITEM_CAMERA_FOLLOW 1
#define ITEM_CAMERA_NFOLLOW 2
#define ITEM_CAMERA_BACK 3
#define ITEM_CONTROL_ROLL 1
#define ITEM_CONTROL_LUKE 2
#define ITEM_CONTROL_SNS20 3
#define ITEM_CONTROL_SNS40 4
#define ITEM_CONTROL_SNS60 5
#define ITEM_CONTROL_SNS80 6
#define ITEM_CONTROL_BACK 7
#define ITEM_BALL_METAL 1
#define ITEM_BALL_GLASS 2
#define ITEM_BALL_PLASTIC 3
#define ITEM_BALL_SHINING 4
#define ITEM_BALL_BACK 5
#define ITEM_TIMER_100 1
#define ITEM_TIMER_300 2
#define ITEM_TIMER_600 3
#define ITEM_TIMER_UNLIMITED 4
#define ITEM_TIMER_BACK 5
#define ITEM_MAP 0
#define ITEM_MAP_BACK 9
using namespace vcg;
class CConsole
{
public:
/**vettore che contiene il nome delle mappe che la console trova nella directory del gioco*/
string map[100];
/**vettore che contiene il nome del file che contiene le texture delle sfere*/
string sphere[100];
/**numero dei file texture sfere che sono state trovate*/
int numsphere;
/**numero delle mappe che sono state trovate*/
int nummap;
/**dimensione X della console*/
int SizeX;
/**dimensione Y della console*/
int SizeY;
/**numero degli item da visualizzare nel menu corrente*/
int numitem;
/**nome del file della mappa corrente*/
char filemap[120];
/**nome del file della mappa corrente*/
char filesphere[120];
/**contiene la stringa dell'item selezionato*/
char selitem[120];
public:
CConsole(void);
~CConsole(void);
//===========================DrawBox=========================
//Disegna nella console un box partendo dalle coordinate (x,y)
// di dimensione (sizex)X(sizey) di colore nero se sel=true
// altrimenti bianco trasparante
//============================================================
void DrawBox(int x, int y , int sizex, int sizey, bool sel);
//====================title==============================
//scrive nel menu come titolo la stringa puntata da t
//=======================================================
void title(char *t);
//====================menu===============================
//Disegna un menu nella console.
//type: tipo di menu valori possibili:(MENU_MAIN,MENU_PAUSE,
//MENU_GAMEOVER,MENU_GOAL,MENU_MAP,MENU_TIMEOUT,MENU_DISPLAY,
//MENU_CAMERA,MENU_BALL,MENU_CONTROL,MENU_TIMER,MENU_GRAPHICS,
//MENU_ENV,MENU_DEAD) <br>
//selpos: posizione nel menu dell'item selezionato
//=======================================================
void menu(int type,int selpos);
//====================item===============================
//Disegna un item ne menu. <br>
// pos: posizione dell'item nel menu <br>
// str: la stringa che viene visualizzata <br>
// sel: se true item selezionato altrimenti false <br>
//=======================================================
void item(int pos,char *str,bool sel);
//=================setSize===============================
//permette di definire le dimensione della console <br>
// X: coordinata X <br>
// Y: coordinata Y <br>
//=======================================================
void setSize(int X, int Y);
//=================printf================================
//stampa nella console alle coordinta x,y la stringa
// contenuta in format
//=======================================================
void printf(int x, int y, char* format);
//=================glPrintf==============================
//stampa una stringa centrata in (x,y). <br>
//x,y: coordinate di stampa <br>
//align: valore di allineamento <br>
//scale: valore di scala <br>
//sel: booleano che indica che la strina è selezionata
// oppure no <br>
//format...: stringa da stampare formattata
//=======================================================
void glPrintf(GLuint x, GLuint y, int align, GLfloat scale,bool sel,char* format, ...);
//==================ListMap==============================
//crea la lista delle mappe presenti nella directory. <br>
//dirPath: directory di ricerca
//========================================================
void ListMap(string dirPath);
//==================ListSphere=====================================
//crea la lista delle texture sphere presenti nella directory. <br>
//dirPath: directory di ricerca
//=================================================================
void ListSphere(string dirPath);
};