public void AddBuilding(ConstructionSite constructionSite) { var building = constructionSite.Building; buildings.Add(building); constructionSite.DestroySite(); Map.Instance.AddTeamControl(this, constructionSite.Tile, building.controlRadius); }
public override void Update() { if (constructionSite == null) { // Check if there is an existing construction site. if (targetTile.ConstructionSite != null) { if (targetTile.ConstructionSite.Team != unit.UnitTeam) { StopState(); return; } constructionSite = targetTile.ConstructionSite; } else { if (targetTile.CheckCanBuild(unit.UnitTeam.teamTag, buildingType) == false || GameController.Instance.CanBeBuild.Contains(buildingType) == false) { StopState(); return; } if (Vector3.Distance(unit.transform.position, targetTile.transform.position) > unit.CurrentJob.buildingDistance) { PushMoveState(unit, targetTile.transform.position, unit.CurrentJob.buildingDistance); return; } // Try to create construction site. constructionSite = BuildingController.Instance.CreateConstructionSite(unit.UnitTeam, buildingType, targetTile, direction); targetTile.AddConstructionSite(constructionSite); var resourcesLeft = constructionSite.TryAddResource(unit.carriedResource); unit.SpendCarriedResource(unit.carriedResource.value - resourcesLeft); } } switch (constructionSite.State) { case ConstructionSite.ConstructionState.GatheringResources: PushState(new DeliveryState(unit, constructionSite)); return; case ConstructionSite.ConstructionState.Building: PushState(new AddBuildingPointsState(unit, constructionSite)); return; case ConstructionSite.ConstructionState.Finished: StopState(); return; } }
// IMPROVE: Move TryGetDelivery to interface. public DeliveryState(Unit unit, ConstructionSite constructionSite) { this.unit = unit; this.constructionSite = constructionSite; }
private void ConstructionSiteFinishedHandler(ConstructionSite cs) => ConstructionSite = null;
public void AddConstructionSite(ConstructionSite constructionSite) { ConstructionSite = constructionSite; constructionSite.OnConstructionSiteFinished += ConstructionSiteFinishedHandler; }
public AddBuildingPointsState(Unit unit, ConstructionSite constructionSite) { this.unit = unit; this.constructionSite = constructionSite; }
public BringResourcesState(Unit unit, ConstructionSite constructionSite) { this.unit = unit; this.constructionSite = constructionSite; }
public void AddBuildingSite(ConstructionSite constructionSite) { constructionSites.Add(constructionSite); constructionSite.OnConstructionSiteFinished += ConstructionSiteFinishedHandler; }
private void ConstructionSiteFinishedHandler(ConstructionSite constructionSite) { constructionSites.Remove(constructionSite); AddBuilding(constructionSite); }