private void OrderToStackOnMineral()
        {
            var averagePosition = MineralWorkers.ToList().AveragePosition();
            var closestMineral  = BaseMinerals.ClosestTo(averagePosition);

            MineralWorkers.ForEach(w => w.Gather(closestMineral, false));
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }