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