Beispiel #1
0
 /// <summary>
 /// Imports and updates from the provided deserialization object
 /// </summary>
 /// <param name="src"></param>
 internal void Import(SerializableCharacterSkill src, bool fromCCP)
 {
     m_owned = src.OwnsBook;
     m_known = (fromCCP | src.IsKnown);
     m_currentSkillPoints = src.Skillpoints;
     m_lastConfirmedLvl   = src.Level;
     m_level = src.Level;
 }
Beispiel #2
0
 /// <summary>
 /// Imports and updates from the provided deserialization object
 /// </summary>
 /// <param name="src"></param>
 /// <param name="fromCCP"></param>
 internal void Import(SerializableCharacterSkill src, bool fromCCP)
 {
     m_owned          = src.OwnsBook;
     m_known          = fromCCP | src.IsKnown;
     SkillPoints      = src.Skillpoints;
     LastConfirmedLvl = src.Level;
     m_level          = Math.Min(s_maxLevel, src.Level);
 }
Beispiel #3
0
 /// <summary>
 /// Merges the characters skills with the plan entries.
 /// </summary>
 public void Merge(SerializableCharacterSkill skill)
 {
     foreach (PlanEntry entry in Items.Where(entry => entry.Skill.ID == skill.ID))
     {
         skill.Level       = entry.Level;
         skill.Skillpoints = entry.Skill.GetPointsRequiredForLevel(entry.Level);
         skill.IsKnown     = true;
     }
 }
Beispiel #4
0
 /// <summary>
 /// Merges the characters skills with the plan entries
 /// </summary>
 public SerializableCharacterSkill Merge(SerializableCharacterSkill skill)
 {
     foreach (PlanEntry entry in m_items)
     {
         if (entry.Skill.ID == skill.ID)
         {
             skill.Level       = entry.Level;
             skill.Skillpoints = entry.Skill.GetPointsRequiredForLevel(entry.Level);
         }
     }
     return(skill);
 }
Beispiel #5
0
        /// <summary>
        /// Exports the skill to a serialization object
        /// </summary>
        /// <returns></returns>
        internal SerializableCharacterSkill Export()
        {
            var dest = new SerializableCharacterSkill();

            dest.ID          = m_staticData.ID;
            dest.Level       = m_skillLevel;
            dest.Skillpoints = m_currentSkillPoints;
            dest.OwnsBook    = m_owned;
            dest.IsKnown     = m_known;

            return(dest);
        }
Beispiel #6
0
        /// <summary>
        /// Exports the skill to a serialization object
        /// </summary>
        /// <returns></returns>
        internal SerializableCharacterSkill Export()
        {
            SerializableCharacterSkill dest = new SerializableCharacterSkill
            {
                ID          = StaticData.ID,
                Name        = StaticData.Name,
                Level       = m_level,
                Skillpoints = m_currentSkillPoints,
                OwnsBook    = IsOwned,
                IsKnown     = m_known
            };

            return(dest);
        }
Beispiel #7
0
        /// <summary>
        /// Adds the skill.
        /// </summary>
        /// <param name="plan">The plan.</param>
        /// <param name="outGroup">The out group.</param>
        /// <param name="skill">The skill.</param>
        private static void AddSkill(Plan plan, OutputSkillGroup outGroup, Skill skill)
        {
            SerializableCharacterSkill mergedSkill = GetMergedSkill(plan, skill);

            outGroup.Skills.Add(new OutputSkill
            {
                Name           = mergedSkill.Name,
                Rank           = skill.Rank,
                Level          = mergedSkill.Level,
                SkillPoints    = FormattableString.Invariant($"{mergedSkill.Skillpoints:N0}"),
                RomanLevel     = Skill.GetRomanFromInt(mergedSkill.Level),
                MaxSkillPoints = FormattableString.Invariant($"{skill.StaticData.GetPointsRequiredForLevel(5):N0}")
            });
        }
Beispiel #8
0
        /// <summary>
        /// Gets the skills for each race.
        /// </summary>
        /// <returns></returns>
        private List <SerializableCharacterSkill> GetSkillsForRace()
        {
            var skills         = new List <SerializableCharacterSkill>();
            var startingSkills = new Dictionary <int, int>();

            switch (m_race)
            {
            case Race.Amarr:
                startingSkills = s_allRaceSkills.Concat(s_amarrRaceSkills).ToDictionary(x => x.Key, x => x.Value);
                break;

            case Race.Caldari:
                startingSkills = s_allRaceSkills.Concat(s_caldariRaceSkills).ToDictionary(x => x.Key, x => x.Value);
                break;

            case Race.Gallente:
                startingSkills = s_allRaceSkills.Concat(s_gallenteRaceSkills).ToDictionary(x => x.Key, x => x.Value);
                break;

            case Race.Minmatar:
                startingSkills = s_allRaceSkills.Concat(s_minmatarRaceSkills).ToDictionary(x => x.Key, x => x.Value);
                break;
            }

            foreach (var raceSkill in startingSkills)
            {
                var staticSkill = StaticSkills.GetSkillById(raceSkill.Key);
                if (staticSkill == null)
                {
                    continue;
                }

                var skill = new SerializableCharacterSkill()
                {
                    ID          = raceSkill.Key,
                    Level       = raceSkill.Value,
                    Name        = StaticSkills.GetSkillById(raceSkill.Key).Name,
                    Skillpoints = StaticSkills.GetSkillById(raceSkill.Key).GetPointsRequiredForLevel(raceSkill.Value),
                    IsKnown     = true,
                    OwnsBook    = false,
                };

                skills.Add(skill);
            }

            return(skills);
        }
Beispiel #9
0
        /// <summary>
        /// Gets the skill properties of a merged skill with a plan entry, if one is provided.
        /// If no plan is provided, the skill properties are returned unmodified.
        /// </summary>
        /// <param name="plan"></param>
        /// <param name="skill"></param>
        /// <returns>The skill properties after the merge</returns>
        private static SerializableCharacterSkill GetMergedSkill(Plan plan, Skill skill)
        {
            SerializableCharacterSkill mergedSkill = new SerializableCharacterSkill
            {
                ID          = skill.ID,
                Name        = skill.Name,
                IsKnown     = skill.IsKnown,
                OwnsBook    = skill.IsOwned,
                Level       = skill.Level,
                Skillpoints = skill.SkillPoints
            };


            plan?.Merge(mergedSkill);

            return(mergedSkill);
        }
Beispiel #10
0
        /// <summary>
        /// Gets the skill properties of a merged skill with a plan entry, if one is provided.
        /// If no plan is provided, the skill properties are returned unmodified.
        /// </summary>
        /// <param name="plan"></param>
        /// <param name="skill"></param>
        /// <returns>The skill properties after the merge</returns>
        private static SerializableCharacterSkill GetMergedSkill(Plan plan, Skill skill)
        {
            var mergedSkill = new SerializableCharacterSkill();

            mergedSkill.ID          = skill.ID;
            mergedSkill.Name        = skill.Name;
            mergedSkill.IsKnown     = skill.IsKnown;
            mergedSkill.OwnsBook    = skill.IsOwned;
            mergedSkill.Level       = skill.Level;
            mergedSkill.Skillpoints = skill.SkillPoints;

            if (plan != null)
            {
                plan.Merge(mergedSkill);
            }

            return(mergedSkill);
        }
Beispiel #11
0
        private List <SerializableCharacterSkill> CreateSerializableCharacterSkillList()
        {
            var ccpSkills = new List <SerializableCharacterSkill>();

            foreach (var group in SkillGroups)
            {
                foreach (var skill in group.Skills)
                {
                    var ccpSkill = new SerializableCharacterSkill();
                    ccpSkill.ID          = skill.Id;
                    ccpSkill.IsKnown     = true;
                    ccpSkill.Level       = skill.Level;
                    ccpSkill.OwnsBook    = true;
                    ccpSkill.Skillpoints = skill.SkillPoints;
                    ccpSkills.Add(ccpSkill);
                }
            }

            return(ccpSkills);
        }
Beispiel #12
0
        /// <summary>
        /// Adds the skills.
        /// </summary>
        /// <param name="character">The character.</param>
        /// <param name="plan">The plan.</param>
        /// <param name="builder">The builder.</param>
        /// <param name="skill">The skill.</param>
        private static void AddSkills(Character character, Plan plan, StringBuilder builder, Skill skill)
        {
            SerializableCharacterSkill mergedSkill = GetMergedSkill(plan, skill);

            string skillPointsText      = FormattableString.Invariant($"{mergedSkill.Skillpoints:N0}");
            string pointToLevelFiveText = FormattableString.Invariant($"{skill.StaticData.GetPointsRequiredForLevel(5):N0}");
            string skillDesc            = $"{skill} ({skill.Rank})";

            builder.AppendLine($"  {skillDesc.PadRight(45)} " +
                               $"L{mergedSkill.Level} ".PadLeft(5) +
                               $"{skillPointsText}/{pointToLevelFiveText} Points");

            // If the skill is in training...
            if (!skill.IsTraining)
            {
                return;
            }

            string levelText           = Skill.GetRomanFromInt(character.CurrentlyTrainingSkill.Level);
            string adjustedEndTimeText = character.CurrentlyTrainingSkill.EndTime.DateTimeToTimeString();

            builder.AppendLine($":  (Currently training to level {levelText}, completes {adjustedEndTimeText} UTC)");
        }