Exceptions et gestion des fichiers : sauvegarder et charger un niveau
CHAPITRE 8
183
public override string GetRuntimeReader(TargetPlatform targetPlatform)
{
return typeof(Chapitre_8_Shared.TileReader).AssemblyQualifiedName;
}
C’est fini pour la classe Tile.
5. Répétez ces opérations pour la classe Map. Il y a cependant un petite différence : vous
ne pouvez pas utiliser la méthode Write() puisque vous avez défini le type de l’attribut
Tiles (un tableau de tableau de Tile). Vous devrez utiliser la méthode générique
WriteObject().
protected override void Write(ContentWriter output, TWrite value)
{
output.WriteObject(value.Tiles);
}
6. Le raisonnement est le même que pour le Reader : vous devez utiliser la méthode
ReadObject().
protected override TRead Read(ContentReader input, TRead existingInstance)
{
existingInstance = new Map();
existingInstance.Tiles = input.ReadObject();
return existingInstance;
}
7. N’oubliez pas la méthode GetRuntimeReader().
public override string GetRuntimeReader(TargetPlatform targetPlatform)
{
return typeof(Chapitre_8_Shared.MapReader).AssemblyQualifiedName;
}
8. Le ContentImporter est fin prêt. Cependant, vous devez lui fournir un fichier XML en
entrée. Pour créer ce fichier, commencez par ajouter une nouvelle référence au projet
principal vers l’assembly Microsoft.XNA.Framework.Content.Pipeline. Ajoutez ensuite
une directive using à la classe Chapitre_8.
using Microsoft.Xna.Framework.Content.Pipeline.Serialization.Intermediate;
9. Pour générer un fichier XML correspondant à la carte, vous utiliserez un objet de
type XmlWritter qui correspondra au flux de sortie. Vous sérialisez ensuite les données
grâce à la méthode statique Serialize de la classe IntermediateSerializer().
XmlWriterSettings xmlSettings = new XmlWriterSettings();
xmlSettings.Indent = true;
using (XmlWriter xmlWritter = XmlWriter.Create("map.xml", xmlSettings))
{
IntermediateSerializer.Serialize(xmlWritter, map, null);
}
=Labat FM.book Page 183 Vendredi, 19. juin 2009 4:01 16
Précédent

- 204/366

Suivant