//TODO Once finished use flatbuffer to save player game data public void SaveProfileToFlat(PlayerProfileModel prof) { float start = Time.realtimeSinceStartup; List <Offset <CharacterModelFlat> > charList = new List <Offset <CharacterModelFlat> >(); FlatBufferBuilder fbb = new FlatBufferBuilder(1); StringOffset item = fbb.CreateString(prof.itemString); foreach (CharacterModel model in prof.characters) { charList.Add(AddCharacterToFlat(fbb, model)); } VectorOffset charVector = fbb.CreateVectorOfTables <CharacterModelFlat>(charList.ToArray()); PlayerProfileFlat.StartPlayerProfileFlat(fbb); PlayerProfileFlat.AddGold(fbb, prof.Gold); PlayerProfileFlat.AddItems(fbb, item); PlayerProfileFlat.AddCharacters(fbb, charVector); Offset <PlayerProfileFlat> offset = PlayerProfileFlat.EndPlayerProfileFlat(fbb); PlayerProfileFlat.FinishPlayerProfileFlatBuffer(fbb, offset); MemoryStream ms = new MemoryStream(fbb.DataBuffer.Data, fbb.DataBuffer.Position, fbb.Offset); File.WriteAllBytes(XmlSaver.PersistentDataPath() + "/SAVEDATA", ms.ToArray()); Debug.Log("Flat Saving time " + (Time.realtimeSinceStartup - start)); }
public void LoadFlatProfile() {//TODO Finish this in final version, convert to useable ProfileManager float start = Time.realtimeSinceStartup; if (!File.Exists(XmlSaver.PersistentDataPath() + "/SAVEDATA")) { return; } ByteBuffer bb = new ByteBuffer(File.ReadAllBytes(XmlSaver.PersistentDataPath() + "/SAVEDATA")); if (!PlayerProfileFlat.PlayerProfileFlatBufferHasIdentifier(bb)) { return; } PlayerProfileFlat flat = PlayerProfileFlat.GetRootAsPlayerProfileFlat(bb); Debug.Log("Flat Loading time " + (Time.realtimeSinceStartup - start) + " " + flat.Characters(0).Value.Name); }