Sto cercando di scrivere una SpriteManager
classe in XNA, ma ho bisogno di accedere alle Game
variabili. Ad esempio, la Game.Content
proprietà sarebbe molto utile nel caricamento delle trame e Game.GraphicsDevice.Viewport
sarebbe 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 SpriteManager
classe:
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,EnemyManager
deve caricare un tipo di nemico casuale ogni volta che genera un nemico, quindi invece di caricare le trameMainGame
, passaEnemyManager
laGame.Content
proprietà 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.