@@ -25,13 +25,17 @@
#include <world/Level.hxx>
#include <cstring>
#include <util/InputManager.hxx>
#include <world/Menu.hxx>

using namespace glm;
using namespace std;

#define ALL_GOOD 0
#define STATE_ENUM_START ALL_GOOD + 1

#define SUBID_START (1 << 31)
#define MENUID_START (1 << 28)

#ifndef HANDLER_PARAMS
#define HANDLER_PARAMS int i
#define HANDLER_PARAMS_PASSED i
@@ -177,6 +181,11 @@ public:
void setEntData(posUpBuf* msg);
Entity *moveable;

/* Menu functions */
void displayMenu(Menu *menu);
inline void displayMenuSub() {this->displayMenu(this->menuSub);}
inline void displayMenuLevel() {this->displayMenu(this->menuLevel);}


/* End the race */
void win(Submarine *sub);
@@ -206,7 +215,8 @@ private:

void renderAll();

/* Uncomment stuff as it is implemented */
void initalizeMenus();


Renderer *r;
Renderer *rsky;
@@ -216,18 +226,17 @@ private:
Client *client;
int isServ;

//ActiveLevel: all entities in the world, world boundaries, etc
//ActiveLevel * activeLevel;
//GameEntities ** curentEntities; //this could be a sorted data struct to easily get drawables, collidables, etc
//Submarine ** subs;

/* A vector of filenames for levels. Whenever we load a level, we build it from scratch from the file. */
vector<const char*> levels;
Level * curLevel;

/* All playable submarines which are currently in the world. These will be bound to clients */
map<int, Submarine *> subs;

/* Menus */
Menu *menuSub; //sub selection menu
Menu *menuLevel; //level select menu

};