public static void Save(string path) { string idx = Path.Combine(path, "skills.idx"); string mul = Path.Combine(path, "skills.mul"); using (FileStream fsSkillsIndex = new FileStream(idx, FileMode.Create, FileAccess.Write, FileShare.Write), fsSkillsMul = new FileStream(mul, FileMode.Create, FileAccess.Write, FileShare.Write)) { using (BinaryWriter binSkillsIndex = new BinaryWriter(fsSkillsIndex), binSkillsMul = new BinaryWriter(fsSkillsMul)) { for (int i = 0; i < _fileIndex.Index.Length; ++i) { if (SkillsByIndex.TryGetValue(i, out SkillInfo skill)) { binSkillsIndex.Write((int)fsSkillsMul.Position); //lookup int length = (int)fsSkillsMul.Position; binSkillsMul.Write(skill.IsAction); byte[] namebytes = Encoding.Default.GetBytes(skill.Name); binSkillsMul.Write(namebytes); binSkillsMul.Write((byte)0); //nullterminated length = (int)fsSkillsMul.Position - length; binSkillsIndex.Write(length); binSkillsIndex.Write(skill.Extra); } else { binSkillsIndex.Write((int)-1); // lookup binSkillsIndex.Write((int)0); // length binSkillsIndex.Write((int)0); // extra } } } } }
public static string GetSkillDisplayName(int index) { if (SkillsByIndex.TryGetValue(index, out SkillInfo skill)) { return(skill.DisplayName); } return(string.Empty); }