Ejemplo n.º 1
0
        private void Construct(ConstructBuildingStep constructStep)
        {
            var builder   = GetFreeDrone();
            var buildSite = FindBuildSite(constructStep);

            Construct(builder, buildSite, constructStep);
        }
Ejemplo n.º 2
0
        private void Construct(Unit builder, TilePosition buildSite, ConstructBuildingStep constructStep)
        {
            if (!Game.IsExplored(buildSite))
            {
                builder.Move(buildSite.ToPixelTile(), false);
                return;
            }

            builder.Build(constructStep.Target, buildSite);
            _constructionStarted.Where(x => x == constructStep.Target).Take(1).Subscribe(x => constructStep.Complete());
        }
Ejemplo n.º 3
0
        private TilePosition FindBuildSite(ConstructBuildingStep constructStep)
        {
            var building      = constructStep.Target;
            var basePosition  = Game.Self.StartLocation;
            var buildLocation = Game.GetBuildLocation(UnitTypes.All[building], basePosition, 32, false);

            if (building == UnitType.Zerg_Creep_Colony)
            {
                buildLocation = CreepColonyNearChoke() ?? buildLocation;
            }

            if (buildLocation == null)
            {
                throw new Exception("Could not find suitable build site");
            }
            return(buildLocation);
        }