LimbStudio

Blog de LimbStudio sur le developpement de jeux video en 2d.

Translate this page!

lundi 5 janvier 2015

LimbEditor - Ajout des fonctions de sauvegarde/chargement

Bonjour tout le monde!

Le projet n'est pas en standby loin de là!

Ces 2 derniers jours, je me suis penché sur l'ajout de fonction permettant d'enregistrer et charger une carte à partir d'un fichier binaire (une première pour moi! ) .

Voici en détail comment le programme fonctionne:

Lors de la création d'une carte:

 
La fonction de création  crée une carte à partir du nom donné par l'utilisateur. Elle appel également la construction d'un RessourceHolder (qui contient toutes les textures nécessaires a la carte) arbitraire qui charge les textures par défaut. (cela pourra être modifié ensuite).
Lors de la sauvegarde, Le nom de la carte est réutiliser pour créer le fichier correspondant. Pour eviter d'écraser une carte deja existante, les cartes utilisateurs, seront enregistrées dans Cartes/Perso/ tandis que celle fournit de base seront dans Cartes/

Lors du chargement:


Lorsque l'on demande de charger une carte (dont le nom est demandé avant) , on crée un objet Carte vide.

On charge ensuite dedans les données dans le même ordre que l'on a sauvegardé.On fabrique ensuite les éléments à partir du tableau d’élément que l'on stocke dans un vecteur de pointeur.Le tableau d'element est en faite un tableau qui permet stocke les informations d’élément de la façon suivante:

vector<int> tableau_element[coteCarte²]; //voila à quoi ressemble le tableau

On parcourt le tableau dans une double boucle:

for(unsigned int i=0;i<coteCarte;i++)
{
   for(unsigned int j=0;j<coteCarte;j++)
   {
        tableau_element[j*coteCarte + i] //...
   }
}
La formule j*coteCarte+i est valable car la carte est carrée et non rectangulaire.Grâce à celle ci on parcourt le tableau sans problemes , en remplacant i et j par les coordonnées sur la carte (x;y) . on peut savoir quel type d’élément se trouve à tel endroit.
Si par exemple nous voulons savoir ce qui se trouve en coordonnées (5,2)  et que coteCarte vaut 10, on interroge:

Type_element elm=tableau_element[10 * 2 + 5]   //donc en case 25 / 100 du tableau

Grâce à cette méthode, on peut donc interroger puis créer les elements en conséquence et aux bon endroits.Une fois les éléments chargés, on crée un RessourceHolder a partir du  pack enregistré dans la carte.


Les sources sont bien sur disponible dans les liens ci-contre (a gauche) :p 

Prochaine mise à jour:


*Ajouts des fonctionnalités d'édition de cartes (en parties implementées mais pas encore utilisable) .
*Choix de la taille de la carte dans une certaine limite ( entre 5x5carrés jusqua 15*15).
*Résolution de certains bug connus.



 A bientôt!



Aucun commentaire:

Enregistrer un commentaire