Ejemplo n.º 1
0
            public static DataStore Load(byte[] buffer)
            {
                DataStore dataStore = new DataStore();

                if (buffer != null && buffer.Length >= 12)
                {
                    // This will be disposed when calling DataStore.Close()
                    BinaryReader reader = new BinaryReader(new MemoryStream(buffer));
                    dataStore.reader = reader;

                    dataStore.BeginUnloadTime = new DateTime(reader.ReadInt64());
                    int count = reader.ReadInt32();
                    for (int i = 0; i < count; i++)
                    {
                        string typeName        = reader.ReadString();
                        long   itemStartOffset = reader.ReadInt64();
                        long   itemEndOffset   = reader.ReadInt64();

                        DataItem.Info info = new DataItem.Info();
                        info.StartOffset = itemStartOffset;
                        info.EndOffset   = itemEndOffset;
                        dataStore.values.Add(typeName, info);

                        reader.BaseStream.Position = itemEndOffset;
                    }
                }

                return(dataStore);
            }
Ejemplo n.º 2
0
            public void Add <T>(T value) where T : DataItem
            {
                string typeName = typeof(T).AssemblyQualifiedName;

                if (string.IsNullOrEmpty(typeName))
                {
                    return;
                }

                try
                {
                    DataItem.Info info = new DataItem.Info();
                    info.Data  = value;
                    value.info = info;

                    value.DataStore = this;

                    values.Add(typeName, info);
                }
                catch (ArgumentException)
                {
                    FMessage.Log(ELogVerbosity.Error, "HotReload item with the same type has already been added. Type: " + typeof(T).FullName);
                }
            }