Exemple #1
0
        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);
        }
Exemple #2
0
        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;
 }
Exemple #6
0
 /// <inheritdoc/>
 public abstract IEmulatorTask CreateTask(IGameRecord executingGame,
                                          ISaveLocation saveLocation, IList <IEmulatedController> controllerConfiguration,
                                          string profileContext = "default");