private void OrderToStackOnMineral() { var averagePosition = MineralWorkers.ToList().AveragePosition(); var closestMineral = BaseMinerals.ClosestTo(averagePosition); MineralWorkers.ForEach(w => w.Gather(closestMineral, false)); }
private void GatherBaseMineralFarFromAttacker(Unit worker, Unit attacker) { if (!BaseMinerals.Any()) { return; } var farMineral = BaseMinerals.MaxBy(m => m.TilePosition.CalcApproximateDistance(attacker.TilePosition)); worker.Gather(farMineral, false); }
protected void GatherClosestMineral(Unit worker) { var distanceOrderedMinerals = BaseMinerals.OrderBy(worker.Distance).ToList(); var closestMineral = distanceOrderedMinerals.FirstOrDefault(x => !x.IsBeingGathered) ?? distanceOrderedMinerals.FirstOrDefault(); if (closestMineral == null) { closestMineral = Game.Minerals.MinBy(worker.Distance); } if (closestMineral == null) { return; } worker.Gather(closestMineral, false); }