
#pragma once
#ifndef AI_GROUPS_HPP
#define AI_GROUPS_HPP

#include "Group.hpp"


namespace MW4AI
{
	namespace Groups
	{
		bool AllDead(Group::identifier group);
		void AddObject(Adept::ObjectID object, Group::identifier group);
		void RemoveObject(Adept::ObjectID object, Group::identifier group);
		int  NumDead(Group::identifier group);
		int	 Size(Group::identifier group);
		bool ContainsObject(Adept::ObjectID object, Group::identifier group);
		bool GetFirstGroup(Adept::ObjectID object, Group::identifier& group_id);
		bool GetFirstObject(Group::identifier group, Adept::ObjectID& object);

		MechWarrior4::Group& GetGroup(MechWarrior4::Group::identifier group_id);

		bool GetMember(Group::identifier group, unsigned int index, Adept::ObjectID& object);

		bool GetLancemateGroup(const std::vector<Group::identifier>& groups, Group::identifier& group_id);

		void GetLancemates(std::vector<MWObject*>& lancemates, bool include_player = false);
		void GetGroupmates(const Adept::ObjectID& of_who, std::vector<MWObject*>& groupmates);

		void NotifyPlayerFocusedOnEntity(MechWarrior4::MWObject& player_vehicle, Adept::Entity& entity);
	};
};



#endif // AI_GROUPS_HPP
