Estoy tratando de escribir una SpriteManager
clase en XNA, pero necesito acceso a las Game
variables. Por ejemplo, la Game.Content
propiedad sería muy útil para cargar texturas y Game.GraphicsDevice.Viewport
sería útil para obtener el tamaño de la ventana.
Por ahora, tengo la siguiente clase:
public MainGame : DrawableGameComponent
{
public SpriteManager<Enemy> EnemyManager { get; get; }
public SpriteManager<Powerup> PowerupManager { get; set; }
...
}
Se me ocurren tres formas de acceder a estas variables en la SpriteManager
clase:
Hacer que mi clase de administrador de sprites se derive de
GameComponent
. Esto sería ideal, excepto que se usa mi administrador de spritesMainGame
, que es aGameComponent
.Use
((Game) Game1)
para acceder a las variables. Sin embargo, hacer este tipo de reparto es feo y rompe la encapsulación.Pase todo de abajo
MainGame
. Por ejemplo,EnemyManager
necesita cargar un tipo de enemigo aleatorio cada vez que genera un enemigo, así que en lugar de cargar las texturasMainGame
, pasaEnemyManager
laGame.Content
propiedad y deja que maneje la carga de texturas. Sin embargo, no estoy seguro de si esta es la mejor manera de manejar la situación. No puedo poner mi dedo sobre él, pero parece "incorrecto" de alguna manera.
Podría usar algunos consejos sobre la mejor manera de lograr esto.