J'essaie d'écrire une SpriteManagerclasse en XNA, mais j'ai besoin d'accéder aux Gamevariables. Par exemple, la Game.Contentpropriété serait très utile pour charger des textures et Game.GraphicsDevice.Viewportserait utile pour obtenir la taille de la fenêtre.
Pour l'instant, j'ai la classe suivante:
public MainGame : DrawableGameComponent
{
public SpriteManager<Enemy> EnemyManager { get; get; }
public SpriteManager<Powerup> PowerupManager { get; set; }
...
}
Je peux penser à trois façons d'accéder à ces variables dans la SpriteManagerclasse:
Faire dériver ma classe de gestionnaire de sprites
GameComponent. Ce serait idéal, sauf que mon gestionnaire de sprites est utilisé dansMainGame, qui est unGameComponent.Utilisez
((Game) Game1)pour accéder aux variables. Cependant, faire ce genre de distribution est moche et rompt l'encapsulation.Transmettez tout de
MainGame. Par exemple,EnemyManagerdoit charger un type d'ennemi aléatoire chaque fois qu'il engendre un ennemi, donc au lieu de charger les texturesMainGame, passezEnemyManagerlaGame.Contentpropriété et laissez-la gérer le chargement de texture. Cependant, je ne sais pas si c'est la meilleure façon de gérer la situation. Je ne peux pas placer mon doigt dessus, mais cela semble juste «faux» d'une certaine manière.
Je pourrais utiliser quelques conseils sur la meilleure façon d'y parvenir.