public BuildingQueueItem(string type, TilePosition tile_position) { Type = type; TilePosition = tile_position; ActualPosition = tile_position; buildingTask = new TaskCompletionSource<BW.Unit>(); }
internal static HandleRef getCPtr(TilePosition obj) { return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; }
public double getDistance(TilePosition position) { double ret = bwapiPINVOKE.TilePosition_getDistance(swigCPtr, TilePosition.getCPtr(position)); if (bwapiPINVOKE.SWIGPendingException.Pending) throw bwapiPINVOKE.SWIGPendingException.Retrieve(); return ret; }
public TilePosition opSubtract(TilePosition position) { TilePosition ret = new TilePosition(bwapiPINVOKE.TilePosition_opSubtract(swigCPtr, TilePosition.getCPtr(position)), false); if (bwapiPINVOKE.SWIGPendingException.Pending) throw bwapiPINVOKE.SWIGPendingException.Retrieve(); return ret; }
public TilePosition makeValid() { TilePosition ret = new TilePosition(bwapiPINVOKE.TilePosition_makeValid(swigCPtr), false); return ret; }
public virtual bool hasCreep(TilePosition position) { bool ret = bwapiPINVOKE.Game_hasCreep__SWIG_1(swigCPtr, TilePosition.getCPtr(position)); if (bwapiPINVOKE.SWIGPendingException.Pending) throw bwapiPINVOKE.SWIGPendingException.Retrieve(); return ret; }
public virtual bool placeCOP(TilePosition target) { bool ret = bwapiPINVOKE.Unit_placeCOP(swigCPtr, TilePosition.getCPtr(target)); if (bwapiPINVOKE.SWIGPendingException.Pending) throw bwapiPINVOKE.SWIGPendingException.Retrieve(); return ret; }
public virtual TilePosition getInitialTilePosition() { TilePosition ret = new TilePosition(bwapiPINVOKE.Unit_getInitialTilePosition(swigCPtr), true); return ret; }
public async Task<bool> buildBuilding(BuildingQueueItem item) { var probe = getBuildingProbe(); UnitType building_type = bwapi.getUnitType(item.Type); // TilePosition building_position = central_position; TilePosition central_position = item.TilePosition; TilePosition building_position = item.TilePosition; if (probe != null) { for (int i = 0; i < 20; i++) for (int j = 0; j < 20; j++) { int xoffset = j / 2 * (j % 2 == 0 ? -1 : 1); int yoffset = i / 2 * (i % 2 == 0 ? -1 : 1); building_position = new TilePosition(central_position.xConst() + xoffset, central_position.yConst() + yoffset); if (bwapi.Broodwar.canBuildHere(probe.theUnit, building_position, building_type)) { item.ActualPosition = building_position; if (!bwapi.Broodwar.isVisible(building_position)) await RevealPosition(probe, building_position); return probe.theUnit.build(building_position, building_type); } } } return false; }
public async Task RevealPosition(BW.Unit unit, TilePosition position) { var tcs = new TaskCompletionSource<bool>(); unit.theUnit.move(new Position(position)); RevelationTasks.Add(position, tcs); await (Task)tcs.Task; }
public virtual TilePosition getStartLocation() { TilePosition ret = new TilePosition(bwapiPINVOKE.Player_getStartLocation(swigCPtr), true); return ret; }
public virtual bool canBuildHere(Unit builder, TilePosition position, UnitType type) { bool ret = bwapiPINVOKE.Game_canBuildHere__SWIG_1(swigCPtr, Unit.getCPtr(builder), TilePosition.getCPtr(position), UnitType.getCPtr(type)); if (bwapiPINVOKE.SWIGPendingException.Pending) throw bwapiPINVOKE.SWIGPendingException.Retrieve(); return ret; }
public virtual bool hasPower(TilePosition position, int tileWidth, int tileHeight) { bool ret = bwapiPINVOKE.Game_hasPower__SWIG_1(swigCPtr, TilePosition.getCPtr(position), tileWidth, tileHeight); if (bwapiPINVOKE.SWIGPendingException.Pending) throw bwapiPINVOKE.SWIGPendingException.Retrieve(); return ret; }
public bool Equals(TilePosition obj) { if (obj == null) return false; return (obj.swigCPtr.Handle == this.swigCPtr.Handle); }
public static UnitCommand build(Unit unit, TilePosition target, UnitType type) { UnitCommand ret = new UnitCommand(bwapiPINVOKE.UnitCommand_build(Unit.getCPtr(unit), TilePosition.getCPtr(target), UnitType.getCPtr(type)), true); if (bwapiPINVOKE.SWIGPendingException.Pending) throw bwapiPINVOKE.SWIGPendingException.Retrieve(); return ret; }
public bool opEquals(TilePosition TilePosition) { bool ret = bwapiPINVOKE.TilePosition_opEquals(swigCPtr, TilePosition.getCPtr(TilePosition)); if (bwapiPINVOKE.SWIGPendingException.Pending) throw bwapiPINVOKE.SWIGPendingException.Retrieve(); return ret; }
public static UnitCommand placeCOP(Unit unit, TilePosition target) { UnitCommand ret = new UnitCommand(bwapiPINVOKE.UnitCommand_placeCOP(Unit.getCPtr(unit), TilePosition.getCPtr(target)), true); if (bwapiPINVOKE.SWIGPendingException.Pending) throw bwapiPINVOKE.SWIGPendingException.Retrieve(); return ret; }
public virtual bool build(TilePosition target, UnitType type) { bool ret = bwapiPINVOKE.Unit_build(swigCPtr, TilePosition.getCPtr(target), UnitType.getCPtr(type)); if (bwapiPINVOKE.SWIGPendingException.Pending) throw bwapiPINVOKE.SWIGPendingException.Retrieve(); return ret; }
public TilePosition getTargetTilePosition() { TilePosition ret = new TilePosition(bwapiPINVOKE.UnitCommand_getTargetTilePosition(swigCPtr), true); return ret; }
public override AIState Run() { if (State.usedSupply() == 8 && State.freeSupply() <= 1 && !FreeUnits.Any()) { var probe = EcoAI.YieldUnit(); FreeUnits.Add(probe); var choke = getNatChoke(); var position = choke.getCenter(); State.pushItem("Protoss Pylon", new TilePosition(position)); probe.theUnit.move(position); } if (State.freeSupply() <= ProductionCapacity && State.freeMinerals() >= 100) { var choke = getNatChoke(); var position = choke.getCenter(); if (State.analysis_complete && position != null) { bwapi.Broodwar.printf("Chokepoint found"); State.pushItem("Protoss Pylon", new TilePosition(position)); } else { bwapi.Broodwar.printf("Chokepoint not found"); State.pushItem("Protoss Pylon"); } } if (State.usedSupply() >= 10) { requiredBuildings["Protoss Forge"] = 1; } if (State.getBuildingCount("Protoss Forge") < requiredBuildings["Protoss Forge"]) { TilePosition pylon_position = State.getUnit("Protoss Pylon").theUnit.getTilePosition(); TilePosition forge_position; var pair = getNatChoke().getSides(); var dx = Math.Abs(pair.first.xConst() - pair.second.xConst()); var dy = Math.Abs(pair.first.yConst() - pair.second.yConst()); // horizontal if (dx > dy) { forge_position = new TilePosition(pylon_position.xConst() - bwapi.getUnitType("Protoss Forge").tileWidth(), pylon_position.yConst()); bwapi.Broodwar.printf("Building forge horizontally"); } else { forge_position = new TilePosition(pylon_position.xConst(), pylon_position.yConst() - bwapi.getUnitType("Protoss Forge").tileHeight()); bwapi.Broodwar.printf("Building forge vertically"); } State.pushItem("Protoss Forge", forge_position); } if (State.getBuildingCount("Protoss Forge", false, true) > 0) { requiredBuildings["Protoss Photon Cannon"] = 2; if (State.getBuildingCount("Protoss Photon Cannon") < requiredBuildings["Protoss Photon Cannon"]) { TilePosition pylon_position = State.getUnit("Protoss Pylon").theUnit.getTilePosition(); TilePosition cannon_position; var pair = getNatChoke().getSides(); var dx = Math.Abs(pair.first.xConst() - pair.second.xConst()); var dy = Math.Abs(pair.first.yConst() - pair.second.yConst()); // vertical var nat_position = getNatural().getTilePosition(); if (dx < dy) { int x_offset = nat_position.xConst() > pylon_position.xConst() ? bwapi.getUnitType("Protoss Pylon").tileWidth() : -bwapi.getUnitType("Protoss Photon Cannon").tileWidth(); cannon_position = new TilePosition(pylon_position.xConst() + x_offset, pylon_position.yConst()); bwapi.Broodwar.printf("Building cannon vertically"); } else { int y_offset = nat_position.yConst() > pylon_position.yConst() ? bwapi.getUnitType("Protoss Pylon").tileHeight() : -bwapi.getUnitType("Protoss Photon Cannon").tileHeight(); cannon_position = new TilePosition(pylon_position.xConst(), pylon_position.yConst() + y_offset); bwapi.Broodwar.printf("Building cannon horizontally"); } State.pushItem("Protoss Photon Cannon", cannon_position); } if (State.freeMinerals() >= 400) { EcoAI.bases = 2; } } // should be exactly at intended natural position if (State.getBuildingCount("Protoss Nexus") > 1) { return new MassZealots(State, EcoAI); } base.Run(); return this; }
public virtual int getGroundHeight(TilePosition position) { int ret = bwapiPINVOKE.Game_getGroundHeight__SWIG_1(swigCPtr, TilePosition.getCPtr(position)); if (bwapiPINVOKE.SWIGPendingException.Pending) throw bwapiPINVOKE.SWIGPendingException.Retrieve(); return ret; }