Exceptions et gestion des fichiers : sauvegarder et charger un niveau
CHAPITRE 8
181
Après avoir récupéré l’objet Map, n’oubliez pas d’appeler la méthode LoadContent() pour
charger les textures.
else if (keyboardState.IsKeyDown(Keys.L) && lastKeyboardState.IsKeyUp(Keys.L))
{
FileStream file = File.Open(Path.Combine(container.Path, "test.sav"),
➥FileMode.Open);
BinaryFormatter serializer = new BinaryFormatter();
map = (Map)serializer.Deserialize(file);
file.Close();
map.LoadContent(Content);
cursor = new Cursor();
cursor.LoadContent(Content);
}
Voyons à présent la désérialisation XML. Dans la classe Chapitre_8, vous utiliserez la
méthode Deserialize() à laquelle vous passerez le flux à traiter. Transformez ensuite
l’objet retourné par la méthode en un objet de type Map avec la méthode du casting.
Attention, lorsque vous utilisez la sérialisation XML : tout n’est pas sérialisable. C’est
pour cette raison que nous avons utilisé un tableau de tableau de Tile plutôt qu’un tableau
à deux dimensions.
else if (keyboardState.IsKeyDown(Keys.L) && lastKeyboardState.IsKeyUp(Keys.L))
{
FileStream file = File.Open(Path.Combine(container.Path, "test.xml"),
➥FileMode.OpenOrCreate);
XmlSerializer deserializer = new XmlSerializer(typeof(Map));
map = (Map)deserializer.Deserialize(file);
file.Close();
map.LoadContent(Content);
cursor = new Cursor();
cursor.LoadContent(Content);
}
L’éditeur de cartes est maintenant prêt : vous pouvez créer, sauvegarder et charger des
cartes en utilisant soit la sérialisation binaire, soit la sérialisation XML.
Les Content Importers, une solution compatible avec
la Xbox 360
Si vous essayez de désérialiser une carte comme vous venez de le voir dans un projet
exécuté sur Xbox 360, vous vous rendrez compte que cela ne fonctionne pas. Sur cette
plate-forme, vous ne pouvez charger que des fichiers .xnb et, pour générer de tels fichiers
à partir des types personnalisés (comme la classe Map), vous devrez créer un ContentImporter.
=Labat FM.book Page 181 Vendredi, 19. juin 2009 4:01 16
Précédent

- 202/366

Suivant