#pragma once #include "MadMap.h" #include "MarbleBall.h" #include "MarbleEnemy.h" #include "CCamera.h" #include "Console.h" #include <vcg/xml/xml.h> //settaggio di init dell'ambiente opengl per la luce e i materiali #define METALLO 0 #define VETRO 1 #define PLASTICA 2 #define LUMINOSO 3 #define DEFAULT -100 #define ROLLCONTROL 1 #define LUKECONTROL 2 #define C_UP 1000 #define C_DOWN -1000 #define C_RIGHT 100 #define C_LEFT -100 /**vista opengl del gioco*/ class GameView { public: /**tasto destro del mouse*/ bool b_right; /**tasto sinistro del mouse*/ bool b_left; /**camera della vista del gioco*/ CCamera camera; /**mappa del gioco*/ MadMap mp; /**pallina del gioco*/ MarbleBall ball; /**nemici**/ MarbleEnemy enemy[MAXENEMY]; /**angolo del camera per la rotazione intorno asse Y della pallina*/ float k; /**angolo della camera per la rotazione intorno asse x/z della pallina*/ float v; /**limite angolo della camera per rotazione intorno asse Y*/ float kl; /**limite angolo della camera per rotazione intorno asse x/z*/ float vl; /** h: distanza corrente della camera dalla pallina*/ float h; /** limite della distanza della camera dalla pallina */ float hl; /**delta temporale*/ float dt; /** sensibilità del movimento controllo*/ float sns; /**ampiezza X della vista */ int SizeViewX; /**ampiezza Y della vista */ int SizeViewY; /**variabile che indica se le texture della mappa nella vista sono inizializzate*/ bool inittexture; /**tempo rimanente nel gioco in corso*/ int conto_alla_rovescia; /**tempo iniziale del gioco in corso*/ int time_game; /**frame per secondo*/ int fps; /**numero di frame che sono stati calcolati dall'ultimo intervallo di tempo*/ int frame; /**time iniziale dell'intervallo temporale*/ int timebase; /**ultimo time dell'intervallo temporale*/ int time; /**coordinate del mouse*/ int x, y; /**vecchie coordinate del mouse*/ int ox, oy; /**indica se la vista è in modalità pause*/ bool pause; /**numero vite disponibili nel gioco in corso*/ int num_vite; /**indica se la camera segue i movimenti della palla*/ bool camerafollowball; /**il tipo di l'ambiente corrente : METALLO,VETRO, PLASTICA, LUMINOSO, DEFAULT*/ int option_materiale; /**console usata per i menu*/ CConsole console; /**menu corrente*/ int menu; /**item corrente*/ int item; /**il tipo di grafica corrente (WIREFRAME,SOLID,TEXTURED)*/ int optionGraphics; /**il tipo di controllo del movimento della palla corrente:ROLLCONTROL, LUKECONTROL*/ int scontrol; /**indice della mappa corrente*/ int currentmap; /**il tipo di visualizzazione dei nemici corrente: ROBOT, NOROBOT*/ int optionEnemy; //int moving; public: //==================Init============================ //Inizializza la vista del gioco //================================================== void Init(int option); //==================SetKey========================== //permette di indicare tasto premuto della tastiera nella vista //================================================== void setKey(int); //==================SetSKey========================== //permette di indicare tasto Speciale premuto della tastiera nella vista //================================================== void setSKey(int key); //==================SetSKeyUp========================== //permette di indicare tasto Speciale rilasciato della tastiera nella vista //================================================== void setSKeyUp(int key); //==================SetMouse========================== //aggiorno le coordinate del mouse nella vista //==================================================== void setMouse(int cx, int cy); GameView(void); ~GameView(void); //==================Reshape============================================ //Imposta la visualizzazione della view in base alle dimensioni (w)X(h) //===================================================================== void Reshape(int w, int h); //==================moveCamera=========================== //funzione che sposta la camera //======================================================= void moveCamera(void); //==================Draw================================= //renderizza un fotogramma nella view //======================================================= int Draw(void); //==================moveBall========================================== //sposta la pallina in base al type passato. <br> //type può avere i seguenti valori: <br> //ROLLCONTROL: spostamento rotolamento in base movimento del mouse<br> //LUKECONTROL: spostamento elastico in base movimento del mouse <br> //C_UP: spostamento avanti attraverso il tasto UP <br> //C_DOWN: spostamento indietro attraverso il tasto DOWN <br> //C_LEFT: spostamento a sinistra attraverso il tasto LEFT <br> //C_RIGHT: spostamento a destra attraverso il tasto UP <br> //==================================================================== void moveBall(int type); //==================Update============================= //Aggiorna lo stato della vista //======================================================= void Update(void); //==================move============================= //applica il movimento (camera e/o pallina) //======================================================= void move(void); //==================Pause============================= //mette in stato di pausa la vista //======================================================= void Pause(void); //==================TargetCamera======================================================= //calcola la posizione il punto di vista della camera in modo che la pallina sia sempre in vista //===================================================================================== void TargetCamera(void); //==================selectMenuItem============================= //permette di selezionare una voce nei menu <br> //menu: menu corrente <br> //item: item selezionato <br> //======================================================= void selectMenuItem(int menu, int item); //==================LoadMap============================= //carica una mappa. <br> //map: nome della mappa <br> //======================================================= int GameView::LoadMap(char *map); };