[gnome-games] nes: Provide support for FDS games



commit 23051752f0855afe6c3e52da0d2212e82d882cbc
Author: Radhika Dua <radhikadua1997 gmail com>
Date:   Fri Feb 10 10:35:15 2017 +0530

    nes: Provide support for FDS games
    
    This commit makes the plugin to list FDS games via the corresponding MIME type.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=778317

 plugins/nes/src/nes-plugin.vala |   41 +++++++++++++++++++++++++++++---------
 1 files changed, 31 insertions(+), 10 deletions(-)
---
diff --git a/plugins/nes/src/nes-plugin.vala b/plugins/nes/src/nes-plugin.vala
index 4b650fc..1e61bab 100644
--- a/plugins/nes/src/nes-plugin.vala
+++ b/plugins/nes/src/nes-plugin.vala
@@ -1,31 +1,52 @@
 // This file is part of GNOME Games. License: GPLv3
 
 private class Games.NesPlugin : Object, Plugin {
-       private const string FINGERPRINT_PREFIX = "nes";
-       private const string MIME_TYPE = "application/x-nes-rom";
+       private const string NES_FINGERPRINT_PREFIX = "nes";
+       private const string NES_MIME_TYPE = "application/x-nes-rom";
+
+       private const string FDS_FINGERPRINT_PREFIX = "fds";
+       private const string FDS_MIME_TYPE = "application/x-fds-disk";
+
        private const string MODULE_BASENAME = "libretro-nes.so";
        private const bool SUPPORTS_SNAPSHOTTING = true;
 
        public GameSource get_game_source () throws Error {
-               var game_uri_adapter = new GenericSyncGameUriAdapter (game_for_uri);
-               var factory = new GenericUriGameFactory (game_uri_adapter);
-               var query = new MimeTypeTrackerQuery (MIME_TYPE, factory);
+               var nes_game_uri_adapter = new GenericSyncGameUriAdapter (nes_game_for_uri);
+               var fds_game_uri_adapter = new GenericSyncGameUriAdapter (fds_game_for_uri);
+               var nes_factory = new GenericUriGameFactory (nes_game_uri_adapter);
+               var fds_factory = new GenericUriGameFactory (fds_game_uri_adapter);
+               var nes_query = new MimeTypeTrackerQuery (NES_MIME_TYPE, nes_factory);
+               var fds_query = new MimeTypeTrackerQuery (FDS_MIME_TYPE, fds_factory);
                var connection = Tracker.Sparql.Connection.@get ();
                var source = new TrackerGameSource (connection);
-               source.add_query (query);
+               source.add_query (nes_query);
+               source.add_query (fds_query);
 
                return source;
        }
 
-       private static Game game_for_uri (string uri) throws Error {
-               var uid = new FingerprintUid (uri, FINGERPRINT_PREFIX);
+       private static Game nes_game_for_uri (string uri) throws Error {
+               var uid = new FingerprintUid (uri, NES_FINGERPRINT_PREFIX);
+               var title = new FilenameTitle (uri);
+               var icon = new DummyIcon ();
+               var media = new GriloMedia (title, NES_MIME_TYPE);
+               var cover = new CompositeCover ({
+                       new LocalCover (uri),
+                       new GriloCover (media, uid)});
+               var runner = new RetroRunner (uri, uid, { NES_MIME_TYPE }, MODULE_BASENAME, 
SUPPORTS_SNAPSHOTTING);
+
+               return new GenericGame (title, icon, cover, runner);
+       }
+
+       private static Game fds_game_for_uri (string uri) throws Error {
+               var uid = new FingerprintUid (uri, FDS_FINGERPRINT_PREFIX);
                var title = new FilenameTitle (uri);
                var icon = new DummyIcon ();
-               var media = new GriloMedia (title, MIME_TYPE);
+               var media = new GriloMedia (title, FDS_MIME_TYPE);
                var cover = new CompositeCover ({
                        new LocalCover (uri),
                        new GriloCover (media, uid)});
-               var runner = new RetroRunner (uri, uid, { MIME_TYPE }, MODULE_BASENAME, 
SUPPORTS_SNAPSHOTTING);
+               var runner = new RetroRunner (uri, uid, { FDS_MIME_TYPE }, MODULE_BASENAME, 
SUPPORTS_SNAPSHOTTING);
 
                return new GenericGame (title, icon, cover, runner);
        }


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