Example #1
0
    void OnHatchEgg(int hatchId)
    {
        if (tile == null || hatchId != tile.id)
        {
            return;
        }

        PATileTerrainChunk chunk = TerrainManager.instance.tileTerrain.GetChunk(tile.chunkId);

        foreach (var point in vPoints)
        {
            if (point.virtualPointType != VirtualPoint.VirtualPointType.Animals)
            {
                continue;
            }
            if (point.building == null)
            {
                Transform building = point.CreateBuilding(chunk.settings.decoratesRoot);
                if (building != null)
                {
                    buildings.Add(building);
                }
                break;
            }
        }
    }
Example #2
0
    public Shuijing PlaceCrystal(Shuijing shuijing, PATileTerrain.PABuildingTile buildingTile)
    {
        PATileTerrainChunk chunk = tileTerrain.GetChunk(buildingTile.keyTile.chunkId);

        shuijing.gameObject.transform.SetParent(chunk.settings.crystalGo.transform);
        shuijing.gameObject.transform.position = buildingTile.GetBuildingPos(tileTerrain);
        buildingTile.keyTile.shuijing          = shuijing;
        shuijing.tile = buildingTile.keyTile;
        GameUtility.SetLayerRecursive(shuijing.transform, buildingLayer);
        PATileTerrain.PACrystalBuilding crystalBuildingData = new PATileTerrain.PACrystalBuilding(
            buildingTile.keyTile.id, shuijing.level, shuijing.elementType, shuijing.prefabName, RandomManager.NewSeed());
        crystalBuildingData.shuijing = shuijing;
        tileTerrain.settings.AddCrystal(crystalBuildingData);

        return(shuijing);
    }
Example #3
0
    void PlaceNest(NestBuilding nest, PATileTerrain.PABuildingTile buildingTile)
    {
        Shuijing belongShuijing = buildingTile.keyTile.affectShuijing;

        if (belongShuijing == null)
        {
            return;
        }

        PATileTerrainChunk chunk = tileTerrain.GetChunk(buildingTile.keyTile.chunkId);

        nest.gameObject.transform.SetParent(chunk.settings.buildingsRoot.transform);
        nest.gameObject.transform.position = buildingTile.GetBuildingPos(tileTerrain);
        nest.tile = buildingTile.keyTile;
        //nest.belongShuijing = belongShuijing;
        GameUtility.SetLayerRecursive(nest.transform, buildingLayer);
        PATileTerrain.PABuilding buildingData = new PATileTerrain.PABuilding(
            buildingTile.keyTile.id, nest.elementType, nest.prefabName);
        tileTerrain.settings.GetCrystalBuilding(belongShuijing.tile.id).AddBuilding(buildingData);
        buildingData.belongShuijingId = belongShuijing.tile.id;
        belongShuijing.buildings.Add(nest.transform);
    }
Example #4
0
    public void CreateBuildings(PATileTerrain tileTerrain)
    {
        return;

        RandomManager.instance.SetSeed(tileTerrain.settings.GetCrystalBuilding(tile.id).randomSeed);
        PATileTerrainChunk chunk = tileTerrain.GetChunk(tile.chunkId);

        foreach (var point in vPoints)
        {
            if (point.closeTile == null)
            {
                point.closeTile = GetTileByPoint(tileTerrain, point.transform);
            }
            if (point.closeTile == null)
            {
                continue;
            }
            //Debug.Log("pointTile.x " + pointTile.x + " pointTile.y " + pointTile.y + " point " + point.transform);
            if (point.virtualPointType != VirtualPoint.VirtualPointType.Building)
            {
                continue;
            }
            if (!point.CheckAreaType(tileTerrain))
            {
                if (point.building != null)
                {
                    buildings.Remove(point.building);
                    point.RemoveBuilding();
                }
            }
            else
            {
                if (point.building == null)
                {
                    Transform building = point.CreateBuilding(chunk.settings.decoratesRoot);
                    if (building != null)
                    {
                        HatchBuilding hatchBuilding = building.GetComponent <HatchBuilding>();
                        if (hatchBuilding != null)
                        {
                            hatchBuilding.hatchId = tile.id;
                            this.hatch            = hatchBuilding;
                        }
                        buildings.Add(building);
                    }
                }
            }
        }

        if (Application.isPlaying)
        {
            LocalNavMeshBuilder.instance.UpdateNavMesh();
        }

        //foreach (var point in vPoints)
        //{
        //    if (point.virtualPointType != VirtualPoint.VirtualPointType.Animals)
        //        continue;
        //    if(point.building == null)
        //    {
        //        Transform building = point.CreateBuilding(chunk.settings.decoratesRoot);
        //        if (building != null)
        //            buildings.Add(building);
        //    }
        //}
    }
Example #5
0
    public void GenerateEggs()
    {
        int generateMaxCount = GetTerrainCommon(TerrainCommonKey.GenerateEggsCountPerDay);
        //int generateCount = 0;

        List <PATileTerrain.PATile> allTiles = new List <PATileTerrain.PATile>();

        foreach (var crystal in tileTerrain.settings.crystals)
        {
            foreach (var tile in crystal.shuijing.affectTiles.Values)
            {
                allTiles.Add(tile);
            }
        }

        int tilesCount = allTiles.Count;

        if (tilesCount == 0)
        {
            return;
        }
        //Debug.Log("tilesCount " + tilesCount);
        int beginIndex = RandomManager.instance.Range(0, tilesCount);
        int step       = RandomManager.instance.Range(0, tilesCount);
        //Debug.Log("step " + step);
        int index = beginIndex;

        for (int i = 0; i < generateMaxCount; i++)
        {
            index = index % tilesCount;
            //Debug.Log("index " + index);
            PATileTerrain.PATile tile = allTiles[index];
            int eggConfigId           = -1;
            if (tile.IsFireTile())
            {
                eggConfigId = FireEggConfigId;
            }
            else if (tile.IsWoodTile())
            {
                eggConfigId = WoodEggConfigId;
            }
            else
            {
                eggConfigId = UniversalEggConfigId;
            }

            EggData    newEggData = new EggData(eggConfigId);
            GameObject newEggGo   = PoolManager.Pools["Shuijing"].Spawn(newEggData.ConfigData.prefab).gameObject;
            Egg        newEgg     = newEggGo.GetComponent <Egg>();
            newEgg.eggData = newEggData;
            PATileTerrainChunk chunk = tileTerrain.GetChunk(tile.chunkId);
            newEggGo.transform.SetParent(chunk.settings.buildingsRoot.transform);
            newEggGo.transform.position = tile.WorldPos(tileTerrain.transform);

            if (tile.affectShuijing != null)
            {
                tile.affectShuijing.eggs.Add(newEgg);
            }

            index += step;
        }
    }