//////////////////////////////////////////////////
//Created by Erik and Linda of the GameLogic team
//////////////////////////////////////////////////
#ifndef WEAPON_H
#define WEAPON_H
#include "GameLogicStates.h"
#include "IAttatchment.h"
#include "Player.h"

namespace GameLogic
{

	class Weapon
	{

	public:
		

		Weapon(void);
		Weapon(int nrOfAttatchmentSockets);
		~Weapon(void);

		void Use(const WEAPON_FIRE &fireInput);

		void AddNewAttatchment(IAttatchment *attatchment, Player *owner);
		void SwitchAttatchment(IAttatchment *attatchment, int socketID, Player *owner);
		void RemoveAttatchment(int socketID);

		void SelectAttatchment(int socketID);

		bool IsFireing();
		bool IsIdle();
		bool IsReloading();
		bool IsValidSocket(int socketID);

		int GetCurrentSocketID();

	private:	
		struct PrivateData;
		PrivateData *myData;
	};

}
#endif