[gnome-games/wip/exalm/loading: 4/29] retro: Add RetroRunnerFactory



commit 61fe1ba9e0644ff2781182b460056d348b989fc2
Author: Alexander Mikhaylenko <alexm gnome org>
Date:   Mon Nov 11 23:00:34 2019 +0500

    retro: Add RetroRunnerFactory
    
    A simple factory meant for simple types and most plugins.

 src/meson.build                     |  1 +
 src/retro/retro-runner-factory.vala | 26 ++++++++++++++++++++++++++
 2 files changed, 27 insertions(+)
---
diff --git a/src/meson.build b/src/meson.build
index 1de009a5..a7805a43 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -88,6 +88,7 @@ vala_sources = [
   'retro/retro-platform.vala',
   'retro/retro-runner.vala',
   'retro/retro-runner-builder.vala',
+  'retro/retro-runner-factory.vala',
   'retro/retro-simple-game-uri-adapter.vala',
   'retro/retro-simple-type.vala',
   'retro/retro-simple-types.vala',
diff --git a/src/retro/retro-runner-factory.vala b/src/retro/retro-runner-factory.vala
new file mode 100644
index 00000000..ef8300f3
--- /dev/null
+++ b/src/retro/retro-runner-factory.vala
@@ -0,0 +1,26 @@
+// This file is part of GNOME Games. License: GPL-3.0+.
+
+public class Games.RetroRunnerFactory : Object, RunnerFactory {
+       private RetroPlatform platform;
+
+       public RetroRunnerFactory (RetroPlatform platform) {
+               this.platform = platform;
+       }
+
+       public override Platform[] get_platforms () {
+               return { platform };
+       }
+
+       public Runner? create_runner (Game game) throws Error {
+               var core_source = new RetroCoreSource (platform);
+
+               var builder = new RetroRunnerBuilder ();
+               builder.core_source = core_source;
+               builder.uri = game.get_uri ();
+               builder.uid = game.get_uid ();
+               builder.title = game.name;
+               var runner = builder.to_runner ();
+
+               return runner;
+       }
+}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]