En fait, le fichier ICFG contient toutes les infos sur l'interface de l'utilisateur : sa liste de contacts, les infos sur chaque fenêtre (opacité, position, verrouillage, etc...), les drapeaux et encore d'autres choses
Maintenant, faut voir si on a le droit de faire ça

Je ne bosserais réellement sur ça que si on a l'accord de Nevrax (ou du moins qu'ils ne nous l'interdisent pas)
Sinon un autre sujet qui date de septembre :
http://www.ryzom.com/forum//showthread.php?t=371
Enfin, pour répondre à benletib, en général, Nevrax sérialise ses classes, donc toutes les données sont toujours écrites de la même manières ce qui fait que pour eux c'est facile : tout est lu en une seule fois et écrit en une seule fois aussi.
Maintenant, tout ça c'est des méthodes de programmation donc cherchez sous Google : serialization
Edit: bon aller un exemple
vous avez une classe "Preferences" :
Code: Select all
class Preferences
{
Preferences();
virtual ~Preferences();
void Serialize(Archive &ar);
void UnSerialize(Archive &ar);
list<float> m_floats;
int m_machin;
string m_bidule;
};
Preferences: :P references(), m_machin(0), m_bidule("")
{
}
Preferences::~Preferences()
{
}
void Preferences::Serialize(Archive &ar)
{
ar.Serialize(m_floats);
ar.Serialize(m_machin);
ar.Serialize(m_bidule);
}
void Preferences::UnSerialize(Archive &ar)
{
ar.UnSerialize(m_floats);
ar.UnSerialize(m_machin);
ar.UnSerialize(m_bidule);
}
Pour charger un fichier, il faut faire :
Code: Select all
Preferences prefs;
FileArchive file("fichier.bin");
prefs.UnSerialize(ar);
Pour enregistrer un fichier, il faut faire :
Code: Select all
Preferences prefs;
FileArchive file("fichier.bin");
prefs.Serialize(ar);
Dans la classe Archive de base, il y a plein de méthodes Serialize() et UnSerialize() pour chaque type de données de base C++ (float, int, string, char, vector<T>, etc...).
Et on peut faire plein de classes qui héritent d'Archive, XmlArchive pour enregistrer en XML, SocketArchive pour envoyer sur un réseau via les sockets, FileArchive, TextArchive, SQLArchive, etc...
Il suffit juste de réécrire comment vont être enregistrés chaque types de données et ça marchera de façon identique sans tenir compte du format

C'est pas beau tout ça ?
