#ifndef COMMON_TYPES_H
#define COMMON_TYPES_H

#include <cmath>
#include <sstream>

typedef unsigned long id_t;
typedef unsigned long long dt_distance_t;
typedef double weight_t;
//typedef long long position_t; //BUG FIXED: Mantharis, note: position on server is represented with doubles!!!
typedef double position_t;
//typedef long long speed_t;
typedef double speed_t;	//BUG FIXED: Mantharis, note: speed on server is represented with doubles!!!

typedef double course_t;

enum EMainState {
	SHIP_SECTION,
	MAIN_SHIP_PREPARED,
	BASE_SECTION,
	MAIN_BASE_PREPARED,
	TREE,
	CHAT,
	TRADE,	
	FIGHT, 
	BUILD, 
	SPACE_MAP,
	MAIN_NONE, 
	LOGIN,
	REGISTRATION,
};

enum EShipSectionState
{
	SHIP_CENTRAL_INFORMATION,
	SHIP_SUBSPACE_DRIVE,
	SHIP_IMPULSE_DRIVE,
	SHIP_SHIELDS,
	SHIP_WEAPONS,
	SHIP_TRANSPORT_RAY,
	SHIP_QUARRYING,
	SHIP_PROBE,
	SHIP_SENSORS,
	SHIP_MASKING,
	SHIP_CREW,
	SHIP_ANDROIDS,
	SHIP_UBICATION,
	SHIP_STOCK,
	SHIP_EQUIPMENT,
	SHIP_NAVIGATION_COMPUTER,
	SHIP_ENERGY_CIRCUIT,
	SHIP_RENDER,
	SHIP_NAVIGATION,

	SHIP_NONE,
};

enum EBaseSectionState {
	BASE_CENTRAL_INFORMATION,
	BASE_SHIELDS,
	BASE_WEAPONS,
	BASE_TRANSPORT_RAY,
	BASE_QUARRYING,
	BASE_PROBE,
	BASE_SENSORS,
	BASE_MASKING,
	BASE_CREW,
	BASE_ANDROIDS,
	BASE_UBICATION,
	BASE_STOCK,
	BASE_EQUIPMENT,
	BASE_NAVIGATION_COMPUTER,
	BASE_HANGARS,
	BASE_FACTORIES,
	BASE_ENERGY_CIRCUIT,
	BASE_RENDER,
	
	BASE_NONE,
};

#endif