public bool saveSkill(string skillPath, bool xml = true) { FileStream fs = null; try { if (xml) { XmlPack pack = new XmlPack(); pack.skill = new List <GameSkill>(); pack.skill.AddRange(skills.Values); AraleSerizlize.saveXml(pack, skillPath); } else { fs = new FileStream(skillPath, FileMode.Create); BinaryWriter w = new BinaryWriter(fs); w.Write(new byte[] { 0x73, 0x6b, 0x69, 0x6c, 0x6c }); w.Write(ver); AraleSerizlize.write <GameSkill>(skills, w); fs.Close(); } return(true); } catch (System.Exception e) { Log.e(e.Message, Log.Tag.Skill, e); if (fs != null) { fs.Close(); } return(false); } }
bool loadSkills(byte[] buff) { try { if (!isSkillFile(buff)) { throw new System.Exception("not skill file"); } using (MemoryStream fs = new MemoryStream(buff)) { fs.Seek(5, SeekOrigin.Begin); BinaryReader r = new BinaryReader(fs); int v = r.ReadInt16(); //新版本应对老代码兼容,根据版本使用对应的读取序列化 if (v > ver) { throw new System.Exception("version error!v=" + v); } AraleSerizlize.read <GameSkill>(skills, r); } return(true); } catch (System.Exception e) { Log.e(e.Message, Log.Tag.Skill, e); return(false); } }
public override void read(BinaryReader r) { id = r.ReadInt32(); name = r.ReadString(); anim = r.ReadString(); state = r.ReadInt32(); actions = AraleSerizlize.read <SkillAction>(r); }
public override void write(BinaryWriter w) { w.Write(time); w.Write(loopInterval); w.Write(loopTimes); w.Write(state); w.Write(mask); AraleSerizlize.write <SkillNode>(nodes, w); }
public override void write(BinaryWriter w) { w.Write(id); w.Write(name); w.Write(anim); w.Write(state); actions.Sort(delegate(SkillAction x, SkillAction y) { return(x.time.CompareTo(y.time)); }); AraleSerizlize.write <SkillAction>(actions, w); }
bool loadSkills(string ctx) { try { XmlPack pack = AraleSerizlize.fromXml(typeof(XmlPack), ctx) as XmlPack; for (int i = 0; i < pack.skill.Count; ++i) { skills[pack.skill[i].id] = pack.skill[i]; } return(true); } catch (System.Exception e) { Log.e(e.Message, Log.Tag.Skill, e); return(false); } }