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; } } }
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); }
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); }
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); // } //} }
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; } }