
#pragma once
#ifndef AI_SQUADORDERS_HPP
#define AI_SQUADORDERS_HPP

#include <Stuff\Point3D.hpp>
#include <Stuff\Auto_Ptr.hpp>
#include "AI_LancemateCommands.hpp"



namespace MechWarrior4
{
	class MWObject;
};


namespace MW4AI
{
	class SquadOrders
	{
	  public:
		virtual ~SquadOrders();
		virtual void Update() = 0;
		virtual bool PointIsValid(const Stuff::Point3D& point) const = 0;
		virtual void IssueCommand(Stuff::Auto_Ptr<LancemateCommands::LancemateCommand>& command) = 0;
		virtual void NotifyShotFired() = 0;
		virtual void NotifyFriendlyFire(Adept::Entity& who) {};
		virtual bool CanExecuteCommands() const { return (true); }
		virtual MWObject* GetAutoTarget() const { return (0); }
		virtual bool GetExtendedSensorData(std::vector<MWObject*>& sensor_data_list) const { return (false); }
		virtual Stuff::Scalar GetLeastSquaredSensorDistance(const Stuff::Point3D& point) const { return (0); }
		virtual Stuff::Auto_Ptr<LancemateCommands::LancemateCommand> CreateCommand(LancemateCommands::ID command_id,Adept::Entity* pTarget2 = NULL) { return (0); }
		virtual bool ShouldRunScript() const { return (true);	}
		virtual bool GetLeaderAlignment(int& alignment) { return (false);	}
		virtual void NotifyNoPath() { };
	};
};



#endif // AI_SQUADORDERS_HPP