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); } } } }
public void SetTowerToResearch(string whichType) { if (researching) { return; } towerToResearch = TowerDictionary.GetTowerData(whichType); }
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"); }
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 = ""; } }
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); }