private void ConstructBuilding(PreviewBuilding cBuilding) { GameObject building = cBuilding.Building; Vector3 buildingPosition = building.transform.position; TileSystem tileSystem = TileSystem.Instance; // don't make construction unsuccessful because building on the same entiy if (tileSystem.GetTile(buildingPosition) != null && tileSystem.DoTileContainsEntityOfID(buildingPosition, EntityID)) { // destroy, but don't interupt construction cBuilding.Destroy(); return; } const TileFlag condition = TileFlag.Free | TileFlag.Visible; bool tileSetSuccessfully = tileSystem.TrySetTile(building, EntityData.TileSize, condition, EntityID); if (tileSetSuccessfully) { cBuilding.SetConstructionAsFinish(Team.Player); _constructionAchievedBuilding.Add(cBuilding); } }
private bool CanConstructAllBuildings() { TileSystem tileSystem = TileSystem.Instance; foreach (var cBuilding in _previewBuildings) { Vector3 buildingPosition = cBuilding.Building.transform.position; // if the tile is the same type of 'EntityID' if (tileSystem.GetTile(buildingPosition) != null && tileSystem.DoTileContainsEntityOfID(buildingPosition, EntityID)) { continue; } if (tileSystem.DoTilesFillConditions(buildingPosition, EntityData.TileSize, TileFlag.All)) { continue; } return(false); } return(true); }