#pragma once

// General handy stuff
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#define M_PI (3.1415926535897932384626433832795)

// Window-management stuff
#include "../../glutar/glutar.h"
#include <GL/glut.h>

// Load the super-handy glh extensions!
//#define GLH_EXT_SINGLE_FILE
#include <glh_extensions.h>
//#include <glh_glut.h>
#include <glh_array.h>
#include <glh_obs.h>
#include <glh_convenience.h>
// ...and nVidia's convenient png loader!
#include "nv_png.h"

// Add my own handy convenience function:
namespace glh
{
	inline void glRotate(float angle, vec3f axis)
		{	glRotatef(angle, axis[0], axis[1], axis[2]);  }
};

#include <vector>

using namespace std;
using namespace glh;

typedef glh::array2<BYTE> gs_image_type;
typedef glh::array2<glh::vec3ub> rgb_image_type;
typedef vector<rgb_image_type> rgb_image_list_type;

typedef double timet;

// Some really handy defines for working with vec3f's
// (since they don't allow access with: vector.x)
#define X 0
#define Y 1
#define Z 2

// GL management routines
#include "glRender.h"
// Input management routines
#include "input.h"
// Sound management routines
#include "sound.h"

// Game variables and control routines
#include "map.h"
#include "gameEngine.h"
#include "text.h"

#include "world.h"

#include "intro.h"
#include "menu.h"

#include "hud.h"

// Network handling stuff
#include "HTNetClient.h"

/*
#include "networkSetup.h"
#include "networkInit.h"
#include "networkComm.h"
*/

// Overall game object:
#include "game.h"
