[C#]Enregistrement des préférences en XML

Fermé
Noxalus Messages postés 12 Date d'inscription jeudi 28 janvier 2010 Statut Membre Dernière intervention 24 avril 2011 - 17 juin 2010 à 23:23
Bonjour à toutes et à tous ! :)

Je travaille actuellement sur un projet de jeu vidéo 2D. Celui-ci est bientôt terminé, et j'aimerais passer à l'étape de l'enregistrement des préférences de l'utilisateur.

Pour être plus clair, le jeu dispose d'un menu permettant de changer la résolution, la configuration des touches ou même de la partie. Afin que l'utilisateur ne soit pas obligé à chaque démarrage du jeu de changer la résolution (par exemple), j'aimerais stocker ces informations dans un fichier (XML ?) puis les restituer.

Actuellement, toutes les infos que je voudrais enregistrer sont contenues dans une classe "Config" à part en static. L'ensemble des classes du projet a accès à toutes les variables de ce fichier "Config". Il me suffirait donc de charger un fichier XML, plutôt que de mettre des valeurs par défaut à ces variables.

Avant de demander de l'aide ici, je me suis renseigné sur ce qu'on pouvait faire en XML, et j'ai découvert la classe "System.XML" qui permet facilement de lire et d'écrire dans des fichiers. Voici ce que j'ai fait pour m'entrainer un peu:


// Ecriture du fichier
            XmlTextWriter fichier = new XmlTextWriter("config.xml", null);
            fichier.WriteStartDocument();
            fichier.WriteWhitespace("\n");
            fichier.WriteWhitespace("\t");
            fichier.WriteStartElement("resolution");

            fichier.WriteWhitespace("\n");
            fichier.WriteWhitespace("\t\t");
            fichier.WriteStartElement("largeur");
            fichier.WriteString("1280");
            fichier.WriteEndElement();
            fichier.WriteWhitespace("\n");
            
            fichier.WriteWhitespace("\t\t");
            fichier.WriteStartElement("hauteur");
            fichier.WriteString("1024");
            fichier.WriteEndElement();
            fichier.WriteWhitespace("\n");

            fichier.WriteWhitespace("\t");
            fichier.WriteEndElement();


            fichier.WriteEndDocument();
            fichier.Close();


Ce code produit un fichier XML avec ce contenu:

<?xml version="1.0"?>
	<resolution>
		<largeur>1280</largeur>
		<hauteur>1024</hauteur>
	</resolution>


Maintenant, je passe à l'étape de la lecture et j'ai fait ceci:

// Lecture du fichier
            XmlTextReader config = new XmlTextReader("config.xml");
            config.WhitespaceHandling = WhitespaceHandling.None;

            int[] resolution = new int[2];

            while (config.Read())
            {
                if (config.LocalName == "largeur")
                    resolution[0] = Convert.ToInt32(config.ReadString());
                else if(config.LocalName == "hauteur")
                    resolution[1] = Convert.ToInt32(config.ReadString());
            }


Ce code fonctionne bien, le tableau "resolution" contient bien les deux valeurs, mais est-ce vraiment la meilleur façon de procéder ? J'ai beaucoup de variables différentes, et je me vois mal enchaîner les "else if" dans la boucle principale.

De plus, à chaque modification par l'utilisateur via le menu, il faudra réécrire le fichier XML, mais devrais-je tout réécrire où il existe un moyen de changer uniquement la valeur entre telle ou telle balise ?

Maintenant, est-ce que XML est le meilleur moyen d'arriver à mes fins ? Comment font les jeux commerciaux pour enregistrer les préférences de ses utilisateurs ?

Merci d'avance pour vos réponses ! :)

Bonne soirée ;)
A voir également: