/// <summary> /// Gets a group by its name /// </summary> /// <param name="name"></param> /// <returns></returns> public static StaticSkillGroup GetGroupByName(string name) { StaticSkillGroup group = null; m_allGroupsByName.TryGetValue(name, out group); return(group); }
/// <summary> /// Initialize static skills /// </summary> internal static void Load() { SkillsDatafile datafile = Util.DeserializeDatafile <SkillsDatafile>(DatafileConstants.SkillsDatafile); // Fetch deserialized data m_arrayIndicesCount = 0; var prereqs = new List <SerializableSkillPrerequisite[]>(); foreach (var srcGroup in datafile.Groups) { var group = new StaticSkillGroup(srcGroup, ref m_arrayIndicesCount); m_allGroupsByName[group.Name] = group; // Store skills foreach (var skill in group) { m_skillsById[skill.ID] = skill; m_skillsByName[skill.Name] = skill; } // Store prereqs foreach (var serialSkill in srcGroup.Skills) { prereqs.Add(serialSkill.Prereqs); } } // Complete initialization m_skills = new StaticSkill[m_arrayIndicesCount]; foreach (var ss in m_skillsById.Values) { ss.CompleteInitialization(prereqs[ss.ArrayIndex]); m_skills[ss.ArrayIndex] = ss; } }
/// <summary> /// Gets a group by its name /// </summary> /// <param name="name"></param> /// <returns></returns> public static StaticSkillGroup GetGroupByID(int groupId) { StaticSkillGroup group = null; m_allGroupsById.TryGetValue(groupId, out group); return(group); }
/// <summary> /// Initialize static skills. /// </summary> internal static void Load() { SkillsDatafile datafile = Util.DeserializeDatafile <SkillsDatafile>(DatafileConstants.SkillsDatafile, Util.LoadXslt(Properties.Resources.DatafilesXSLT)); // Fetch deserialized data s_arrayIndicesCount = 0; List <Collection <SerializableSkillPrerequisite> > prereqs = new List <Collection <SerializableSkillPrerequisite> >(); foreach (SerializableSkillGroup srcGroup in datafile.SkillGroups) { StaticSkillGroup group = new StaticSkillGroup(srcGroup, ref s_arrayIndicesCount); s_skillGroupsByID[@group.ID] = @group; // Store skills foreach (StaticSkill skill in @group) { s_skillsByID[skill.ID] = skill; s_skillsByName[skill.Name] = skill; } // Store prereqs prereqs.AddRange(srcGroup.Skills.Select(serialSkill => serialSkill.SkillPrerequisites)); } // Complete initialization s_skills = new StaticSkill[s_arrayIndicesCount]; foreach (StaticSkill staticSkill in s_skillsByID.Values) { staticSkill.CompleteInitialization(prereqs[staticSkill.ArrayIndex]); s_skills[staticSkill.ArrayIndex] = staticSkill; } GlobalDatafileCollection.OnDatafileLoaded(); }
/// <summary> /// Deserialization constructor from datafiles. /// </summary> /// <param name="group"></param> /// <param name="src"></param> /// <param name="arrayIndex"></param> internal StaticSkill(StaticSkillGroup group, SerializableSkill src, int arrayIndex) { m_id = src.ID; m_cost = src.Cost; m_rank = src.Rank; m_public = src.Public; m_name = src.Name; m_description = src.Description; m_descriptionNL = null; m_primaryAttribute = src.PrimaryAttribute; m_secondaryAttribute = src.SecondaryAttribute; m_trainableOnTrialAccount = src.CanTrainOnTrial; m_arrayIndex = arrayIndex; m_group = group; }
/// <summary> /// Deserialization constructor from datafiles. /// </summary> /// <param name="group"></param> /// <param name="src"></param> /// <param name="arrayIndex"></param> internal StaticSkill(StaticSkillGroup group, SerializableSkill src, int arrayIndex) { ID = src.ID; Cost = src.Cost; Rank = src.Rank; IsPublic = src.Public; Name = src.Name; Description = src.Description; PrimaryAttribute = src.PrimaryAttribute; SecondaryAttribute = src.SecondaryAttribute; ArrayIndex = arrayIndex; Group = group; Prerequisites = new Collection <StaticSkillLevel>(); FormattedCost = Cost.ToNumericString(0); AlphaLimit = src.AlphaLimit; }
/// <summary> /// Deserialization constructor from datafiles. /// </summary> /// <param name="group"></param> /// <param name="src"></param> /// <param name="arrayIndex"></param> internal StaticSkill(StaticSkillGroup group, SerializableSkill src, int arrayIndex) { m_id = src.ID; m_cost = src.Cost; m_rank = src.Rank; m_public = src.Public; m_name = src.Name; m_description = src.Description; m_descriptionNL = null; m_primaryAttribute = src.PrimaryAttribute; m_secondaryAttribute = src.SecondaryAttribute; m_trainableOnTrialAccount = src.CanTrainOnTrial; m_arrayIndex = arrayIndex; m_group = group; switch (m_name) { case "Analytical Mind": m_bonusAttribute = EveAttribute.Intelligence; m_learningClass = LearningClass.LowerTierAttribute; break; case "Logic": m_bonusAttribute = EveAttribute.Intelligence; m_learningClass = LearningClass.UpperTierAttribute; break; case "Empathy": m_bonusAttribute = EveAttribute.Charisma; m_learningClass = LearningClass.LowerTierAttribute; break; case "Presence": m_bonusAttribute = EveAttribute.Charisma; m_learningClass = LearningClass.UpperTierAttribute; break; case "Instant Recall": m_bonusAttribute = EveAttribute.Memory; m_learningClass = LearningClass.LowerTierAttribute; break; case "Eidetic Memory": m_bonusAttribute = EveAttribute.Memory; m_learningClass = LearningClass.UpperTierAttribute; break; case "Iron Will": m_bonusAttribute = EveAttribute.Willpower; m_learningClass = LearningClass.LowerTierAttribute; break; case "Focus": m_bonusAttribute = EveAttribute.Willpower; m_learningClass = LearningClass.UpperTierAttribute; break; case "Spatial Awareness": m_bonusAttribute = EveAttribute.Perception; m_learningClass = LearningClass.LowerTierAttribute; break; case "Clarity": m_bonusAttribute = EveAttribute.Perception; m_learningClass = LearningClass.UpperTierAttribute; break; case "Learning": m_bonusAttribute = EveAttribute.None; m_learningClass = LearningClass.Learning; break; default: m_bonusAttribute = EveAttribute.None; m_learningClass = LearningClass.None; break; } }