Unhardcode various AI squad radii

This commit is contained in:
reaperrr
2017-12-02 04:15:16 +01:00
committed by Paul Chote
parent eefaf23885
commit 6de90b02d0
6 changed files with 33 additions and 17 deletions

View File

@@ -20,8 +20,6 @@ namespace OpenRA.Mods.Common.AI
{
abstract class StateBase
{
protected const int DangerRadius = 10;
protected static void GoToRandomOwnBuilding(Squad squad)
{
var loc = RandomBuildingLocation(squad);
@@ -83,11 +81,15 @@ namespace OpenRA.Mods.Common.AI
if (!squad.IsValid)
return false;
var u = squad.Units.Random(squad.Random);
var units = squad.World.FindActorsInCircle(u.CenterPosition, WDist.FromCells(DangerRadius)).ToList();
var ownBaseBuildingAround = units.Where(unit => unit.Owner == squad.Bot.Player && unit.Info.HasTraitInfo<BuildingInfo>());
if (ownBaseBuildingAround.Any())
return false;
var randomSquadUnit = squad.Units.Random(squad.Random);
var dangerRadius = squad.Bot.Info.DangerScanRadius;
var units = squad.World.FindActorsInCircle(randomSquadUnit.CenterPosition, WDist.FromCells(dangerRadius)).ToList();
// If there are any own buildings within the DangerRadius, don't flee
// PERF: Avoid LINQ
foreach (var u in units)
if (u.Owner == squad.Bot.Player && u.Info.HasTraitInfo<BuildingInfo>())
return false;
var enemyAroundUnit = units.Where(unit => squad.Bot.Player.Stances[unit.Owner] == Stance.Enemy && unit.Info.HasTraitInfo<AttackBaseInfo>());
if (!enemyAroundUnit.Any())