Estou tentando escrever uma SpriteManagerclasse no XNA, mas preciso acessar as Gamevariáveis. Por exemplo, a Game.Contentpropriedade seria muito útil para carregar texturas e Game.GraphicsDevice.Viewportpara obter o tamanho da janela.
Por enquanto, tenho a seguinte classe:
public MainGame : DrawableGameComponent
{
public SpriteManager<Enemy> EnemyManager { get; get; }
public SpriteManager<Powerup> PowerupManager { get; set; }
...
}
Eu posso pensar em três maneiras de obter acesso a essas variáveis na SpriteManagerclasse:
Faça minha classe de gerente de sprite derivar
GameComponent. Isso seria ideal, exceto que meu gerente de sprite é usadoMainGame, que é aGameComponent.Use
((Game) Game1)para acessar as variáveis. No entanto, fazer esse tipo de elenco é feio e quebra o encapsulamento.Passe tudo para baixo
MainGame. Por exemplo,EnemyManagerprecisa carregar um tipo de inimigo aleatório toda vez que gera um inimigo; portanto, em vez de carregar as texturasMainGame, passeEnemyManageraGame.Contentpropriedade e deixe-a lidar com o carregamento de textura. No entanto, não tenho certeza se essa é a melhor maneira de lidar com a situação. Não consigo colocar meu dedo nele, mas parece 'errado' de alguma forma.
Eu poderia usar alguns conselhos sobre a melhor maneira de conseguir isso.