#ifndef INCLUDED_WEAPON
#define INCLUDED_WEAPON

#include <Math/Point.h>

#include <memory>

class AAssetManager;

namespace Dubious {
namespace Renderer {
class Camera;
typedef std::shared_ptr<Camera> CameraPtr;
}
}
class GameScreen;

using namespace Dubious;

//////////////////////////////////////////////////////////////
class Weapon
{
public:
	Weapon();
	~Weapon();

	struct Range
	{
		Range( float current, float up, float down )
		: Current( current ), Up( up ), Down( down )
		{}
		float Current;
		float Up;
		float Down;
	};

	std::string&		Icon() { return m_Icon; }
	Range&				Speed() { return m_Speed; }
	Range&				Mass() { return m_Mass; }
	Range&				ProjectileCount() { return m_ProjectileCount; }

	void				Fire( GameScreen& Game, AAssetManager& Manager, const Math::Point& Point );
	void				SliderPosition( float Pos );
private:
	Weapon( const Weapon& );
	Weapon& operator=( const Weapon& );

	std::string			m_Icon;
	Range				m_Speed;
	Range				m_Mass;
	Range				m_ProjectileCount;

};

#endif
