Ejemplo n.º 1
0
 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>();
 }
Ejemplo n.º 2
0
    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());
    }
Ejemplo n.º 4
0
    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);
    }
Ejemplo n.º 5
0
    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);
    }
Ejemplo n.º 6
0
    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);
    }
Ejemplo n.º 9
0
    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));
    }