Beispiel #1
0
    /// <summary>
    /// Deletes selected tower and returns a subset of money spent on tower.
    ///
    /// Author: David Askari
    /// </summary>
    public void SellTower()
    {
        int returnedMoney = selectedTower.BaseCosts / 2;

        GameManager.AddMoney(returnedMoney);
        Destroy(selectedTower.gameObject);
        GridGraphManager.ScanGrid();
        Reset();
    }
    /// <summary>
    /// Build the whole level.
    /// Edited by Courtney
    /// </summary>
    public void Start()
    {
        grassTile = (GameObject)Resources.Load("Prefabs/Tiles/Grass");
        projectilesEffectParent = map.transform.Find("ProjectilesEffects").transform;
        dotEffectParent         = map.transform.Find("DoTEffects").transform;
        aoEEffects = map.transform.Find("AoEEffects").transform;
        TileDict   = new Dictionary <Point, Tile>();
        float tileSize = grassTile.GetComponent <SpriteRenderer>().sprite.bounds.size.x;

        GenerateTiles(GameManager.Width, GameManager.Height, tileSize);
        EnemyManager.FindTargetTiles();
        SceneryGenerator.GenerateScenery();

        GridGraphManager.Setup(GameManager.Width, GameManager.Height, tileSize);
        Hover.Deactivate();
    }
Beispiel #3
0
    /// <summary>
    /// Place tower on passed tile, if it is possible (enough money & don't block path).
    ///
    /// Author: Steven Johnson, David Askari
    /// </summary>
    /// <param name="parentTile">Parent tile for this tower.</param>
    /// <returns>Created tower.</returns>
    public Tower PlaceTower(Tile parentTile)
    {
        if (baseCosts > GameManager.money)
        {
            GameManager.DisplayErrorText("Can't place tower. Not enough funds.");
            return(null);
        }
        GameManager.AddMoney(-baseCosts);

        // Place tower.
        GameObject tower = Instantiate(GameManager.SelectedTower.gameObject, parentTile.transform.position, Quaternion.identity, parentTile.transform);

        if (GameManager.CheckForFirstPlacement())
        {
            StartCoroutine(GameManager.DisplayRewardsPanel());
        }

        // Check if path is blocked.
        if (!GridGraphManager.IsGraphNotBlocked(tower))
        {
            GameManager.DisplayErrorText("Can't place tower here. Path is entirely blocked.");
            GameManager.AddMoney(baseCosts);
            Destroy(tower);
            return(null);
        }

        // Set sprite sorting order.
        tower.GetComponent <SpriteRenderer>().sortingOrder = -parentTile.GridPoint.y;

        // Allow multi tower placement by pressing LeftShift.
        if (!Input.GetKey(KeyCode.LeftShift))
        {
            Hover.Deactivate();
            GameManager.SelectTower(tower.GetComponent <Tower>());
            TowerInformation.Reset();
        }

        tower.GetComponent <Tower>().tile = parentTile;
        return(tower.GetComponent <Tower>());
    }