#pragma once #ifndef AI_FINDOBJECT_HPP #define AI_FINDOBJECT_HPP namespace MechWarrior4 { class Sensor; class MWObject; } namespace MW4AI { namespace FindObject { enum Type // These must match the constants in MWCONST.ABI { FT_VEHICLE = 1, // if specified, include vehicles FT_MECH = 2, // if specified, include 'Mechs FT_AIRPLANE = 4, // if specified, include airplanes + helicopters FT_BOAT = 8, // if specified, include boats FT_MFB = 16, // if specified, include MFBs FT_TURRET = 32, // if specified, include turrets // the default: FT_DEFAULT = 63, // include any units: = FT_VEHICLE + FT_MECH + FT_AIRPLANE + FT_BOAT + FT_MFB + FT_HOVER + FT_HELI + FT_BUILDING // extras not included in the default FT_BUILDING = 64, // if specified, take buildings into account FT_UNARMED = 128 // if specified, include unarmed units (such as APCs) }; enum Alignment // These must match the constants in MWCONST.ABI { FA_FRIENDLY = 1, FA_ENEMY = 2, FA_NEUTRAL = 4, FA_ANY = FA_FRIENDLY + FA_ENEMY + FA_NEUTRAL }; enum Criteria // These must match the constants in MWCONST.ABI { FC_BEST_TARGET = 1001, // change FC_FIRST if you change this FC_GREATEST_THREAT = 1002, FC_LEAST_THREAT = 1003, FC_MOST_DAMAGED = 1004, FC_NEAREST = 1005 // change FC_LAST if you change this }; enum { FC_FIRST = FC_BEST_TARGET, FC_LAST = FC_NEAREST }; enum Flags // These must match the constants in MWCONST.ABI { FF_WHO_SHOT = 1, FF_SEEPLAYER = 2, FF_LOOK_EVERYWHERE = 4, FF_TARGETLOS =8 }; enum { DISTANCE_LIMIT = 2000 }; long Find(MechWarrior4::MWObject& src, int fa_alignment, int ft_type, int fc_criteria, int ff_flags, Stuff::Scalar distance_limit = (Stuff::Scalar)DISTANCE_LIMIT, const Adept::ObjectID* except_object = 0); }; }; #endif AI_FINDOBJECT_HPP