#ifndef _CBALL_HPP_
#define _CBALL_HPP_

/*** TrooperEngine DLL Header Files ***/
#include "TrooperEngine.hpp"

namespace Equipment {
	class cBall : public VideoEngine::cSprite
	{
	public:
		enum eBallState
		{
			OnCourt,
			LeftOffCourt,
			RightOffCourt,
			Serve
		};

		cBall( const signed long int xpos = 0, const signed long int ypos = 0, const signed long int xarea = 0,
			const signed long int yarea = 0, const unsigned long int warea = 0, const unsigned long int harea = 0,
			VideoEngine::cImage** image = nullptr, VideoEngine::cCamera** camera = nullptr );
		~cBall();

		///Functions
		void Move();
		const bool isPaused();
		void Pause();

		void BounceX();
		void BounceY();

		void Reset( const int delay );

		///Sets
		void setSpeed( const float x = -10, const float y = -10 );
		void setMaxSpeed( const float max = 10 );
		void setMinSpeed( const float min = 5 );

		///Gets
		const MathEngine::Vector2 getSpeed() const;
		const float getMaxSpeed() const;
		const float getMinSpeed() const;

	private:
	
		
	private:
		float m_maxSpeed;
		float m_minSpeed;

		bool m_boucedAllReady;// = false;
				
		MathEngine::Vector2 m_speed;

		eBallState m_ballState;

		bool m_pause;// = false
	};/// END CLASS DEFINITION cBall
}/// END NAMESPACE DEFINITION Equipment
#endif/// END IFNDEF _CBALL_HPP_