public XPEvent AddXp(int xp) { XPEvent xpEvent = new XPEvent(); xpEvent.initialLevel = characterLevel; xpEvent.initialXP = exp; xpEvent.gainedXP = xp; exp += xp; Debug.Log(character.characterName + " new XP = " + exp); // HACK figure out rule for XP to level, where to store that data, etc // for now, just do 100xp to level up while (exp >= XPToLevel) { exp -= XPToLevel; LevelUpEvent levelEvent = LevelUp(); if (levelEvent) { levelEvent.levelRank = characterLevel; xpEvent.levelUps.Add(levelEvent); } Debug.Log(character.characterName + " levelled up to L " + characterLevel + ", XP = " + exp); } if (characterLevel == MaxLevel) { exp = 0; } xpEvent.finalXP = exp; xpEvent.finalLevel = characterLevel; return(xpEvent); }
public LevelUpEvent LevelUp() { // start with fail event LevelUpEvent levelUpEvent = new LevelUpEvent(); if (characterLevel < MaxLevel) { levelUpEvent = levels[characterLevel - 1].ApplyLevelUp(character); ++characterLevel; } return(levelUpEvent); }
public List <LevelUpEvent> LevelUp(int newLevel) { List <LevelUpEvent> levelEvents = new List <LevelUpEvent>(); newLevel = Mathf.Min(newLevel, MaxLevel); while (characterLevel < newLevel) { LevelUpEvent currentEvent = LevelUp(); if (currentEvent) { currentEvent.levelRank = characterLevel; levelEvents.Add(currentEvent); } else { // Break from loop if LevelUp fails to increase level break; } } return(levelEvents); }