Sto cercando di scrivere una SpriteManagerclasse in XNA, ma ho bisogno di accedere alle Gamevariabili. Ad esempio, la Game.Contentproprietà sarebbe molto utile nel caricamento delle trame e Game.GraphicsDevice.Viewportsarebbe utile per ottenere le dimensioni della finestra.
Per ora, ho la seguente classe:
public MainGame : DrawableGameComponent
{
public SpriteManager<Enemy> EnemyManager { get; get; }
public SpriteManager<Powerup> PowerupManager { get; set; }
...
}
Posso pensare a tre modi per ottenere l'accesso a queste variabili nella SpriteManagerclasse:
Fai in modo che la mia classe manager sprite derivi
GameComponent. Questo sarebbe l'ideale, tranne per il fatto che viene utilizzato il mio sprite managerMainGame, che è aGameComponent.Utilizzare
((Game) Game1)per accedere alle variabili. Tuttavia, fare questo tipo di cast è brutto e rompe l'incapsulamento.Passa tutto da
MainGame. Ad esempio,EnemyManagerdeve caricare un tipo di nemico casuale ogni volta che genera un nemico, quindi invece di caricare le trameMainGame, passaEnemyManagerlaGame.Contentproprietà e lascia che gestisca il caricamento delle trame. Tuttavia, non sono sicuro che questo sia il modo migliore di gestire la situazione. Non ci riesco, ma sembra in qualche modo "sbagliato".
Potrei usare alcuni consigli sul modo migliore per raggiungere questo obiettivo.