/*
 * (C) Copyright Chris B. Kaynor 2006
 * All Rights Reserved.
 *
 * CONTACT: chris@kaynor.net
*/

#ifndef CBK_GAME_SETTINGS
#define CBK_GAME_SETTINGS

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <assert.h>
#include <ctime> 
#include <string.h>

#ifdef __linux__
	#include <GL/glut.h>
	#include <GL/glext.h>
	#include <png.h>
	#include <pngconf.h>
	#include <zlib.h>
	#include <zconf.h>
#else
	#include "glut.h"
	#include "glext.h"
	#include "png.h"
	#include "pngconf.h"
	#include "zlib.h"
	#include "zconf.h"
#endif

//Movement Constants
#define MaxRotationSpeed     35.00f			// Maximum rotational speed in degrees/second of the tanks
#define MaxMovementSpeed     15.00f			// Maximum forward speed in units/second of the tanks
#define MinMovementSpeed     -2.50f			// Maximum reverse speed of units/second the tanks

#define TurboRefireRate      15.00f         // Number of seconds between fires of the Turbo Booster
#define TurboMovementSpeed   30.00f			// Maximum forward speed in units/second of the tanks while under Turbo Booster
#define TurboLife             3.00f			// Amount of time, in seconds, the Turbo Booster lasts for

//Projectile Constants
#define RefireRate            0.50f			// Number of seconds between refires by the same tank

#define BaseProjectileSpeed  35.00f			// Units/Second of the Projectile, added to the speed of the tank while firing
#define ProjectileLife        1.50f			// Number of seconds projectile should live

//Scoring Constants
#define BulletPointCost		     5			// Number of points to charge per bullet shot
#define TankPointCost		   300			// Number of points to charge per life used
#define TankPointGain		   100			// Number of points to award per tank killed

//Misc. Constants
	//Floats
#define WorldSize           650.00f			// World size in units
#define HorizonDistance      50.00f			// Distance to the horizon in units
	//Longs
#define Maximum_Tanks           50			// Maximum number of tanks to allow
#define Maximum_Projectiles    200			// Maximum number of projectiles to allow
#define Maximum_Objects        150			// Maximum number of objects to allow

	//Strings
#define FULL_SCREEN "800x600:16@60"			// Game mode to attempt to use, will open windowed is not defined, and will default to 800x600 maximized window should the game mode be invaild

	//Booleans
#define COLLISION_DETECTION_ENABLED			// Enable tank-to-tank collisions
//#define FIRST_PERSON_VIEW					// Use a first-person view, rather than an over-the-shoulder view

//Fog Constants
	//Floats
#define FogDensity            0.03f		// Density of the fog

	//Float Arrays
static const GLfloat Color_Fog[3] =	
                    {0.10, 0.10, 0.15};		//Color of the fog

//Lighting Constants
	//Float Arrays
		//Light 0 (colors objects and ground)
static const GLfloat     PositionLight0[] =		
      {-300.0,  999.9, -300.0,    0  };		//        Light 0 Position
static const GLfloat AmbientColorLight0[] =
      {   0.4,    0.4,    0.5,    0.0};		//Ambient Light 0 Color
static const GLfloat DiffuseColorLight0[] =
      {   0.9,    0.9,    1.0,    0.0};		//Diffuse Light 0 Color

//Base, Non-Light Color
	//Float Arrays
static const GLfloat AmbientColor[3] =
                    {1.0, 1.0, 1.0};		//Ambient Color (colors sky)

#endif //CBK_GAME_SETTINGS