private void GetReferences() { _missionChoice = GameObject.FindGameObjectWithTag(TagForBase).GetComponentInChildren <ChooseNextMissionPath>(); _playerTowerLog = GameObject.FindGameObjectWithTag(TagForBase).GetComponentInChildren <PlayerTowerLog>();// FindObjectOfType<PlayerTowerLog>(); _singleton = Singleton.Instance; _tinkerUpgrades = FindObjectOfType <TinkerUpgrades>(); _playerTowerLog = FindObjectOfType <PlayerTowerLog>(); }
public Tower PickTower(ref Tower turretBase, ref GameObject towerHead, ref int baseType, ref int towerBarrelType, ref string tower) { List <Dropdown.OptionData> list = towerTurret.options; tower = list[towerTurret.value].text; //if (towerLog == null) //{ towerLog = FindObjectOfType <PlayerTowerLog>(); //} if (changingTowerType) { baseType = 0; towerBarrelType = 0; // I only enter it once per 'change' //SetTowerBaseAndHead2(); changingTowerType = false; } else { knownTowerParts = towerLog.GetTowerParts(tower); // knownTowerParts is my list of parts for this given tower type., i pass in the name of the dropdown to access its enum int. baseType = knownTowerParts[towerBase.options[towerBase.value].text]; towerBarrelType = knownTowerParts[towerBarrel.options[towerBarrel.value].text]; } //towerTurret.options(towerTurret.value).text; if (tower.Contains("Rifled")) { FocusRifledTowers(ref turretBase, ref towerHead, towerBarrelType, baseType); } //if (tower.Contains("AssaultTower")) //{ // FocusAssaultTowers(ref turretBase, ref towerHead, towerBarrelType, baseType); //} if (tower.Contains("Flame")) { FocusFireTowers(ref turretBase, ref towerHead, towerBarrelType, baseType); } if (tower.Contains("Light")) { FocusLighteningTowers(ref turretBase, ref towerHead, towerBarrelType, baseType); } if (tower.Contains("Plasma")) { FocusPlasmaTowers(ref turretBase, ref towerHead, towerBarrelType, baseType); } if (tower.Contains("Frost")) { FocusSlowTowers(ref turretBase, ref towerHead, towerBarrelType, baseType); } return(decidedTower); }
// call this from PlayerTowerLog because this laods first and is reliant on that script. // also calledo nload. public void ManualStart() { towerLog = GetComponent <PlayerTowerLog>(); singleton = Singleton.Instance; //print(towerLog+ "I am tower log!"); towers = towerLog.towers1; amountOfTowers = towers.Length; GetAmountOfUndiscoveredTowers(); //this populates the buttons and checks if you can learn CheckIfCanLearnMoreTowers(); turretTypes.UpdateTowersAvailable(GetDiscoveredTowers()); }
public void InitializeOptionsOnRoomSwap() { if (towerLog == null) { towerLog = FindObjectOfType <PlayerTowerLog>(); } knownTowerParts = new Dictionary <string, int>(); List <Dropdown.OptionData> list = towerTurret.options; string tower = list[towerTurret.value].text;//towerTurret.options(towserTurret.value).text; knownTowerParts = towerLog.GetTowerParts(tower); FocusDynamicTowerType(knownTowerParts); }
public Tower SetTowerBaseAndHead2() { if (towerLog == null) { towerLog = FindObjectOfType <PlayerTowerLog>(); } knownTowerParts = new Dictionary <string, int>(); List <Dropdown.OptionData> list = towerTurret.options; string tower = list[towerTurret.value].text;//towerTurret.options(towserTurret.value).text; knownTowerParts = towerLog.GetTowerParts(tower); FocusDynamicTowerType(knownTowerParts); return(decidedTower); }
public Tower SetTowerBaseAndHead2(string towerType) { if (towerLog == null) { towerLog = FindObjectOfType <PlayerTowerLog>(); } int towerIndex = towerTurret.options.FindIndex(option => option.text == towerType); towerTurret.value = towerIndex; knownTowerParts = new Dictionary <string, int>(); knownTowerParts = towerLog.GetTowerParts(towerType); FocusDynamicTowerType(knownTowerParts); return(decidedTower); }
public void ManualStart2(Dictionary <string, Dictionary <string, int> > knownTowerTypes, Dictionary <string, Dictionary <string, int> > learnableTowerTypes) { towerLog = GetComponent <PlayerTowerLog>(); singleton = Singleton.Instance; amountOfTowers = knownTowerTypes.Keys.Count; List <string> towersICanLearn = GetAmountOfUndiscoveredTowers2(knownTowerTypes, learnableTowerTypes); //This here is the problem, when i check if i can learn more towers, i check amount of undiscovered towers. //Right below I commented out where I initialize that variable. Find out why i even need it. Maybe set limit to 3 or amountdiscovered //amountOfUndiscoveredTowers = learnableTowerTypes.Keys.Count; //GetAmountOfUndiscoveredTowers(); //this populates the buttons and checks if you can learn CheckIfCanLearnMoreTowers2(towersICanLearn); List <string> discoveredTowers = new List <string>(knownTowerTypes.Keys); turretTypes.UpdateTowersAvailable(discoveredTowers); }
/// <summary> /// This function takes in the button name of a learned tower, and then pulls it from LEARNABLE to KNOWN. /// </summary> /// <param name="buttonName"></param> public void LearnedANewTower2(string buttonName) { Dictionary <string, Dictionary <string, int> > knownTowerTypes = new Dictionary <string, Dictionary <string, int> >(); Dictionary <string, Dictionary <string, int> > learnableTowerTypes = new Dictionary <string, Dictionary <string, int> >(); Dictionary <string, int> towerParts = new Dictionary <string, int>(); if (towerLog == null) { towerLog = FindObjectOfType <PlayerTowerLog>(); } // here I will add in both references, minus and add towerLog.GetKnownAndLearnableTowerRef(ref knownTowerTypes, ref learnableTowerTypes); // this is where I get it and delete, LATER TODO I will come in here and take slect parts out. towerParts = learnableTowerTypes[buttonName]; knownTowerTypes.Add(buttonName, towerParts); learnableTowerTypes.Remove(buttonName); List <string> knownTowerNameList = new List <string>(knownTowerTypes.Keys); turretTypes.UpdateTowersAvailable(knownTowerNameList); }
public IEnumerator LoadFromFile(bool isLoadingFromFile) { // This is done in 3 steps, first, load file and initialize the singleton. // 2nd is to load base (singleton already has loaded the setting base needs) // 3rd is to do all the loading that requires the base active. DoneLookingAtSummary = false; SaveSerializedObject savedFile = null; _singleton = Singleton.Instance; FileStream file = null; try { file = File.Open(Application.persistentDataPath + savedDataFileName, FileMode.Open); BinaryFormatter bf = new BinaryFormatter(); savedFile = (SaveSerializedObject)bf.Deserialize(file); // Singleton is loaded FIRST, that way it is initialized to what I need at the time of the other files loading. if (isLoadingFromFile) { _singleton.isHasLearnedATower = savedFile.hasChosenATower; _singleton.SetLevel(savedFile.currentLevel); } } catch (Exception e1) { print(e1.Message); } finally { try { file.Close(); } catch (Exception e2) { // Do nothing, in this case the file may not exist to be closed. } } // Loading the base. // if loading from file it is most likely a CONTINUE and so we just load everything from file if (isLoadingFromFile) { AsyncOperation loadingBase; loadingBase = SceneManager.LoadSceneAsync("_Scenes/_Base"); while (!loadingBase.isDone) { yield return(new WaitForSeconds(.50f)); } } else // ELSE it is a level completed, I want to show post level information. { loadingLevelFromPostGame = null; FindObjectOfType <PostLevelSummaryScreen>().TurnOnSummaryScreen(); //yield return new WaitUntil(CheckIfSummaryClose()); yield return(new WaitUntil(() => DoneLookingAtSummary == true)); // function not null? asyn load yield return(new WaitUntil(() => loadingLevelFromPostGame.isDone)); } // set everything that needs an active base. try { try { // need the references of base objects AFTER load GetReferences(); // This is outside because I want to load all learned towers on return, but RESET that things are learned, so I can again for new base. var x = GameObject.FindGameObjectWithTag("TowerInfo"); //TODO move this into getReferences(). _playerTowerLog = x.GetComponentInChildren <PlayerTowerLog>(); //_playerTowerLog.LoadTowers(savedFile.towerList); //if it is loading old base, load these, if not get new ones. if (isLoadingFromFile) { //Dictionary<string, Dictionary<string, int>> dics = savedFile.LoadDic(); //List<int> test = savedFile.LoadList(); List <int> l = new List <int>(savedFile.enemyOption1List); _missionChoice.LoadPathChoices(savedFile.enemyOption1List, savedFile.enemyOption2List); _tinkerUpgrades.LoadInfoAndSavedOptions(savedFile.currentUpgradeLevels, savedFile.learnableUpgrades, savedFile.possibleOptions, savedFile.hasPicked, true); _singleton.ishasLearnedTinker = savedFile.hasPicked; } else { // this function is the 'reset' of the above. It sets false to 'has picked' and 'hasRolled', while setting empty to the sotred options. _tinkerUpgrades.LoadInfoAndSavedOptions(savedFile.currentUpgradeLevels, savedFile.learnableUpgrades, new int[] { }, false, false); } // LOAD REGARDLESS we load what towers we know regardless of loading saved or new base. The IF a tower is learned is checked above with singleton _singleton.SetIsTutorial(savedFile.isTutorial); _playerTowerLog.LoadTowersAndParts(savedFile.knownTowersAndParts, savedFile.learnableTowersAndParts, savedFile.unlearnableTowersAndParts); _tinkerUpgrades.AddToBackupList(); // TODO check this for new games that it doesnt load.... aka start new will this bomb. _singleton.LoadTowerPreset(1, savedFile.towerOne.GetTowerName(), savedFile.towerOne.GetTowerHeadType(), savedFile.towerOne.GetTowerBaseType()); _singleton.LoadTowerPreset(2, savedFile.towerTwo.GetTowerName(), savedFile.towerTwo.GetTowerHeadType(), savedFile.towerTwo.GetTowerBaseType()); _singleton.LoadTowerPreset(3, savedFile.towerThree.GetTowerName(), savedFile.towerThree.GetTowerHeadType(), savedFile.towerThree.GetTowerBaseType()); } catch (Exception e) { print("Failed! " + e.Message); } finally { } } catch (Exception z) { print("couldn't open file"); } finishedLoading = true; yield return(new WaitForSeconds(12f)); }