private SaveLoadMetadata LoadMetadata(ZipArchive archive) { var metaEntry = archive.GetEntry("meta.json") ?? throw new Exception("meta.json not found."); using (var reader = trwFactory.JsonReader(metaEntry.Open())) using (var context = saveLoadFactory.MetaReadContext(reader)) return(context.Read <SaveLoadMetadata>()); }
private T LoadConfig <T>() where T : class, IConfig, new() { var handlerContainer = serializationNecessities.GetTrwHandlerContainer(ConfigSerializationNecessitiesProvider.SerializationType); var options = new TrwSerializationOptions { ExplicitTypes = TrwSerializationExplicitTypes.Never }; using (var fileStream = fileStorage.FileSystem.OpenRead(GetFileName <T>())) using (var trwReader = trwFactory.JsonReader(fileStream)) using (var context = new TrwSerializationReadContext(trwReader, handlerContainer, null, options)) return(context.Read <T>()); }
public bool TryLoad(IReadOnlyFileSystem fileSystem, string path, out ISkybox skybox, out string[] imageFileRelativePaths, out ErrorInfo error) { dynamic mainFile; using (var reader = trwFactory.JsonReader(fileSystem.OpenRead(path))) mainFile = reader.ReadAsDynamic(); imageFileRelativePaths = new string[] { mainFile.Right, mainFile.Left, mainFile.Top, mainFile.Bottom, mainFile.Back, mainFile.Front }; var folderPath = Path.Combine(Path.GetDirectoryName(path)); var images = new IImage[6]; for (var i = 0; i < 6; i++) { var relPath = imageFileRelativePaths[i]; using (var stream = fileSystem.OpenRead(Path.Combine(folderPath, relPath))) if (!imageLoader.TryLoad(stream, out images[i], out error)) { skybox = null; return(false); } } var width = images[0].Size.Width; if (images.Any(x => x.Size != new IntSize2(width, width))) { error = new ErrorInfo("Skybox images are not of equal size"); skybox = null; return(false); } skybox = new Skybox(ResourceVolatility.Immutable, width, images); return(true); }