Example #1
0
    void Update()
    {
        if (otherOption)
        {
            Update_();
            return;
        }

        if (buttonObject != null)
        {
            totalTime += Time.deltaTime;
            float tmp = totalTime / buttonObject.attachedTower.researchTime;
            if (tmp >= 1)
            {
                tmp = 1;
                buttonObject.isResearched = true;
                buttonObject.researching  = false;
                totalTime = 0;
                TowerDictionary.SetResearch(buttonObject.attachedTower.towerType, true);
                buttonObject       = null;
                researching        = false;
                fillBar.fillAmount = 0;
            }
            else
            {
                fillBar.fillAmount = tmp;
            }
        }
    }
    public void UpdateUIText(string towerType)
    {
        TowerData towerData = TowerDictionary.GetTowerData(towerType);

        if (towerData != null)
        {
            towerName.text   = "[ " + towerData.towerName + " ]";
            towerCost.text   = "Cost: " + towerData.buildCost.ToString();
            towerDamage.text = "Damage: " + (((float)towerData.bulletDamage) / towerData.fireDelay).ToString() + "/s";
            towerRange.text  = "Range: " + towerData.detectRange.ToString();

            switch (towerData.bulletEffect)
            {
            case MODIFIER_EFFECT.MOD_SLOW:
                towerSpecial.text = "Special: Slow";
                break;

            case MODIFIER_EFFECT.MOD_SLOW_HEAVY:
                towerSpecial.text = "Special: Greater Slow";
                break;

            default:
                towerSpecial.text = "";
                break;
            }
        }
        else
        {
            towerName.text = towerCost.text = towerDamage.text = towerRange.text = towerSpecial.text = "";
        }
    }
    public void BuyOrUpgradeTower()//string whichType)
    {
        if (!tileIsSelected)
        {
            return;
        }

        string whichType = currentTowerType;

        int buyAmount, sellAmount;

        if (selTile.Tower == null)
        {
            // Buy //
            if (TowerDictionary.GetValueTotals(whichType, out buyAmount, out sellAmount))
            {
                if (playerMoney.Money >= buyAmount)
                {
                    selTile.Tower = Instantiate(towerPrefab);
                    selTile.Tower.SetTowerData(TowerDictionary.GetTowerData(whichType));
                    selTile.Tower.transform.position = selTile.Tile.transform.position + new Vector3(0, selTile.Tile.transform.localScale.y * 2, 0);
                    selTile.Tile.GetComponent <MeshRenderer>().material = selTile.Tower.GetSelectMaterial();
                    tileObjects[selCoords[1], selCoords[0]]             = selTile;
                    RefreshRangeIndicator();

                    playerMoney.Money -= buyAmount;
                    UpdateMoneyText();
                    towerInfoText.UpdateUIText(whichType);
                }
            }
        }
        else
        {
            // Upgrade //
            if (whichType == baseTowerType)
            {
                return;
            }

            if (TowerDictionary.IsValidUpgrade(selTile.Tower.GetTowerType(), whichType, true))
            {
                int buy2, sell2;
                TowerDictionary.GetValueTotals(selTile.Tower.GetTowerType(), out buy2, out sell2);
                TowerDictionary.GetValueTotals(whichType, out buyAmount, out sellAmount);

                if (playerMoney.Money >= (buyAmount - buy2))
                {
                    selTile.Tower.SetTowerData(TowerDictionary.GetTowerData(whichType));
                    selTile.Tile.GetComponent <MeshRenderer>().material = selTile.Tower.GetSelectMaterial();
                    tileObjects[selCoords[1], selCoords[0]]             = selTile;
                    RefreshRangeIndicator();

                    playerMoney.Money -= (buyAmount - buy2);
                    UpdateMoneyText();
                    towerInfoText.UpdateUIText(whichType);
                }
            }
        }
    }
Example #4
0
    public void SetTowerToResearch(string whichType)
    {
        if (researching)
        {
            return;
        }

        towerToResearch = TowerDictionary.GetTowerData(whichType);
    }
Example #5
0
    public void StartResearch_()
    {
        if (researching || towerToResearch == null || TowerDictionary.GetResearchStatus(towerToResearch.towerType) || !TowerDictionary.ResearchPreReqComplete(towerToResearch.towerType) || moneyHandler.Money < towerToResearch.researchCost)
        {
            return;
        }

        moneyHandler.Money -= towerToResearch.researchCost;
        researching         = true;
    }
    public void SetCurrentTowerType(string newType)
    {
        currentTowerType = newType;

        TowerData towerData = TowerDictionary.GetTowerData(newType);

        if (towerData != null)
        {
            towerCostText.text = "Cost: " + towerData.buildCost.ToString();
            CurrentlySelectedBlck.GetComponent <ChangeSelectedBlock>().currentlySelectedBlock.GetComponent <ObstacleHighlighterScript>().towerInfo.UpdateUIText(newType);
        }
        else
        {
            towerCostText.text = "";
        }
    }
    //public void UpgradeTower(string whichType)
    public void UpgradeTower()
    {
        print("Upgrade Tower Button Pressed");

        ObstacleHighlighterScript ohs = CurrentlySelectedBlck.GetComponent <ChangeSelectedBlock>().currentlySelectedBlock.GetComponent <ObstacleHighlighterScript>();

        if (ohs.hasTower)
        {
            if (TowerDictionary.ContainsTowerType(currentTowerType))
            {
                string currentType = ohs.towerOnThisBlock.GetTowerType();
                if (TowerDictionary.IsValidUpgrade(currentType, currentTowerType, true))
                {
                    int currentCost, upgradeCost, uselessValue1, uselessValue2;
                    TowerDictionary.GetValueTotals(currentType, out currentCost, out uselessValue1);
                    TowerDictionary.GetValueTotals(currentTowerType, out upgradeCost, out uselessValue2);

                    if (M.Money >= upgradeCost - currentCost)
                    {
                        ohs.towerOnThisBlock.SetTowerData(TowerDictionary.GetTowerData(currentTowerType));
                        M.Money -= upgradeCost - currentCost;
                        ohs.UpdateUIText();
                    }
                    else
                    {
                        print("Not enough money!");
                    }
                }
                else
                {
                    print(currentTowerType + " is not a valid upgrade for " + currentType + "!");
                }
            }
            else
            {
                print("Tried to upgrade a tower to a tower type that doesn't exist!");
            }
        }
        else
        {
            print("No tower to upgrade...");
        }

        SetCurrentTowerType("BASE");
    }
Example #8
0
    public void SetValuesWithSave(string whichType, float currentTime)
    {
        if (whichType == "NONE")
        {
            researching = false;
        }
        else
        {
            SetTowerToResearch(whichType);
            if (towerToResearch == null || TowerDictionary.GetResearchStatus(towerToResearch.towerType) || !TowerDictionary.ResearchPreReqComplete(towerToResearch.towerType))
            {
                return;
            }

            researching = true;
            totalTime   = currentTime;
        }
    }
    //public void BuyTower(string whichType)
    public void BuyTower()
    {
        print("Buy Tower Button Pressed");

        //if (currentTowerType == "NONE")
        currentTowerType = baseTowerType;

        if (TowerDictionary.ContainsTowerType(currentTowerType))
        {
            ObstacleHighlighterScript ohs = CurrentlySelectedBlck.GetComponent <ChangeSelectedBlock>().currentlySelectedBlock.GetComponent <ObstacleHighlighterScript>();
            if (!ohs.hasTower)
            {
                int buyCost, valueThatHasNoUseHere;
                TowerDictionary.GetValueTotals(currentTowerType, out buyCost, out valueThatHasNoUseHere);

                if (M.Money >= buyCost)
                {
                    //CurrentlySelectedBlck.GetComponent<ChangeSelectedBlock>().currentlySelectedBlock.GetComponent<ObstacleHighlighterScript>().spawnTowerOnThisBlock(whichType);

                    // This code should go in ObstacleHighlighterScript.spawnTowerOnThisBlock(), but it doesn't work there... //
                    ohs.towerOnThisBlock = Instantiate(TowerPrefab, new Vector3(ohs.transform.position.x, ohs.transform.position.y + 0.325f, ohs.transform.position.z), Quaternion.identity);
                    ohs.towerOnThisBlock.SetTowerData(TowerDictionary.GetTowerData(currentTowerType));
                    ohs.hasTower = true;
                    // ====================================================================================================== //

                    M.Money -= buyCost;
                    ohs.UpdateUIText();
                }
                else
                {
                    print("Not enough money!");
                }
            }
            //else
            //    UpgradeTower();
        }
        else
        {
            print("Tried to buy a tower of a type that doesn't exist!");
        }

        SetCurrentTowerType("BASE");
    }
    public void SetCurrentTowerType(string newType)
    {
        if (!TowerDictionary.GetResearchStatus(newType))
        {
            return;
        }

        currentTowerType = newType;

        TowerData towerData = TowerDictionary.GetTowerData(newType);

        if (towerData != null)
        {
            towerInfoText.UpdateUIText(towerData.towerType);
            RefreshTotalCostText();
        }
        else
        {
            towerCostText.text = "";
        }
    }
Example #11
0
    private void Update_()
    {
        if (researching)
        {
            totalTime += Time.deltaTime;
            float tmp = totalTime / towerToResearch.researchTime;
            if (tmp >= 1)
            {
                tmp                = 1;
                totalTime          = 0;
                fillBar.fillAmount = 0;

                TowerDictionary.SetResearch(towerToResearch.towerType, true);
                towerToResearch = null;
                researching     = false;
            }
            else
            {
                fillBar.fillAmount = tmp;
            }
        }
    }
    private void RefreshTotalCostText()
    {
        int buyAmount, sellAmount;

        TowerDictionary.GetValueTotals(currentTowerType, out buyAmount, out sellAmount);

        if (selTile.Tower == null)
        {
            towerCostText.text = "Cost: " + buyAmount.ToString();
        }
        else
        {
            if (TowerDictionary.IsValidUpgrade(selTile.Tower.GetTowerType(), currentTowerType, true))
            {
                int buyAmount2, sellAmount2;
                TowerDictionary.GetValueTotals(selTile.Tower.GetTowerType(), out buyAmount2, out sellAmount2);
                towerCostText.text = "Cost: " + (buyAmount - buyAmount2).ToString();
            }
            else
            {
                towerCostText.text = "";
            }
        }
    }
    public void SaveLevel()
    {
        StreamWriter saveFile = new StreamWriter("Assets/_SaveTest_/TextFiles/SaveFiles/" + saveFileName + ".txt", false);

        List <string> breakables  = new List <string>();
        List <string> towers      = new List <string>();
        string        coordString = "";
        TileObject    curObject;

        for (int z = 0; z < 16; z++)
        {
            for (int x = 0; x < 16; x++)
            {
                curObject = tileObjects[z, x];
                switch (curObject.Type)
                {
                case TILE_TYPE.TILE_TILE:
                    if (curObject.Tower != null)
                    {
                        coordString  = CoordsToString(x, z);
                        coordString += "?" + curObject.Tower.GetTowerType();
                        towers.Add(coordString);
                    }
                    break;

                case TILE_TYPE.TILE_BREAKABLE:
                    if (curObject.Tile != null)
                    {
                        coordString = CoordsToString(x, z);
                        breakables.Add(coordString);
                    }
                    break;

                default:
                    break;
                }
            }
        }

        saveFile.WriteLine("//BREAKABLES//");
        foreach (string S in breakables)
        {
            saveFile.WriteLine(S);
        }
        saveFile.WriteLine("//END//");

        saveFile.WriteLine("//TOWERS//");
        foreach (string S in towers)
        {
            saveFile.WriteLine(S);
        }
        saveFile.WriteLine("//END//");

        saveFile.WriteLine("//PLAYER_NUMBERS// HEALTH--MONEY--WAVE_NUM");
        saveFile.WriteLine(playerBase.health.ToString());
        saveFile.WriteLine(playerMoney.Money.ToString());
        saveFile.WriteLine(waveMaster.currentWave.ToString());
        saveFile.WriteLine("//END//");

        saveFile.WriteLine("//RESEARCH_LIST//\n" + TowerDictionary.CreateResearchSaveString() + "//END//");

        string tempString; float tempFloat;

        researchMaster.GetValuesForSave(out tempString, out tempFloat);

        saveFile.WriteLine("//RESEARCH_TIME//");
        saveFile.WriteLine(tempString);
        saveFile.WriteLine(tempFloat.ToString());
        saveFile.WriteLine("//END//");

        saveFile.Close();
    }
    private void LoadLevel()
    {
        TileObject newTileObject;

        tileObjects = new TileObject[16, 16];

        StreamReader mapFile = new StreamReader("Assets/_SaveTest_/TextFiles/MapFiles/" + mapFileName + ".txt");
        string       mapLine;

        mapFile.ReadLine(); // "//LAYOUT//"
        mapFile.ReadLine(); // "//Top Left is (0,0)// '+' for path ' ' for tile"
        mapFile.ReadLine(); // "0----------------0"
        for (int z = 0; z < 16; z++)
        {
            mapLine = mapFile.ReadLine();
            for (int x = 0; x < 16; x++)
            {
                newTileObject = new TileObject();

                switch (mapLine[x + 1])
                {
                case '+':
                    newTileObject.Type = TILE_TYPE.TILE_PATH;
                    break;

                case ' ':
                    newTileObject.Type = TILE_TYPE.TILE_TILE;

                    newTileObject.Tile = Instantiate(mapTilePrefab);
                    newTileObject.Tile.transform.position = new Vector3(x - 8, newTileObject.Tile.transform.localScale.y / 2, 7 - z);
                    newTileObject.Tile.transform.SetParent(mapTileParent.transform);

                    newTileObject.Tower = null;
                    break;

                default:
                    print("Unknown tile type!");
                    break;
                }

                tileObjects[z, x] = newTileObject;
            }
        }
        mapFile.ReadLine(); // "0----------------0"
        mapFile.ReadLine(); // " 0123456789ABCDEF "

        if (loadSave)
        {
            mapFile.Close();
            mapFile = new StreamReader("Assets/_SaveTest_/TextFiles/SaveFiles/" + saveFileName + ".txt");
        }

        mapFile.ReadLine(); // "//BREAKABLES//"

        int newX, newZ;

        mapLine = mapFile.ReadLine().Trim();
        while (mapLine != "//END//")
        {
            newX = ((mapLine[1] - 48) * 10) + (mapLine[2] - 48);
            newZ = ((mapLine[4] - 48) * 10) + (mapLine[5] - 48);

            tileObjects[newZ, newX].Type = TILE_TYPE.TILE_BREAKABLE;

            tileObjects[newZ, newX].Tile = Instantiate(breakableTilePrefab);
            tileObjects[newZ, newX].Tile.transform.position = new Vector3(newX - 8, tileObjects[newZ, newX].Tile.transform.localScale.y / 2, 7 - newZ);
            tileObjects[newZ, newX].Tile.transform.SetParent(mapTileParent.transform);

            mapLine = mapFile.ReadLine();
            mapLine = mapLine.Trim();
        }

        mapFile.ReadLine(); // "//TOWERS//"

        mapLine = mapFile.ReadLine().Trim();
        while (mapLine != "//END//")
        {
            newX    = ((mapLine[1] - 48) * 10) + (mapLine[2] - 48);
            newZ    = ((mapLine[4] - 48) * 10) + (mapLine[5] - 48);
            mapLine = mapLine.Remove(0, 8);

            tileObjects[newZ, newX].Tower = Instantiate(towerPrefab);

            tileObjects[newZ, newX].Tower.SetTowerData(TowerDictionary.GetTowerData(mapLine));
            tileObjects[newZ, newX].Tower.transform.position = new Vector3(tileObjects[newZ, newX].Tile.transform.position.x,
                                                                           tileObjects[newZ, newX].Tile.transform.localScale.y + (tileObjects[newZ, newX].Tower.transform.localScale.y),
                                                                           tileObjects[newZ, newX].Tile.transform.position.z);

            mapLine = mapFile.ReadLine().Trim();
        }

        mapFile.ReadLine(); // "//PLAYER_NUMBERS// HEALTH--MONEY--WAVE_NUM"

        playerBase.health      = int.Parse(mapFile.ReadLine().Trim());
        playerMoney.Money      = int.Parse(mapFile.ReadLine().Trim());
        waveMaster.currentWave = int.Parse(mapFile.ReadLine().Trim());

        mapFile.ReadLine(); // "//END//"
        mapFile.ReadLine(); // "//RESEARCH_LIST//"

        string tempString;

        mapLine = mapFile.ReadLine().Trim();
        while (mapLine != "//END//")
        {
            TowerDictionary.SetResearch(mapLine.Remove(0, 2).Trim(), int.Parse(mapLine[0].ToString()) == 1);
            mapLine = mapFile.ReadLine().Trim();
        }

        mapLine = mapFile.ReadLine(); // "//RESEARCH_TIME//"

        float tempFloat;

        tempString = mapFile.ReadLine().Trim();
        tempFloat  = float.Parse(mapFile.ReadLine().Trim());

        researchMaster.SetValuesWithSave(tempString, tempFloat);

        mapFile.ReadLine(); // "//END//"

        mapFile.Close();

        waveMaster.StartUP();
        playerBase.RefreshFillAmount();
        tileObjects[playerBase.mapZ, playerBase.mapX].Type = TILE_TYPE.TILE_BASE;
        playerBase.transform.position = new Vector3(playerBase.mapX - 8, playerBase.transform.localScale.y / 2, 7 - playerBase.mapZ);

        EnemySpawnerScript ESS;

        foreach (EnemySpawnerScript E in enemySpawners)
        {
            ESS = E;
            tileObjects[ESS.mapZ, ESS.mapX].Type = TILE_TYPE.TILE_SPAWNER;
            ESS.transform.position = new Vector3(ESS.mapX - 8, ESS.transform.localScale.y / 2, 7 - ESS.mapZ);
        }
    }
 void Start()
 {
     player    = FindObjectOfType <PlayerData>();
     towerDict = FindObjectOfType <TowerDictionary>();
     UpdateUIText(curEnergy = Energy);
 }