Bonjour à tous.
Dans le but de passer le temps, je m'amuse à réaliser un "Mario like" (Super original me direz vous...).
Je créé mes maps avec Tiled et les lis et affiche avec les bibliothèques "TMX parser" et "TSX parser".
Mon souci est que j'ai des tuiles animées et je ne trouve aucun tuto ou bribe de code qui indiquent comment gérer ces animations.
J'ai quelques idées mais j'aimerais avoir votre avis si c'est correct ou voir si il y a pas plus simple ou mieux à faire.
Dans Tiled je créé mes animations et les enregistre dans mon fichier tsx.
Quand je lis ma map (enregistrée dans un tableau X,Y,Z (Z étant le numéro de calque)), je vais voir les propriétés de la tuile à afficher, propriétés qui se trouvent dans un tableau (image de mon fichier tsx).
Si c'est une tuile animée, alors je réalise l'animation.
Pour faire un essai, j'ai 4 tuiles animées que je souhaite afficher.
Cette animation se fait sur 4 images différentes.
J'ai donc essayé de faire ceci (sans gérer le temps pour le moment) :
mes animations sont sous forme anim0 = tuile X, anim1 = tuile X+1, etc...
Créé une variable temporaire image de ma tuile animée (varTemp).
Cherche le numéro X de la tuile a afficher en position X,Y,Z.
Si ma tuile numéro X est animée,
Si varTemp < numéro X
Enregistre le numéro de ma tuile dans varTemp.
Sinon
varTemp++
Si varTemp == numéro X + 4
varTemp = numéro X
numéro X = varTemp
affiche (numéroX).
en gros ça fonctionne MAIS comme mon animation est sur 4 blocs et que j'affiche 4 blocs, j'ai chaque bloc qui me prends une valeur de tuile et j'ai pas d'animation. premier bloc = anim 0 second bloc anim 1 etc... et quand reviens le premier bloc, varTemp = numéro X donc on reviens a la première image de l'animation.
J'ai donc pensé à faire un std::map d'une structure "animation" avec comme identifiant la valeur X,Y,Z.
De ce fait, j'aurais mes 4 blocs indépendants avec une animation distincte entre eux.
Mon problème c'est que je créé 4 fois la même animation (1 foi par bloc) et ça me semble pas optimisé.
Si je me retrouve avec 30 blocs identiques, j'ai 30 fois la même chose de stocké en mémoire. Pas cool.
du coup je me demande si c'est la bonne solution, ou si j'ai TOUT faux ?
Merci pour vos retours et de m'avoir lu jusque ici.