//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));
    }
Exemplo n.º 2
0
 public static Offset <PlayerProfileFlat> CreatePlayerProfileFlat(FlatBufferBuilder builder,
                                                                  int gold = 0,
                                                                  StringOffset itemsOffset      = default(StringOffset),
                                                                  VectorOffset charactersOffset = default(VectorOffset))
 {
     builder.StartObject(3);
     PlayerProfileFlat.AddCharacters(builder, charactersOffset);
     PlayerProfileFlat.AddItems(builder, itemsOffset);
     PlayerProfileFlat.AddGold(builder, gold);
     return(PlayerProfileFlat.EndPlayerProfileFlat(builder));
 }
    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);
    }
Exemplo n.º 4
0
 public static PlayerProfileFlat GetRootAsPlayerProfileFlat(ByteBuffer _bb, PlayerProfileFlat obj)
 {
     return(obj.__assign(_bb.GetInt(_bb.Position) + _bb.Position, _bb));
 }