Пример #1
0
    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);
    }
Пример #2
0
 public void AddBuildTileChild(BuildableTileChild newChild)
 {
     childrenTiles.Add(newChild);
 }