public virtual void PlaceTile(TownManager tm, Map map, List <Tile> buildingTiles, int rotAmt, Vector2 curBuildRotScale) { // Decide how to handle the placing of the tile BuildableTile bMain = new BuildableTile(buildingTiles[0].GetMapLoc(), buildingTiles[0].GetWorldLoc(), 'B', null, this); bMain.rotatedScale = curBuildRotScale; for (int i = 0; i < buildingTiles.Count; i++) { Vector3 pos = buildingTiles[i].GetWorldLoc(); Vector2 tileMapPos = buildingTiles[i].GetMapLoc(); Vector3 adjustedObjPos = new Vector3(pos.x + 0.5f, 0, pos.z + 0.5f); Quaternion tileRot = Quaternion.Euler(0, 90 * rotAmt + 90, 0); GameObject newTileObj; if (needsBuilt) { if (preBuiltPrefabs.Length > 0) { buildingTiles[i].DestroyTileObject(); newTileObj = (GameObject)GameObject.Instantiate(preBuiltPrefabs[i], adjustedObjPos, tileRot); } else { newTileObj = buildingTiles[i].GetTileObj(); } newTileObj.transform.parent = map.gameObject.transform; } else { // Wait for worker to be assigned to the tile buildingTiles[i].DestroyTileObject(); newTileObj = (GameObject)GameObject.Instantiate(tileStages[0].tilePrefabs[i], adjustedObjPos, tileRot); newTileObj.transform.parent = map.gameObject.transform; } if (i == 0) { bMain.SetTileObj(newTileObj); map.SetTileFromMapPos((int)tileMapPos.x, (int)tileMapPos.y, bMain); } else { BuildableTileChild bChild = new BuildableTileChild(buildingTiles[i].GetMapLoc(), buildingTiles[i].GetWorldLoc(), 'b', newTileObj, bMain); bMain.AddBuildTileChild(bChild); map.SetTileFromMapPos((int)tileMapPos.x, (int)tileMapPos.y, bChild); } } if (needsBuilt) { bMain.SetBeingBuilt(true); // Call town manager to get first available citizen villager // Call BeginBuildPhase(citizen) } bMain.PlacedTile(); tm.AddBuilding(bMain); }
public void AddBuildTileChild(BuildableTileChild newChild) { childrenTiles.Add(newChild); }