//GameConfig.h is a file for all configuration options for the game, this would typically be done by loading configuration options from file,
//but due to the goal of this game to be one single executable this is the best way of adding configurable elements without adding huge amounts
//of global data.
#ifndef _GAMECONFIG_H_
#define _GAMECONFIG_H_

#include "Colour.h"


//Visualisation properties
#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 240
#define SCREEN_DEPTH 16

//Engine properties
#define GAME_TICK_RATE 30

//Splash screen properties
#define SPLASH_SCREEN_TIME 3000

//Text properties
#define CHARACTER_WIDTH 8
#define CHARACTER_HEIGHT 8

//Level properties
#define LEVEL_LEAD_IN_TIME 1500

//Player properties
#define PLAYER_START_LIVES 5

//Game properties
#define GAME_TITLE "B r e a k  D o w n !"
#define GAME_TITLE_COLOUR ColourRGB(255,255,255)
#define GAME_TITLE_SHADOW_COLOUR ColourRGB(128,128,128)
#define GAME_OVER_TEXT "G A M E    O V E R"
#define GAME_POINTS_PER_HIT 10

//Breakout box dimensions
#define BOX_AREA_POS_X 10
#define BOX_AREA_POS_Y 10
#define BOX_AREA_WIDTH 300
#define BOX_AREA_HEIGHT 180

#define BOX_LOCATION_PADDING 1

#define BOX_MIN_TIME_BETWEEN_HITS 100

#define SMALL_BOX_WIDTH 12
#define SMALL_BOX_HEIGHT 5
#define MEDIUM_BOX_WIDTH 28
#define MEDIUM_BOX_HEIGHT 13
#define LARGE_BOX_WIDTH 50
#define LARGE_BOX_HEIGHT 20

#define WALL_BORDER_SIZE 5

#define NUM_BOX_COLOURS 7

//Paddle properties
#define PADDLE_SPEED 10
#define PADDLE_SPIN_PRECISION 8

//Ball properties
#define BALL_START_SPEED_X 2
#define BALL_START_SPEED_Y 5
#define BALL_MAX_SPEED_X 10
#define BALL_MAX_SPEED_Y 10

//Menu properties
#define MENU_NORMAL_COLOUR ColourRGB(0,0,255)
#define MENU_SELECTED_COLOUR ColourRGB(255,0,0)

#define MENU_START_GAME_TEXT "Start Game"
#define MENU_QUIT_GAME_TEXT "End Game"
#define MENU_PLAY_AGAIN_GAME_TEXT "Play Again"

//Sound properties
#define SOUND_VOLUME_STEP 10
#define SOUND_MAX_VOLUME 100

#endif
