Example #1
0
        public override void LevelUp()
        {
            CharacterController characterController = FindObjectOfType <CharacterController>();

            this.level++;
            List <string> stats = new List <string>();

            foreach (var stat in upgradePointsDictionary)
            {
                stats.Add(stat.Key.ToString());
            }
            stats.ForEach(stat => {
                upgradePointsDictionary[stat]++;
                characterController.ApplyUpgradePoint(stat, this);
            });
            int maxRoll = upgradePointsDictionary.Count;
            int dieRoll = Random.Range(0, maxRoll + 1);

            if (dieRoll == maxRoll)
            {
                experience++;
            }
            else
            {
                // Give enemies an extra random boost
                string statToIncrease = stats[dieRoll];
                upgradePointsDictionary[statToIncrease]++;
                characterController.ApplyUpgradePoint(statToIncrease, this);
            }

            health       = maxHealth;
            energyPoints = maxEnergyPoints;
        }
    public void Populate()
    {
        partyMember = partyPanel.LookUpSelectedPartyMember();
        buttonList.ForEach(button => {
            Destroy(button.gameObject);
        });
        buttonList.Clear();

        foreach (var multiplier in partyMember.upgradePointsDictionary)
        {
            Button button = Instantiate <Button>(upgradePointButton, this.transform);
            buttonList.Add(button);
            UpdateButtonLabel(button, multiplier.Key.ToString(), multiplier.Value.ToString());
            button.GetComponent <Button>().onClick.AddListener(() => {
                string key = multiplier.Key.ToString();
                partyMember.upgradePointsDictionary[key]++;
                UpdateButtonLabel(button, key, partyMember.upgradePointsDictionary[key].ToString());
                partyMember.SpendUpgradePoint();

                characterController.ApplyUpgradePoint(key, (BattleCharacter)partyMember);
                playerInfoPanel.Populate(partyMember.characterName);
            });
        }
    }