Pour l'instant la structure de mon jeu est la suivante (toujours tirée des tuto de PHstudios) :
J'ai une classe GameplayObject qui s'occupe de définir des status (Active, Dying, Dead... Ça sert à définir des logic quand par exemple un ennemi est en train de crever) ou des méthodes du genre :
Code:
Vector2 position = Vector2.Zero;
public Vector2 Position
{
get { return position; }
set { position = value; }
}
Toutes mes classes destinées à créer des objets du jeu (Player, Ennemies, Lasers...) héritent de cette classe. Ca permet de créer une liste dans la classe PlayScreen du genre :
Code:
static List<GameplayObject> addedObjects = new List<GameplayObject>();
public static void Add(GameplayObject newGameObject)
{
addedObjects.Add(newGameObject);
}
On update tout ça comme ça (dans la partie Update) :
Code:
for (int i = 0; i < currentGameObjects.Count; i++)
{
if (currentGameObjects[i].Status == ObjectStatus.Dead)
gameObjects.Remove(currentGameObjects[i]);
else
currentGameObjects[i].Update(gameTime);
}
Ainsi, on peut afficher facilement tout le contenu de la liste dans la partie Draw :
Code:
spriteBatch.Begin();
for(int i = 0; i < gameObjects.Count; i++)
{
gameObjects[i].Draw(gameTime, spriteBatch);
}
Mais je viens de voir que dans la partie LoadContent il y a ça :
Code:
gameObjects.Add(player);
Faudrait-il que je modifie les choses pour éviter que le joueur se retrouve dans la liste générale où se trouve les ennemies pour pouvoir le gérer indépendamment ? (mmh la réponse est dans la question...)