public async Task <ISaveLocation> UpdateSaveLocation(ISaveLocation location) { var manifest = location.ToManifest(); var json = JsonConvert.SerializeObject(manifest, Formatting.Indented); await File.WriteAllTextAsync(Path.Combine(location.LocationRoot.FullName, ManifestFileName), json); return(location); }
public void SaveLocationSerialization_Test() { var location = new SaveLocation(Guid.NewGuid(), "sram", new DirectoryInfo(Path.GetTempPath()), Guid.NewGuid(), DateTimeOffset.Now); string serialized = JsonConvert.SerializeObject(location.ToManifest()); ISaveLocation deserialized = JsonConvert.DeserializeObject <SaveLocationManifest>(serialized).ToSaveLocation(); Assert.Equal(location.LocationGuid, deserialized.LocationGuid); }
public static SaveLocationManifest ToManifest(this ISaveLocation location) { return(new SaveLocationManifest() { LocationGuid = location.LocationGuid, Directory = location.LocationRoot.FullName, LastModified = location.LastModified, RecordGuid = location.RecordGuid, SaveFormat = location.SaveFormat, }); }
public override IEmulatorTask CreateTask(IGameRecord executingGame, ISaveLocation saveLocation, IList <IEmulatedController> controllerConfiguration, string profileContext = "default") { IConfigurationCollection <HiganRetroArchConfiguration> configuration = this.GenericConfigurationFactory.GetConfiguration(executingGame.RecordId, profileContext); var templates = controllerConfiguration.Select(c => this.ConfigurationFactory.GetInputMappings(c)).ToList(); var task = new EmulatorTask(executingGame) { GameSaveLocation = saveLocation, ControllerConfiguration = templates // todo: refactor out into extension method. .Select(t => (t.template as IInputTemplate, t.mapping)).ToList(), }; task.ProcessTaskRoot = new RetroArchTaskRoot(this.TaskRootProvider.GetTaskRoot(task)); configuration.Configuration.DirectoryConfiguration.SavefileDirectory = task.ProcessTaskRoot.SaveDirectory.FullName; configuration.Configuration.DirectoryConfiguration.SystemDirectory = task.ProcessTaskRoot.SystemDirectory.FullName; configuration.Configuration.DirectoryConfiguration.CoreOptionsPath = Path.Combine(task.ProcessTaskRoot.ConfigurationDirectory.FullName, "retroarch-core-options.cfg"); switch (configuration.Configuration.BsnesCoreConfig.PerformanceProfile) { case PerformanceProfile.Performance: task.AddPragma("retroarch_core", "bsnes_performance_libretro.dll"); break; case PerformanceProfile.Accuracy: task.AddPragma("retroarch_core", "bsnes_accuracy_libretro.dll"); break; case PerformanceProfile.Balanced: task.AddPragma("retroarch_core", "bsnes_balanced_libretro.dll"); break; } task.EmulatorConfiguration = configuration; return(task); }
public RetroArchTaskResult(IEmulatorTaskRoot taskRoot, ISaveLocation location) : base("retroarch") { this.TaskRoot = taskRoot; this.SaveLocation = location; }
/// <inheritdoc/> public abstract IEmulatorTask CreateTask(IGameRecord executingGame, ISaveLocation saveLocation, IList <IEmulatedController> controllerConfiguration, string profileContext = "default");