Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        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);
            }
        }