
#pragma once
#ifndef AI_FIREPARAMPACKAGE_HPP
#define AI_FIREPARAMPACHAGE_HPP

#include <Stuff\Scalar.hpp>



namespace Adept
{
	class Entity;
};

namespace MechWarrior4
{
	class Weapon;
	class Vehicle;
};

namespace MW4AI
{
	class FireData;

	enum FireSource
	{
		FIRE_FROM_ANYWHERE,
		FIRE_FROM_LEFT_ARM,
		FIRE_FROM_RIGHT_ARM
	};

	class FireParamPackage
	{
	  public:
		FireParamPackage(FireData& _fire_data,
						 MechWarrior4::MWObject* _intended_target,
						 Stuff::Time _min_delay,
						 Stuff::Time _max_delay,
						 Adept::Entity* _who_to_hit,
						 MechWarrior4::Vehicle* _vehicle_shooting_at,
						 Adept::Entity* _component,
						 Stuff::Time _frame_delay,
						 Stuff::Scalar _current_heat,
						 Stuff::Scalar _max_heat,
						 bool _can_spend_ammo,
						 bool _can_commit_suicide,
						 FireSource _where_to_fire_from,
						 bool _can_fire_narc,
						 bool _can_generate_heat,
						 bool _per_weapon_raycasting);

	  public:
		FireData& fire_data;
		MechWarrior4::MWObject* intended_target;
		const Stuff::Time min_delay;
		const Stuff::Time max_delay;
		const Adept::Entity* who_to_hit;
		const MechWarrior4::Vehicle* vehicle_shooting_at;
		Adept::Entity* component;
		const Stuff::Time frame_delay;
		const Stuff::Scalar current_heat;
		const Stuff::Scalar max_heat;
		const bool can_spend_ammo;
		const bool can_commit_suicide;
		const FireSource where_to_fire_from;
		const bool can_fire_narc;
		const bool can_generate_heat;
		const bool per_weapon_raycasting;
	};
};



#endif // AI_FIREPARAMPACHAGE_HPP