public void saveThing(IPersistableWriter wr, Thing thing) { var kindId = (int)classify(thing); // thing header wr.Write(kindId); wr.Write(thing.uid); // thing data switch (thing) { case Capsule cap: { // write status wr.Write(cap.acquired); // write body data wr.writeBody(cap.body); // write other capsule info wr.Write(cap.energy); wr.Write(cap.firstAvailableAt); wr.Write(cap.despawnAt); wr.Write(cap.interactor?.uid ?? default); wr.Write(cap.creator?.uid ?? default); break; } case Tree tree: { // we don't store fruit refs wr.Write(tree.Transform.Position); wr.Write(tree.stage); wr.Write(tree.harvest); break; } } }
public static void Write(this IPersistableWriter self, string[] arr) { self.Write(arr.Length); for (var i = 0; i < arr.Length; i++) { self.Write(arr[i]); } }
public static void Write(this IPersistableWriter self, IPersistable[] arr) { self.Write(arr.Length); for (int i = 0; i < arr.Length; i++) { self.Write(arr[i]); } }
public static void writeBody(this IPersistableWriter w, KinBody body) { var bodyData = new BodyData(body); w.Write(bodyData.pos); w.Write(bodyData.velocity); w.Write(bodyData.angle); w.Write(bodyData.angularVelocity); }
void WritePrimitives(IPersistableWriter writer) { writer.Write(TestValues.aString); writer.Write(TestValues.aInt); writer.Write(TestValues.aUint); writer.Write(TestValues.aFloat); writer.Write(TestValues.aDouble); writer.Write(TestValues.aBool); }
void WriteComplex(IPersistableWriter writer) { writer.Write(TestValues.aNullableBool); writer.Write(TestValues.aIntList); writer.Write(TestValues.aFloatList); writer.Write(TestValues.aStringList); writer.Write(TestValues.aIntArray); writer.Write(TestValues.aFloatArray); writer.Write(TestValues.aStringArray); }
public static void Write(this IPersistableWriter self, List <int> list) { var cnt = list.Count; self.Write(cnt); for (var i = 0; i < cnt; i++) { self.Write(list[i]); } }
public static void Write(this IPersistableWriter self, bool?value) { bool hasValue = value.HasValue; self.Write(hasValue); if (hasValue) { self.Write(value.Value); } }
public void Save(string filename, IPersistable persistable) { string tmpFile = GetTmpFile(filename); using (IPersistableWriter writer = GetDataWriter(tmpFile)) { writer.Write(persistable); } File.Copy(tmpFile, Path.Combine(_persistentDataPath, filename), true); File.Delete(tmpFile); }
public static void writeWing(this IPersistableWriter w, Wing wing) { var wd = new WingData(wing); w.Write(wing.uid); w.Write(wd.name); w.Write((int)wd.wingClass); w.Write(wd.energy); w.writePersonality(wd.ply); w.Write(wd.armed); }
public static void Write(this IPersistableWriter self, List <float> list) { int cnt = list.Count; self.Write(cnt); for (int i = 0; i < cnt; i++) { self.Write(list[i]); } }
void IPersistable.Persist(IPersistableWriter writer) { if (!_isDirty) { return; } int cnt = _boolDict.Count; writer.Write(cnt); foreach (KeyValuePair <string, bool> kv in _boolDict) { writer.Write(kv.Key); writer.Write(kv.Value); } cnt = _intDict.Count; writer.Write(cnt); foreach (KeyValuePair <string, int> kv in _intDict) { writer.Write(kv.Key); writer.Write(kv.Value); } cnt = _floatDict.Count; writer.Write(cnt); foreach (KeyValuePair <string, float> kv in _floatDict) { writer.Write(kv.Key); writer.Write(kv.Value); } cnt = _stringDict.Count; writer.Write(cnt); foreach (KeyValuePair <string, string> kv in _stringDict) { writer.Write(kv.Key); writer.Write(kv.Value); } _isDirty = false; }
void IPersistable.Persist(IPersistableWriter writer) { if (!_isDirty) { return; } var cnt = _boolDict.Count; writer.Write(cnt); foreach (var kv in _boolDict) { writer.Write(kv.Key); writer.Write(kv.Value); } cnt = _intDict.Count; writer.Write(cnt); foreach (var kv in _intDict) { writer.Write(kv.Key); writer.Write(kv.Value); } cnt = _floatDict.Count; writer.Write(cnt); foreach (var kv in _floatDict) { writer.Write(kv.Key); writer.Write(kv.Value); } cnt = _stringDict.Count; writer.Write(cnt); foreach (var kv in _stringDict) { writer.Write(kv.Key); writer.Write(kv.Value); } _isDirty = false; }
public static void writePersonality(this IPersistableWriter w, BirdPersonality ply) { w.Write(ply.A); w.Write(ply.S); }
void IPersistable.Persist(IPersistableWriter writer) { writer.Write(strings); writer.Write(anInt); writer.Write(nullableBool); }
public void Persist(IPersistableWriter wr) { Global.log.info($"{nameof(PlayPersistable)}::persist called"); wr.Write(version); // save file version // save game time wr.Write(Time.TotalTime); // save map seed wr.Write(setup.state.mapgenSeed); // save player wr.writeWing(setup.state.player); wr.writeBody(setup.state.player.body); // save all other wings var wingsToSave = setup.state.scene.FindEntitiesWithTag(Constants.Tags.WING) .Where(x => x != setup.state.player.Entity) .ToList(); wr.Write(wingsToSave.Count); foreach (var wingNt in wingsToSave) { var wing = wingNt.GetComponent <Wing>(); wr.writeWing(wing); wr.writeBody(wing.body); // wr.writeWingMemory(wing.mind); } // save world things var thingsToSave = setup.state.scene.FindEntitiesWithTag(Constants.Tags.THING).ToList(); wr.Write(thingsToSave.Count); // sort so trees are before capsules var treeList = new List <Thing>(); var capList = new List <Thing>(); foreach (var thingNt in thingsToSave) { if (thingNt.HasComponent <Tree>()) { treeList.Add(thingNt.GetComponent <Tree>()); } if (thingNt.HasComponent <Capsule>()) { capList.Add(thingNt.GetComponent <Capsule>()); } } var saveThingList = new List <Thing>(); saveThingList.AddRange(treeList); saveThingList.AddRange(capList); var thingHelper = new ThingLoader(this); foreach (var thing in saveThingList) { // var kind = thingHelper.classify(thing); thingHelper.saveThing(wr, thing); } }
public static void writeWingMemory(this IPersistableWriter w, DuckMind mind) { throw new NotImplementedException(); }