Ejemplo n.º 1
0
        /// <summary>
        /// Computes the training time for the given skill
        /// </summary>
        /// <param name="skill"></param>
        /// <param name="level"></param>
        /// <param name="origin"></param>
        /// <returns></returns>
        public TimeSpan GetTrainingTime(StaticSkill skill, int level, TrainingOrigin origin)
        {
            var spPerHour = GetBaseSPPerHour(skill);
            int sp        = GetSPToTrain(skill, level, origin);

            return(GetTrainingTime(sp, spPerHour));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Computes the training time for the given skill.
        /// </summary>
        /// <param name="skill"></param>
        /// <param name="level"></param>
        /// <param name="origin"></param>
        /// <returns></returns>
        public TimeSpan GetTrainingTime(StaticSkill skill, long level, TrainingOrigin origin = TrainingOrigin.FromCurrent)
        {
            float spPerHour = GetBaseSPPerHour(skill);
            long  sp        = GetSPToTrain(skill, level, origin);

            return(GetTrainingTime(sp, spPerHour));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Computes the number of SP to train
        /// </summary>
        /// <param name="skill"></param>
        /// <param name="level"></param>
        /// <param name="origin"></param>
        /// <returns></returns>
        public int GetSPToTrain(StaticSkill skill, int level, TrainingOrigin origin)
        {
            if (level == 0)
            {
                return(0);
            }
            int sp = skill.GetPointsRequiredForLevel(level);

            // Deals with the origin
            int result;

            switch (origin)
            {
            // Include current SP
            case TrainingOrigin.FromCurrent:
                result = sp - GetSkillPoints(skill);
                break;

            // This level only (previous are known)
            case TrainingOrigin.FromPreviousLevel:
                result = sp - skill.GetPointsRequiredForLevel(level - 1);
                break;

            case TrainingOrigin.FromPreviousLevelOrCurrent:
                result = sp - Math.Max(GetSkillPoints(skill), skill.GetPointsRequiredForLevel(level - 1));
                break;

            // Include nothing
            default:
                result = sp;
                break;
            }

            // Returns result
            if (result < 0)
            {
                return(0);
            }

            return(result);
        }