/// <summary> /// creates new radar instance. /// Radar is created automatically for each UnitPilot class instance, has radius a little more than his ShootingRadius /// </summary> /// <param name="Radius">radar range</param> /// <param name="HolderUnit">unit that holds this radar</param> /// <param name="AI">AI that HolderUnit belongs to</param> internal Radar(float Radius, IUnit HolderUnit, AI AI) { holderUnit = HolderUnit; ai = AI; this.Radius = Radius; NearUnits = ai.Game.GetNearUnits(holderUnit.Position, Radius); Scan(); }
//CTOR internal UnitPilot(IUnit ControlledUnit, AI AI) { controlledUnit = ControlledUnit; radar = new Radar(controlledUnit.ShootingRadius + 50, controlledUnit, AI); computer = new OnBoardComputer(radar, controlledUnit); dangerRadius = dangerRadiusCoef * ((new Rectangle(GameVector.Zero, controlledUnit.Size, GameVector.UnitX)).GetBoundingCircle.Radius); StandBy(); escapeThreting = true; //SetFlightTgt(controlledUnit.Position + new GameVector(-500, 800)); targetUpdateTime = new Timer(1); relativeSpeedAim = 0; allowedSpeed = 0; AvoidingObstaclesEnabled = true; timer = new Timer(0.05f); SetMaxSpeed(controlledUnit.MaxSpeed); }