public void SpawnBuilding(int index) { if (gameRules.waveStatus || !CheckBuildingValidity(index) || !CheckRessourcesAvailability(index)) { return; } if (constructionState == ConstructionState.Positioning) { Destroy(selectedBuilding.gameObject); } else { constructionState = ConstructionState.Positioning; } Tile tile = rayCast.GetNearestTileFromCursor(); if (tile != null) { defaultSpawnPosition = tile.tileCenter.position; } selectedBuilding = Instantiate(playerData.availableBuildings[index]); selectedBuilding.Move(defaultSpawnPosition); return; }
public IEnumerator PlaceBuilding() { selectedBuilding.GetComponent <NavMeshObstacle>().enabled = true; yield return(null); if (gameRules.RefreshWavePath()) { playerData.ressources -= selectedBuilding.ressourceCost; onPlayerRessourceChange.Raise(); selectedBuilding.Initialize(); selectedBuilding = null; constructionState = ConstructionState.Off; } else { selectedBuilding.GetComponent <NavMeshObstacle>().enabled = false; messageLog.AddMessage("Do not block the path", true); } }