[gnome-games] gameinfo: Add GameinfoDiscIdInputCapabilities



commit df8d262fccb844884cc08c60425f00ff056142e9
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Tue Aug 30 15:22:33 2016 +0200

    gameinfo: Add GameinfoDiscIdInputCapabilities
    
    This will be used in the next commit to get controller informations from
    a Gameinfo doc.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=770192

 src/Makefile.am                                    |    1 +
 .../gameinfo-disc-id-input-capabilities.vala       |   35 ++++++++++++++++++++
 2 files changed, 36 insertions(+), 0 deletions(-)
---
diff --git a/src/Makefile.am b/src/Makefile.am
index 74ba471..b87745d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -63,6 +63,7 @@ gnome_games_SOURCES = \
        gameinfo/gameinfo-error.vala \
        gameinfo/gameinfo-disc-id-disc-title.vala \
        gameinfo/gameinfo-disc-id-game-title.vala \
+       gameinfo/gameinfo-disc-id-input-capabilities.vala \
        \
        gamepad/gamepad.vala \
        gamepad/gamepad-callbacks.vala \
diff --git a/src/gameinfo/gameinfo-disc-id-input-capabilities.vala 
b/src/gameinfo/gameinfo-disc-id-input-capabilities.vala
new file mode 100644
index 0000000..702f6d1
--- /dev/null
+++ b/src/gameinfo/gameinfo-disc-id-input-capabilities.vala
@@ -0,0 +1,35 @@
+// This file is part of GNOME Games. License: GPLv3
+
+public class Games.GameinfoDiscIdInputCapabilities : Object, InputCapabilities {
+       public bool default_allow_classic_gamepads { set; get; }
+       public bool default_allow_analog_gamepads { set; get; }
+
+       private GameinfoDoc gameinfo;
+       private string disc_id;
+       private string[] controllers;
+
+       public GameinfoDiscIdInputCapabilities (GameinfoDoc gameinfo, string disc_id) {
+               this.gameinfo = gameinfo;
+               this.disc_id = disc_id;
+       }
+
+       public bool get_allow_classic_gamepads () throws Error {
+               if (controllers == null)
+                       controllers = gameinfo.get_game_controllers_for_disc_id (disc_id);
+
+               if (controllers.length == 0)
+                       return default_allow_classic_gamepads;
+
+               return "classic-gamepad" in controllers;
+       }
+
+       public bool get_allow_analog_gamepads () throws Error {
+               if (controllers == null)
+                       controllers = gameinfo.get_game_controllers_for_disc_id (disc_id);
+
+               if (controllers.length == 0)
+                       return default_allow_analog_gamepads;
+
+               return "analog-gamepad" in controllers;
+       }
+}


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