00001 #ifndef MM_ACTIVE_GS_H
00002 #define MM_ACTIVE_GS_H
00003
00004 #include <iostream>
00005 #include <assert.h>
00006
00007 #include "net/Game.h"
00008 #include "net/NetClient.h"
00009 #include "net/NetCallback.h"
00010 #include "levelGen/levelGen.h"
00011 #include "PlayerInput.h"
00012 #include "gamestate.h"
00013 #include "camera/PlayerCamera.h"
00014 #include "sceneManagement/sceneManager.h"
00015
00016 #include "lighting/lighting.h"
00017 #include "fog/fog.h"
00018 #include "scoremenu.h"
00019 #include "hud.h"
00020
00021 #include "hud/hud.h"
00022 #include "sceneManagement/sceneBucket.h"
00023
00024 #include "timer/timer.h"
00025 #include "particles/particles.h"
00026
00027 #define WALL_HEIGHT 10
00028 #define WALL_WIDTH 200
00029 #define WALL_LENGTH 200
00030
00031
00032 class ActiveCallback;
00033
00034 class ActiveGS : public GameState {
00035 private:
00036 PlayerInput *input;
00037 MMNet::Game *game;
00038 PlayerCamera camera;
00039 Lighting lighting;
00040 Timer timer;
00041
00042 SceneManager *sm;
00043 LevelGen *lg;
00044 HUD *hud;
00045 Fog fog;
00046 int curXY[4];
00047
00048 ArrowSystem as;
00049 ParticleSystem blood;
00050 ParticleSystem smoke;
00051 GLuint textureName[10];
00052
00053 ActiveCallback *callback;
00054
00055 void initSkybox();
00056 void drawSkyboxWalls();
00057 void drawSkyboxSky();
00058 void drawWall();
00059 void drawGround();
00060 GLuint groundDL, skyWallsDL, skyDL, wallDL;
00061 public:
00062 ActiveGS(MMNet::NetClient *client) : GameState(client) {
00063 assert(client != NULL);
00064 this->game = client->game;
00065 input = NULL;
00066 hud = NULL;
00067
00068 }
00069 virtual ~ActiveGS() { }
00070 void init(void);
00071 void update(void);
00072 void exit(void);
00073 void display(void);
00074
00075 void InitActors();
00076 void InitArrows();
00077 void InitPowerups();
00078
00079 ScoreMenu * scoreMenu;
00080 };
00081
00082
00083 class ActiveCallback : public MMNet::GameCallback {
00084 private:
00085 ActiveGS *parent;
00086
00087 public:
00088 ActiveCallback(ActiveGS *parent) { this->parent = parent; }
00089
00090 void SetupGame(TNL::U32 seed) { };
00091
00092 void StartGame() { }
00093
00094 void EndGame();
00095
00096 };
00097
00098
00099 #endif