J'essaie d'écrire une SpriteManager
classe en XNA, mais j'ai besoin d'accéder aux Game
variables. Par exemple, la Game.Content
propriété serait très utile pour charger des textures et Game.GraphicsDevice.Viewport
serait 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 SpriteManager
classe:
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,EnemyManager
doit charger un type d'ennemi aléatoire chaque fois qu'il engendre un ennemi, donc au lieu de charger les texturesMainGame
, passezEnemyManager
laGame.Content
proprié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.