private void ShootAtFleet(Fleet f) { ShootAt( RoboMath.FiringIntercept( HookComputer, this.Position, f.Center, f.Momentum, this.SensorFleets.MyFleet?.Ships.Count ?? 0 ) ); }
protected async override Task AliveAsync() { if (CanShoot) { var closest = SensorFleets.Others .Select(f => new { Fleet = f, Distance = Vector2.Distance(this.Position, f.Center) }) .Where(p => MathF.Abs(p.Fleet.Center.X - this.Position.X) <= ViewportCrop.X && MathF.Abs(p.Fleet.Center.Y - this.Position.Y) <= ViewportCrop.Y) .Where(p => !DontFireAtSameName || p.Fleet.Name != this.Name) .Where(p => p.Fleet.Name.Contains(this.Target) || this.Target == "") .Where(p => !HookComputer.Hook.TeamMode || p.Fleet.Color != this.Color) .OrderBy(p => p.Distance) .FirstOrDefault() ?.Fleet; if (closest != null) { ShootAtFleet(closest); } } if (CanBoost && (SensorFleets.MyFleet?.Ships.Count ?? 0) > BoostThreshold) { Boost(); } /*CustomData = JsonConvert.SerializeObject(new * { * spots = Behaviors.OfType<Dodge>().Where(d => d.ConsideredPoints != null).SelectMany(d => d.ConsideredPoints) * });*/ CustomData = JsonConvert.SerializeObject(new { spots = SensorFleets.Others?.Select(f => RoboMath.FiringIntercept(HookComputer, this.Position, f.Center, f.Momentum, this.SensorFleets.MyFleet?.Ships.Count ?? 0)) }); await base.AliveAsync(); }