public static void LoadGame(String pathToFolder, NamelessGame game) { { Type iStorageInterfaceType = typeof(IStorage <>); var buffer = File.ReadAllBytes("objectdata.nrs"); var saveFile = FlatBufferSerializer.Default.Parse <NamelessRogueSaveFile>(buffer); saveFile.ComponentTypeToStorge.Clear(); saveFile.StoragesDictionary.Clear(); saveFile.FillInfrastructureCollections(); List <Entity> entities = new List <Entity>(); foreach (var entityStorage in saveFile.EntityStorageTable) { var entity = new Entity(new Guid(entityStorage.Id)); entities.Add(entity); } foreach (var typePair in saveFile.ComponentTypeToStorge) { if (typePair.Key == typeof(Entity) || typePair.Key == typeof(IEntity)) { continue; } var enumer = saveFile.StoragesDictionary[typePair.Value].GetEnumerator(); while (enumer.MoveNext()) { var storage = enumer.Current; Component component = (Component)typePair.Key.GetConstructor(Type.EmptyTypes).Invoke(null); storage.FillTo(component.CastToReflected(typePair.Key)); EntityInfrastructureManager.AddComponent(component.ParentEntityId, component); } } } { var buffer = File.ReadAllBytes("chunksmemory.nrs"); var saveFile = FlatBufferSerializer.Default.Parse <TimelineStorage>(buffer); TimeLine timeLine = new TimeLine(); saveFile.FillTo(timeLine); timeLine.CurrentTimelineLayer.Chunks.WorldBoard = timeLine.CurrentTimelineLayer; //TO DO: serialize properly timeLine.CurrentTimelineLayer.Chunks.WorldSettings = game.WorldSettings; foreach (var chunk in timeLine.CurrentTimelineLayer.Chunks.Chunks) { chunk.Value.ChunkContainer = timeLine.CurrentTimelineLayer.Chunks; } var entity = new Entity(timeLine.ParentEntityId); entity.AddComponent(timeLine); game.CameraEntity = game.GetEntityByComponentClass <ConsoleCamera>(); game.Commander = game.GetEntityByComponentClass <Commander>().GetComponentOfType <Commander>(); game.PlayerEntity = game.GetEntityByComponentClass <Player>(); game.TimelineEntity = entity; game.CursorEntity = game.GetEntityByComponentClass <Cursor>(); game.FollowedByCameraEntity = game.GetEntityByComponentClass <FollowedByCamera>(); } }