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; }
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; }
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); }
/// <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; }