Exemple #1
0
        /// <summary>
        /// Constructor from an <see cref="ISkillLevel"/> object.
        /// </summary>
        /// <param name="obj"></param>
        /// <exception cref="System.ArgumentNullException">obj</exception>
        public StaticSkillLevel(ISkillLevel obj)
        {
            obj.ThrowIfNull(nameof(obj));

            Skill = obj.Skill;
            Level = obj.Level;
        }
Exemple #2
0
        /// <summary>
        /// Constructor from an <see cref="ISkillLevel"/> object.
        /// </summary>
        /// <param name="obj"></param>
        /// <exception cref="System.ArgumentNullException">obj</exception>
        public StaticSkillLevel(ISkillLevel obj)
        {
            obj.ThrowIfNull(nameof(obj));

            Skill = obj.Skill;
            Level = obj.Level;
        }
Exemple #3
0
        /// <summary>
        /// Gets true if a matching item is already contained.
        /// </summary>
        /// <remarks>The comparison is only based on skill array index and level, the two objects may be actually different references</remarks>
        /// <param name="item"></param>
        /// <returns></returns>
        public bool Contains(ISkillLevel item)
        {
            if (item.Skill.ArrayIndex > m_items.Length)
            {
                return(true);
            }

            T result = this[item.Skill.ArrayIndex, item.Level];

            return(result != null && result.Skill != null);
        }
        /// <summary>
        /// Recursive method to generate treenodes for tvSkillList.
        /// </summary>
        /// <param name="prereq">The prereq.</param>
        /// <param name="allSkillsKnown">if set to <c>true</c> [all skills known].</param>
        /// <param name="skillsUnplanned">if set to <c>true</c> [skills unplanned].</param>
        /// <returns></returns>
        private TreeNode GetSkillNode(ISkillLevel prereq, ref bool allSkillsKnown, ref bool skillsUnplanned)
        {
            if (prereq.Skill == null)
            {
                return(new TreeNode());
            }

            Character character = (Character)m_plan.Character;
            Skill     skill     = character.Skills[prereq.Skill.ID];
            TreeNode  node      = new TreeNode(prereq.ToString())
            {
                Tag = new SkillLevel(skill, prereq.Level)
            };

            // Skill requirement met
            if (skill.Level >= prereq.Level)
            {
                node.ImageIndex         = 1;
                node.SelectedImageIndex = 1;
            }
            // Requirement not met, but planned
            else if (m_plan.IsPlanned(skill, prereq.Level))
            {
                node.ImageIndex         = 2;
                node.SelectedImageIndex = 2;
                allSkillsKnown          = false;
            }
            // Requirement not met, but trainable
            else if (skill.Level < prereq.Level && skill.IsKnown)
            {
                node.ImageIndex         = 3;
                node.SelectedImageIndex = 3;
                allSkillsKnown          = false;
                skillsUnplanned         = true;
            }
            // Requirement not met
            else
            {
                node.ImageIndex         = 0;
                node.SelectedImageIndex = 0;
                allSkillsKnown          = false;
                skillsUnplanned         = true;
            }

            // Generate child nodes if required
            foreach (StaticSkillLevel childPrereq in skill.StaticData.Prerequisites.Where(childPrereq => childPrereq != prereq))
            {
                node.Nodes.Add(GetSkillNode(childPrereq, ref allSkillsKnown, ref skillsUnplanned));
            }

            return(node);
        }
Exemple #5
0
        /// <summary>
        /// Gets true if this skill level is, in any way, dependent of the provided skill level. Checks prerequisites but also same skill's lower levels.
        /// </summary>
        /// <param name="level"></param>
        /// <returns>True if the given item's skill is a prerequisite of this one or if it is a lower level of the same skill.</returns>
        public bool IsDependentOf(ISkillLevel level)
        {
            // Same skill, lower level ?
            if (this.Skill == level.Skill)
            {
                return(this.Level > level.Level);
            }

            // Prerequisite
            int neededLevel;

            this.Skill.HasAsPrerequisite(level.Skill, out neededLevel);
            return(level.Level <= neededLevel);
        }
Exemple #6
0
        /// <summary>
        /// Gets true if this skill level is, in any way, dependent of the provided skill level. Checks prerequisites but also same skill's lower levels.
        /// </summary>
        /// <param name="skillLevel"><see cref="ISkillLevel">ISkillLevel</see> to check if current skill is a dependant of the SkillLevel pass</param>
        /// <returns>True if the given item's skill is a prerequisite of this one or if it is a lower level of the same skill.</returns>
        /// <exception cref="System.ArgumentNullException">skillLevel</exception>
        public bool IsDependentOf(ISkillLevel skillLevel)
        {
            skillLevel.ThrowIfNull(nameof(skillLevel));

            // Same skill, lower level ?
            if (Skill == skillLevel.Skill)
            {
                return(Level > skillLevel.Level);
            }

            // Prerequisite
            long neededLevel;

            Skill.HasAsPrerequisite(skillLevel.Skill, out neededLevel);
            return(skillLevel.Level <= neededLevel);
        }
Exemple #7
0
        /// <summary>
        /// Adds the name.
        /// </summary>
        /// <param name="settings">The settings.</param>
        /// <param name="entry">The entry.</param>
        /// <param name="builder">The builder.</param>
        private static void AddName(PlanExportSettings settings, ISkillLevel entry, StringBuilder builder)
        {
            if (settings.Markup == MarkupType.Html)
            {
                builder.Append("<a href=\"\" onclick=\"CCPEVE.show" +
                               $"{(!settings.ShoppingList ? "Info" : "MarketDetails")}({entry.Skill.ID})\">");
            }
            builder.Append(entry.Skill.Name);

            if (settings.Markup == MarkupType.Html)
            {
                builder.Append("</a>");
            }

            if (!settings.ShoppingList)
            {
                builder.Append($" {Skill.GetRomanFromInt(entry.Level)}");
            }
        }
        /// <summary>
        /// Gets true if this skill level is, in any way, dependent of the provided skill level. Checks prerequisites but also same skill's lower levels.
        /// </summary>
        /// <param name="level"><see cref="ISkillLevel">ISkillLevel</see> to check if current skill is a dependant of the SkillLevel pass</param>
        /// <returns>True if the given item's skill is a prerequisite of this one or if it is a lower level of the same skill.</returns>
        public bool IsDependentOf(ISkillLevel skillLevel)
        {
            // Same skill, lower level ?
            if (this.Skill == skillLevel.Skill)
            {
                return this.Level > skillLevel.Level;
            }

            // Prerequisite
            int neededLevel;
            this.Skill.HasAsPrerequisite(skillLevel.Skill, out neededLevel);
            return skillLevel.Level <= neededLevel;
        }
Exemple #9
0
 /// <summary>
 /// Computes the training time for the given skill
 /// </summary>
 /// <param name="level"></param>
 /// <returns></returns>
 public TimeSpan GetTrainingTime(ISkillLevel level)
 {
     return(GetTrainingTime(level.Skill, level.Level, TrainingOrigin.FromCurrent));
 }
Exemple #10
0
 /// <summary>
 /// Computes the number of SP to train
 /// </summary>
 /// <param name="level"></param>
 /// <returns></returns>
 public int GetSPToTrain(ISkillLevel level)
 {
     return(GetSPToTrain(level.Skill, level.Level, TrainingOrigin.FromCurrent));
 }
Exemple #11
0
 /// <summary>
 /// Gets true if this skill level is, in any way, dependent of the provided skill level. Checks prerequisites but also same skill's lower levels.
 /// </summary>
 /// <param name="level"></param>
 /// <returns>True if the given item's skill is a prerequisite of this one or if it is a lower level of the same skill.</returns>
 public bool IsDependentOf(ISkillLevel level) => new StaticSkillLevel(this).IsDependentOf(level);
Exemple #12
0
        /// <summary>
        /// Adds the name.
        /// </summary>
        /// <param name="settings">The settings.</param>
        /// <param name="entry">The entry.</param>
        /// <param name="builder">The builder.</param>
        private static void AddName(PlanExportSettings settings, ISkillLevel entry, StringBuilder builder)
        {
            if (settings.Markup == MarkupType.Html)
            {
                builder.Append("<a href=\"\" onclick=\"CCPEVE.show" +
                               $"{(!settings.ShoppingList ? "Info" : "MarketDetails")}({entry.Skill.ID})\">");
            }
            builder.Append(entry.Skill.Name);

            if (settings.Markup == MarkupType.Html)
                builder.Append("</a>");

            if (!settings.ShoppingList)
                builder.Append($" {Skill.GetRomanFromInt(entry.Level)}");
        }
Exemple #13
0
        /// <summary>
        /// Gets true if this skill level is, in any way, dependent of the provided skill level. Checks prerequisites but also same skill's lower levels.
        /// </summary>
        /// <param name="skillLevel"><see cref="ISkillLevel">ISkillLevel</see> to check if current skill is a dependant of the SkillLevel pass</param>
        /// <returns>True if the given item's skill is a prerequisite of this one or if it is a lower level of the same skill.</returns>
        /// <exception cref="System.ArgumentNullException">skillLevel</exception>
        public bool IsDependentOf(ISkillLevel skillLevel)
        {
            skillLevel.ThrowIfNull(nameof(skillLevel));

            // Same skill, lower level ?
            if (Skill == skillLevel.Skill)
                return Level > skillLevel.Level;

            // Prerequisite
            Int64 neededLevel;
            Skill.HasAsPrerequisite(skillLevel.Skill, out neededLevel);
            return skillLevel.Level <= neededLevel;
        }
        /// <summary>
        /// Recursive method to generate treenodes for tvSkillList.
        /// </summary>
        /// <param name="prereq">The prereq.</param>
        /// <param name="allSkillsKnown">if set to <c>true</c> [all skills known].</param>
        /// <param name="skillsUnplanned">if set to <c>true</c> [skills unplanned].</param>
        /// <returns></returns>
        private TreeNode GetSkillNode(ISkillLevel prereq, ref bool allSkillsKnown, ref bool skillsUnplanned)
        {
            if (prereq.Skill == null)
                return new TreeNode();

            Character character = (Character)m_plan.Character;
            Skill skill = character.Skills[prereq.Skill.ID];
            TreeNode node = new TreeNode(prereq.ToString()) { Tag = new SkillLevel(skill, prereq.Level) };

            // Skill requirement met
            if (skill.Level >= prereq.Level)
            {
                node.ImageIndex = 1;
                node.SelectedImageIndex = 1;
            }
                // Requirement not met, but planned
            else if (m_plan.IsPlanned(skill, prereq.Level))
            {
                node.ImageIndex = 2;
                node.SelectedImageIndex = 2;
                allSkillsKnown = false;
            }
                // Requirement not met, but trainable
            else if (skill.Level < prereq.Level && skill.IsKnown)
            {
                node.ImageIndex = 3;
                node.SelectedImageIndex = 3;
                allSkillsKnown = false;
                skillsUnplanned = true;
            }
                // Requirement not met
            else
            {
                node.ImageIndex = 0;
                node.SelectedImageIndex = 0;
                allSkillsKnown = false;
                skillsUnplanned = true;
            }

            // Generate child nodes if required
            foreach (StaticSkillLevel childPrereq in skill.StaticData.Prerequisites.Where(childPrereq => childPrereq != prereq))
            {
                node.Nodes.Add(GetSkillNode(childPrereq, ref allSkillsKnown, ref skillsUnplanned));
            }

            return node;
        }
Exemple #15
0
 /// <summary>Provides the observer with new data.</summary>
 /// <param name="value">The current notification information.</param>
 public void OnNext(ISkillLevel value)
 {
     this.Value = this.UpdateFunction.Invoke();
 }
Exemple #16
0
        /// <summary>
        /// Computes the training time for the given skill.
        /// </summary>
        /// <param name="skillLevel">The skill level.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentNullException">skillLevel</exception>
        public TimeSpan GetTrainingTime(ISkillLevel skillLevel)
        {
            skillLevel.ThrowIfNull(nameof(skillLevel));

            return(GetTrainingTime(skillLevel.Skill, skillLevel.Level));
        }
Exemple #17
0
 /// <summary>
 /// Peforms the given training. Same as <see cref="SetSkillLevel"/> but only applied when the given level is greater than the current one.
 /// </summary>
 /// <param name="training"></param>
 public void Train(ISkillLevel training)
 {
     Train(training.Skill, training.Level);
 }
 /// <summary>
 /// Constructor from an <see cref="ISkillLevel"/> object.
 /// </summary>
 /// <param name="level"></param>
 public StaticSkillLevel(ISkillLevel level)
     : this()
 {
     this.Skill = level.Skill;
     this.Level = level.Level;
 }
Exemple #19
0
 /// <summary>
 /// Gets true if this skill level is, in any way, dependent of the provided skill level. Checks prerequisites but also same skill's lower levels.
 /// </summary>
 /// <param name="level"></param>
 /// <returns>True if the given item's skill is a prerequisite of this one or if it is a lower level of the same skill.</returns>
 public bool IsDependentOf(ISkillLevel level)
 {
     return (new StaticSkillLevel(this)).IsDependentOf(level);
 }
Exemple #20
0
 /// <summary>
 /// Gets true if this skill level is, in any way, dependent of the provided skill level. Checks prerequisites but also same skill's lower levels.
 /// </summary>
 /// <param name="level"></param>
 /// <returns>True if the given item's skill is a prerequisite of this one or if it is a lower level of the same skill.</returns>
 public bool IsDependentOf(ISkillLevel level)
 {
     return(((StaticSkillLevel)this).IsDependentOf(level));
 }
Exemple #21
0
        /// <summary>
        /// Gets true if a matching item is already contained.
        /// </summary>
        /// <remarks>The comparison is only based on skill array index and level, the two objects may be actually different references</remarks>
        /// <param name="item"></param>
        /// <returns></returns>
        public bool Contains(ISkillLevel item)
        {
            var result = this[item.Skill.ArrayIndex, item.Level];

            return(result != null && result.Skill != null);
        }
Exemple #22
0
        /// <summary>
        /// Performs the given training.
        /// Same as <see cref="SetSkillLevel"/> but only applied when the given level is greater than the current one.
        /// </summary>
        /// <param name="training"></param>
        /// <exception cref="System.ArgumentNullException">training</exception>
        public void Train(ISkillLevel training)
        {
            training.ThrowIfNull(nameof(training));

            Train(training.Skill, training.Level);
        }
Exemple #23
0
 /// <summary>
 /// Remove the matching item
 /// </summary>
 /// <remarks>The comparison is only based on skill array index and level, the two objects may be actually different references</remarks>
 /// <param name="item"></param>
 /// <returns></returns>
 public void Remove(ISkillLevel item)
 {
     this[item.Skill.ArrayIndex, item.Level] = default(T);
 }
Exemple #24
0
        /// <summary>
        /// Computes the number of SP to train.
        /// </summary>
        /// <param name="skillLevel">The skill level.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentNullException">skillLevel</exception>
        public long GetSPToTrain(ISkillLevel skillLevel)
        {
            skillLevel.ThrowIfNull(nameof(skillLevel));

            return(GetSPToTrain(skillLevel.Skill, skillLevel.Level));
        }
Exemple #25
0
 /// <summary>
 /// Gets true if this skill level is, in any way, dependent of the provided skill
 /// level. Checks prerequisites but also same skill's lower levels.
 /// </summary>
 /// <param name="level"></param>
 /// <returns>True if the given item's skill is a prerequisite of this one or if it is a
 /// lower level of the same skill.</returns>
 public bool IsDependentOf(ISkillLevel level) => ssl.IsDependentOf(level);
 /// <summary>
 /// From an entry of the display plan, retrieve the entry of the base plan.
 /// </summary>
 /// <param name="displayEntry"></param>
 /// <returns></returns>
 private PlanEntry GetOriginalEntry(ISkillLevel displayEntry) => m_plan.GetEntry(displayEntry.Skill, displayEntry.Level);
Exemple #27
0
 /// <summary>
 /// Gets true if this skill level is, in any way, dependent of the provided skill level. Checks prerequisites but also same skill's lower levels.
 /// </summary>
 /// <param name="level"></param>
 /// <returns>True if the given item's skill is a prerequisite of this one or if it is a lower level of the same skill.</returns>
 public bool IsDependentOf(ISkillLevel level) => new StaticSkillLevel(this).IsDependentOf(level);
Exemple #28
0
 /// <summary>
 /// Gets true if this skill level is, in any way, dependent of the provided skill level.
 /// Checks prerequisites but also same skill's lower levels.
 /// </summary>
 /// <param name="level"></param>
 /// <returns>True if the given item's skill is a prerequisite of this one or if it is a lower level of the same skill.</returns>
 public bool IsDependentOf(ISkillLevel level) => ((StaticSkillLevel)this).IsDependentOf(level);
Exemple #29
0
 /// <summary>
 /// Gets true if this skill level is, in any way, dependent of the provided skill level. Checks prerequisites but also same skill's lower levels.
 /// </summary>
 /// <param name="level"></param>
 /// <returns>True if the given item's skill is a prerequisite of this one or if it is a lower level of the same skill.</returns>
 public bool IsDependentOf(ISkillLevel level)
 {
     return((new StaticSkillLevel(this)).IsDependentOf(level));
 }
Exemple #30
0
 /// <summary>
 /// Gets true if this skill level is, in any way, dependent of the provided skill level.
 /// Checks prerequisites but also same skill's lower levels.
 /// </summary>
 /// <param name="level"></param>
 /// <returns>True if the given item's skill is a prerequisite of this one or if it is a lower level of the same skill.</returns>
 public bool IsDependentOf(ISkillLevel level) => ((StaticSkillLevel)this).IsDependentOf(level);
Exemple #31
0
 /// <summary>
 /// Constructor from an <see cref="ISkillLevel"/> object.
 /// </summary>
 /// <param name="level"></param>
 public StaticSkillLevel(ISkillLevel level)
     : this()
 {
     this.Skill = level.Skill;
     this.Level = level.Level;
 }