CUnit* CGameHelper::GetClosestEnemyUnitNoLosTest(const float3 &pos, float searchRadius, int searchAllyteam, bool sphere, bool canBeBlind) { if (sphere) { // includes target radius Query::ClosestUnit_InLos q(pos, searchRadius, canBeBlind); QueryUnits(Filter::Enemy(searchAllyteam), q); return q.GetClosestUnit(); } else { // cylinder (doesn't include target radius) Query::ClosestUnit_InLos_Cylinder q(pos, searchRadius, canBeBlind); QueryUnits(Filter::Enemy(searchAllyteam), q); return q.GetClosestUnit(); } }
void CGameHelper::GetEnemyUnitsNoLosTest(const float3& pos, float searchRadius, int searchAllyteam, vector<int> &found) { Query::AllUnitsById q(pos, searchRadius, found); QueryUnits(Filter::Enemy(NULL, searchAllyteam), q); }
CUnit* CGameHelper::GetClosestEnemyAircraft(const CUnit* excludeUnit, const float3& pos, float searchRadius, int searchAllyteam) { Query::ClosestUnit q(pos, searchRadius); QueryUnits(Filter::EnemyAircraft(excludeUnit, searchAllyteam), q); return q.GetClosestUnit(); }
CUnit* CGameHelper::GetClosestValidTarget(const float3& pos, float searchRadius, int searchAllyteam, const CMobileCAI* cai) { Query::ClosestUnit q(pos, searchRadius); QueryUnits(Filter::Enemy_InLos_ValidTarget(searchAllyteam, cai), q); return q.GetClosestUnit(); }
CUnit* CGameHelper::GetClosestUnit(const float3& pos, float searchRadius) { Query::ClosestUnit_ErrorPos_NOT_SYNCED q(pos, searchRadius); QueryUnits(Filter::Friendly_All_Plus_Enemy_InLos_NOT_SYNCED(), q); return q.GetClosestUnit(); }
CUnit* CGameHelper::GetClosestFriendlyUnit(const float3 &pos, float searchRadius, int searchAllyteam) { Query::ClosestUnit q(pos, searchRadius); QueryUnits(Filter::Friendly(searchAllyteam), q); return q.GetClosestUnit(); }