Interactions avec le joueur
CHAPITRE 4
79
Il faut ensuite ajouter une seconde méthode pour récupérer un service ; elle sera également
statique et générique. Notez l’utilisation du mot-clé as, utile à la conversion de types
références.
public static T Get() where T : class
{
return game.Services.GetService(typeof(T)) as T;
}
Ci-dessous, le code complet de la classe.
static class ServiceHelper
{
static Game game;
public static Game Game
{
set { game = value; }
}
public static void Add(T service) where T : class
{
game.Services.AddService(typeof(T), service);
}
public static T Get() where T : class
{
return game.Services.GetService(typeof(T)) as T;
}
}
Vous devez maintenant modifier le constructeur de la classe KeyboardService pour qu’il
passe par la classe ServiceHelper, plutôt qu’ajouter directement le service à la collection
de l’objet Game.
public KeyboardService(Game game)
: base(game)
{
ServiceHelper.Add(this);
}
Pour rendre cette classe utilitaire opérationnelle, il vous reste à définir la référence vers
votre classe Game.
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
ServiceHelper.Game = this;
Components.Add(new KeyboardService(this));
}
=Labat FM.book Page 79 Vendredi, 19. juin 2009 4:01 16
CHAPITRE 4
79
Il faut ensuite ajouter une seconde méthode pour récupérer un service ; elle sera également
statique et générique. Notez l’utilisation du mot-clé as, utile à la conversion de types
références.
public static T Get
{
return game.Services.GetService(typeof(T)) as T;
}
Ci-dessous, le code complet de la classe.
static class ServiceHelper
{
static Game game;
public static Game Game
{
set { game = value; }
}
public static void Add
{
game.Services.AddService(typeof(T), service);
}
public static T Get
{
return game.Services.GetService(typeof(T)) as T;
}
}
Vous devez maintenant modifier le constructeur de la classe KeyboardService pour qu’il
passe par la classe ServiceHelper, plutôt qu’ajouter directement le service à la collection
de l’objet Game.
public KeyboardService(Game game)
: base(game)
{
ServiceHelper.Add
}
Pour rendre cette classe utilitaire opérationnelle, il vous reste à définir la référence vers
votre classe Game.
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
ServiceHelper.Game = this;
Components.Add(new KeyboardService(this));
}
=Labat FM.book Page 79 Vendredi, 19. juin 2009 4:01 16
