[gnome-games/wip/exalm/loading: 8/29] generic: Add GenericRunnerFactory



commit c43949f746c5576baf3a36c9969ba1c7a65daf8e
Author: Alexander Mikhaylenko <alexm gnome org>
Date:   Tue Nov 12 00:22:01 2019 +0500

    generic: Add GenericRunnerFactory

 src/generic/generic-runner-factory.vala | 25 +++++++++++++++++++++++++
 src/meson.build                         |  1 +
 2 files changed, 26 insertions(+)
---
diff --git a/src/generic/generic-runner-factory.vala b/src/generic/generic-runner-factory.vala
new file mode 100644
index 00000000..56a43ed5
--- /dev/null
+++ b/src/generic/generic-runner-factory.vala
@@ -0,0 +1,25 @@
+// This file is part of GNOME Games. License: GPL-3.0+.
+
+public class Games.GenericRunnerFactory : Object, RunnerFactory {
+       public delegate Runner? CreateRunner (Game game) throws Error;
+
+       private Platform[] platforms;
+       private CreateRunner callback;
+
+       public GenericRunnerFactory (owned CreateRunner callback) {
+               this.callback = (owned) callback;
+               platforms = {};
+       }
+
+       public void add_platform (Platform platform) {
+               platforms += platform;
+       }
+
+       public override Platform[] get_platforms () {
+               return platforms;
+       }
+
+       public Runner? create_runner (Game game) throws Error {
+               return callback (game);
+       }
+}
diff --git a/src/meson.build b/src/meson.build
index a7805a43..2b8def07 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -69,6 +69,7 @@ vala_sources = [
   'generic/generic-game.vala',
   'generic/generic-game-uri-adapter.vala',
   'generic/generic-platform.vala',
+  'generic/generic-runner-factory.vala',
   'generic/generic-title.vala',
   'generic/generic-uid.vala',
   'generic/generic-uri-game-factory.vala',


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