/// <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> /// 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> /// Generate the skills datafile. /// </summary> internal static void GenerateDatafile() { Stopwatch stopwatch = Stopwatch.StartNew(); Util.ResetCounters(); Console.WriteLine(); Console.Write(@"Generating skills datafile... "); // Export skill groups List <SerializableSkillGroup> listOfSkillGroups = new List <SerializableSkillGroup>(); foreach (InvGroups group in Database.InvGroupsTable.Where( x => x.CategoryID == DBConstants.SkillCategoryID && x.ID != DBConstants.FakeSkillsGroupID).OrderBy(x => x.Name)) { SerializableSkillGroup skillGroup = new SerializableSkillGroup { ID = group.ID, Name = group.Name, }; // Add skills in skill group skillGroup.Skills.AddRange(ExportSkillsInGroup(group).OrderBy(x => x.Name)); // Add skill group listOfSkillGroups.Add(skillGroup); } // Serialize SkillsDatafile datafile = new SkillsDatafile(); datafile.SkillGroups.AddRange(listOfSkillGroups); Util.DisplayEndTime(stopwatch); Util.SerializeXml(datafile, DatafileConstants.SkillsDatafile); }