Développement XNA pour la XBox et le PC
182
1. Ajoutez un projet de type ContentPipelineExtension à la solution.
2. Ajoutez à ce nouveau projet une référence vers le projet partagé qui contient les
classes Map, Tile et Cursor.
3. Ajoutez ensuite au projet un nouvel élément de type Content Type Writer que vous
nommerez TileWriter.
4. Renseignez le type de données concernées par le Content Type Writer.
using TWrite = Chapitre_8_Shared.Tile;
5. Il faut ensuite compléter la méthode Write(). Le principe est simple : vous disposez
de l’objet (value) et vous écrivez le contenu de ses différents paramètres sur l’objet
output.
6. Écrivez le nom de sa texture en utilisant la méthode Write() de l’objet output. De la
même manière, occupez-vous de l’attribut position.
protected override void Write(ContentWriter output, TWrite value)
{
output.Write(value.AssetName);
output.Write(value.Position);
}
À présent, les données de type Tile peuvent être sérialisées vers un fichier .xnb.
Intéressons-nous maintenant à leur lecture.
1. Dans le projet de bibliothèque de classes, ajoutez un nouvel élément de type Content
Type Reader.
2. Comme pour le Writer, commencez par renseigner le type de données concernées.
Using Tread = Chapitre_8_Shared.Tile;
3. À présent, c’est la méthode Read() que vous allez devoir compléter. Commencez par
créer une nouvelle instance de Tile. Ensuite, récupérez la valeur des deux attributs
grâce aux méthodes ReadString() et ReadVector2(). Enfin, n’oubliez pas de retourner
l’objet recréé.
protected override TRead Read(ContentReader input, TRead existingInstance)
{
existingInstance = new TRead();
existingInstance.AssetName = input.ReadString();
existingInstance.Position = input.ReadVector2();
return existingInstance;
}
4. Il reste une dernière chose à faire pour la classe Tile. Retournez sur le Writer et
complétez la méthode GetRuntimeReader().
=Labat FM.book Page 182 Vendredi, 19. juin 2009 4:01 16
182
1. Ajoutez un projet de type ContentPipelineExtension à la solution.
2. Ajoutez à ce nouveau projet une référence vers le projet partagé qui contient les
classes Map, Tile et Cursor.
3. Ajoutez ensuite au projet un nouvel élément de type Content Type Writer que vous
nommerez TileWriter.
4. Renseignez le type de données concernées par le Content Type Writer.
using TWrite = Chapitre_8_Shared.Tile;
5. Il faut ensuite compléter la méthode Write(). Le principe est simple : vous disposez
de l’objet (value) et vous écrivez le contenu de ses différents paramètres sur l’objet
output.
6. Écrivez le nom de sa texture en utilisant la méthode Write() de l’objet output. De la
même manière, occupez-vous de l’attribut position.
protected override void Write(ContentWriter output, TWrite value)
{
output.Write(value.AssetName);
output.Write(value.Position);
}
À présent, les données de type Tile peuvent être sérialisées vers un fichier .xnb.
Intéressons-nous maintenant à leur lecture.
1. Dans le projet de bibliothèque de classes, ajoutez un nouvel élément de type Content
Type Reader.
2. Comme pour le Writer, commencez par renseigner le type de données concernées.
Using Tread = Chapitre_8_Shared.Tile;
3. À présent, c’est la méthode Read() que vous allez devoir compléter. Commencez par
créer une nouvelle instance de Tile. Ensuite, récupérez la valeur des deux attributs
grâce aux méthodes ReadString() et ReadVector2(). Enfin, n’oubliez pas de retourner
l’objet recréé.
protected override TRead Read(ContentReader input, TRead existingInstance)
{
existingInstance = new TRead();
existingInstance.AssetName = input.ReadString();
existingInstance.Position = input.ReadVector2();
return existingInstance;
}
4. Il reste une dernière chose à faire pour la classe Tile. Retournez sur le Writer et
complétez la méthode GetRuntimeReader().
=Labat FM.book Page 182 Vendredi, 19. juin 2009 4:01 16
