#ifndef SPACE_MAP_GAME_INTERFACE_H
#define SPACE_MAP_GAME_INTERFACE_H

#include "softProj\Render\GameFunctionalityInterface.h"
#include "softProj\Render\SpaceMap.h"

class SpaceMapGame : public GameFunctionalityInterface
{
private:

	SoftProjRender &renderer;
	GalaxyPart galaxyPart; /**< Holds important data (ships, planets). */
	
	unsigned long activeShipId;
public:
	GalaxyPart& getGalaxyPart(void) { return this->galaxyPart; };

	

	MapFunctionality mapFunctionality;

	virtual SpaceShip*  getActiveShipPtr( void );
	virtual SpaceShip*  SpaceMapGame::getShipPtr( unsigned long shipId );

	virtual void setActiveShipId( unsigned long shipId );
	void centerCameraToShip( unsigned long shipId ); /**< Center camera to the given ship. */

	virtual void setBackground( unsigned int skyTex);
	virtual void setEmittorTex( ShipType type, unsigned int particleTex );
	SpaceMapGame( SoftProjRender &renderer, const AnimationEffect &explosionClone, const AnimationEffect &warpClone );

	void activateRadar( unsigned long shipId );
	void signalizeShip( unsigned long shipId );

	void removeNotUpdatedObjects( const float lastSynchronisationDt, bool removeShips, bool removePlanets );

	//---------------GAME INTERFACE-------------------
	virtual void simulate( float dt );
	virtual void render( void );
	virtual void handleKeyboard( Keyboard &keyboard );
	virtual void handleMouse( Mouse &mouse );
	//------------------------------------------------
};


#endif