private IEnumerator ChangeClass()
    {
        lockControls.value = true;
        LevelGain level = gains[classList.GetPosition()];

        yield return(new WaitForSeconds(1f * currentGameSpeed.value));

        StatsContainer     stats     = playerData.stats[entryList.GetPosition()];
        InventoryContainer inventory = playerData.inventory[entryList.GetPosition()];
        SkillsContainer    skills    = playerData.skills[entryList.GetPosition()];

        levelupScript.SetupStats(stats, false);
        Debug.Log("CLASS CHANGE!");
        stats.ClassGain(level, (int)level.playerClassName);
        inventory.IncreaseWpnSkill(level.weaponSkills);
        skills.GainSkill(level.skill);

        sfxQueue.Enqueue(levelupFanfare);
        playSfxEvent.Invoke();
        popupMode = true;
        yield return(StartCoroutine(levelupScript.RunLevelup(stats)));

        popupMode = false;

        CreateListEntries();
        DeselectCharacter();
        lockControls.value = false;
        yield break;
    }
예제 #2
0
    public void ClassGain(LevelGain gainedClass, int classPosition)
    {
        eHp  += gainedClass.bonusHp;
        eDmg += gainedClass.bonusDmg;
        eMnd += gainedClass.bonusMnd;
        eSpd += gainedClass.bonusSpd;
        eSkl += gainedClass.bonusSkl;
        eDef += gainedClass.bonusDef;
        classLevels[classPosition]++;

        CalculateStats();
    }
    private void SetupClassGains()
    {
        LevelGain level = gains[classList.GetPosition()];

        //Stats
        statsBoosts[0].transform.parent.gameObject.SetActive(level.bonusHp > 0);
        statsBoosts[0].text = "+" + level.bonusHp;
        statsBoosts[1].transform.parent.gameObject.SetActive(level.bonusDmg > 0);
        statsBoosts[1].text = "+" + level.bonusDmg;
        statsBoosts[2].transform.parent.gameObject.SetActive(level.bonusMnd > 0);
        statsBoosts[2].text = "+" + level.bonusMnd;
        statsBoosts[3].transform.parent.gameObject.SetActive(level.bonusSkl > 0);
        statsBoosts[3].text = "+" + level.bonusSkl;
        statsBoosts[4].transform.parent.gameObject.SetActive(level.bonusSpd > 0);
        statsBoosts[4].text = "+" + level.bonusSpd;
        statsBoosts[5].transform.parent.gameObject.SetActive(level.bonusDef > 0);
        statsBoosts[5].text = "+" + level.bonusDef;

        //Wpn skills
        for (int i = 0; i < wpnList.Count; i++)
        {
            Destroy(wpnList[i].gameObject);
        }
        wpnList.Clear();
        for (int i = 0; i < level.weaponSkills.Count; i++)
        {
            Transform t = Instantiate(wpnSkillTemplate, wpnSkillParent);
            t.GetComponentInChildren <Image>().sprite = wpnIcons.icons[(int)level.weaponSkills[i]];

            WeaponRank current = playerData.inventory[entryList.GetPosition()].wpnSkills[(int)level.weaponSkills[i]];
            WeaponRank next    = (current + 1);
            if (current != WeaponRank.NONE)
            {
                t.GetComponentInChildren <Text>().text = current + " > " + next;
            }
            else
            {
                t.GetComponentInChildren <Text>().text = "+ " + next;
            }

            t.gameObject.SetActive(true);
            wpnList.Add(t);
        }
        wpnSkillTemplate.gameObject.SetActive(false);

        //Skill
        skillGainIcon.sprite = level.skill.icon;
        skillGainName.text   = level.skill.entryName;
        skillGainDesc.text   = level.skill.description;
    }
예제 #4
0
    public List <LevelGain> LevelupOptions(int[] classLevels)
    {
        List <LevelGain> gains = new List <LevelGain>();
        int nextLeft = 0, nextRight = 0;
        int adjacent = 0, current = 0;

        for (int i = 0; i < classLevels.Length; i++)
        {
            nextLeft  = OPMath.FullLoop(0, CLASS_COUNT, i - 1);
            nextRight = OPMath.FullLoop(0, CLASS_COUNT, i + 1);
            adjacent  = (classLevels[nextLeft] > 0 || classLevels[nextRight] > 0) ? 1 : 0;
            current   = (classLevels[i] > 0) ? classLevels[i] + 1 : 0;

            int level = Mathf.Max(current, adjacent);
            if (level == 0)
            {
                continue;
            }

            LevelGain gain = new LevelGain()
            {
                className    = classes[i].entryName,
                classIcon    = classes[i].icon,
                level        = level,
                weaponSkills = classes[i].weaponSkills,
                skill        = classes[i].skills[level - 1],
                bonusHp      = classes[i].bonusHp,
                bonusDmg     = classes[i].bonusDmg,
                bonusMnd     = classes[i].bonusMnd,
                bonusSkl     = classes[i].bonusSkl,
                bonusSpd     = classes[i].bonusSpd,
                bonusDef     = classes[i].bonusDef
            };
            gains.Add(gain);
        }

        return(gains);
    }
예제 #5
0
 /// <summary>
 /// Fills the entry with the data of the character.
 /// </summary>
 /// <param name="statsCon"></param>
 public void FillData(LevelGain gain)
 {
     classLevel.text = gain.level.ToString();
     icon.sprite     = gain.classIcon;
     entryName.text  = gain.className;
 }