#pragma once
#include "Touchable.h"

#include <vector>

class Bacterium;
class SelectionCircle;
class CellWarsMTManager;
class SelectionButton;

namespace SelectionButtonTypes
{
	enum Enum
	{
		RemoveSelection,
		Upgrade,
		Replicate,
		Attack,
		Life,
		Resistance,
		Camouflage
	};
}

class MultiSelectionCircle : public Touchable
{
public:
	MultiSelectionCircle(CellWarsMTManager *useThisMultiTouchManager);
	virtual ~MultiSelectionCircle();
	virtual void PreDestroy();
	
	virtual void addBacteriumToSelectionList(Bacterium* newBacterium);
	virtual void removeBacteriumFromSelectionList(Bacterium* remBacterium);

	virtual void Update(float dt);
	virtual void Render();
	virtual void ReceiveMessage(Message *m);
	
	virtual void fingerDown(Vector2 posDownInAngelCoords);
	virtual void fingerMove(Vector2 moveToInAngelCoords);
	virtual void fingerUp(Vector2 lastPosInAngelCoords);
	
	virtual void upgradeSelected();
	virtual void replicateSelected();

	bool anySelectedHasFullResources();
	bool hasBacteriumSelected(Bacterium* bact);

private:
	std::vector<Bacterium*> *selectedBacteriaList;
	CellWarsMTManager *useThisMTManager;
	std::vector<SelectionButton*> *buttons;
};
