/// <summary> /// Creates a Request to send to through the API to see a build can be placed in this location /// </summary> /// <param name="unitType">type of the building you wish to build</param> /// <param name="targetPos">desired location</param> /// <returns>true if it is possible to build here, false otherwise</returns> public static bool CanPlace(uint unitType, Point2D targetPos) { //Note: this is a blocking call! Use it sparingly, or you will slow down your execution significantly! var abilityID = Units.GetAbilityId(unitType); RequestQueryBuildingPlacement queryBuildingPlacement = new RequestQueryBuildingPlacement { AbilityId = (int)abilityID, TargetPos = targetPos }; Request requestQuery = new Request { Query = new RequestQuery() }; requestQuery.Query.Placements.Add(queryBuildingPlacement); var result = Program.gc.SendQuery(requestQuery.Query); if (result.Result.Placements.Count() > 0) { return(result.Result.Placements[0].Result == ActionResult.Success); } return(false); }
private static bool QueryBuildingPlacement(uint unitType, Vector3 targetPos) { //Note: this is a blocking call! Use it sparingly, or you will slow down your execution significantly! bool canPlace = false; var abilityID = GetAbilityID(unitType); RequestQueryBuildingPlacement queryBuildingPlacement = new RequestQueryBuildingPlacement(); queryBuildingPlacement.AbilityId = abilityID; queryBuildingPlacement.TargetPos = new Point2D(); queryBuildingPlacement.TargetPos.X = targetPos.X; queryBuildingPlacement.TargetPos.Y = targetPos.Y; Request requestQuery = new Request(); requestQuery.Query = new RequestQuery(); requestQuery.Query.Placements.Add(queryBuildingPlacement); var result = Connection.SendQuery(requestQuery.Query); if (result.Result.Placements.Count > 0) { canPlace = (result.Result.Placements[0].Result == ActionResult.Success); } return(canPlace); }
public static bool CanPlace(uint unitType, Vector3 targetPos) { //Note: this is a blocking call! Use it sparingly, or you will slow down your execution significantly! var abilityID = Abilities.GetID(unitType); RequestQueryBuildingPlacement queryBuildingPlacement = new RequestQueryBuildingPlacement(); queryBuildingPlacement.AbilityId = abilityID; queryBuildingPlacement.TargetPos = new Point2D(); queryBuildingPlacement.TargetPos.X = targetPos.X; queryBuildingPlacement.TargetPos.Y = targetPos.Y; Request requestQuery = new Request(); requestQuery.Query = new RequestQuery(); requestQuery.Query.Placements.Add(queryBuildingPlacement); var result = Program.gc.SendQuery(requestQuery.Query); if (result.Result.Placements.Count > 0) { return(result.Result.Placements[0].Result == ActionResult.Success); } return(false); }