Bonjour,
J'ai programmé une class Sprite pour gérer plus simplement les feuilles de sprite. La class fonctionne, et j'aimerai avoir votre avis pour la perfectionner si besoin est et pour savoir si ce que j'ai fait est correct (et pourquoi pas la mettre en source par la suite).
Voila le code:
- sprite.h
- sprite.cpp
Un modèle de fichier de configuration:
- sprites/spr_perso.txt
Explications : Les grandes lignes
La class contient :
- une surface SDL (sur laquelle on va charger l'image par la suite)
- un pointeur vers une couleur transparente
- un ensemble de couple string/SDL_Rect (autrement dit une map de STL)
Ainsi une animation est un couple "nom de l'animation" de type string et un ensemble de coordonnées (x, y, w et h) stockée dans une structure SDL_Rect. J'ai codé les principaux accèsseurs (même s'il ne serviront presque jamais) tandis que le constructeur par recopie est vide (je ne pense pas qu'il soit possible à faire à cause du pointeur sur la SDL_Surface*, quoiqu'il en soit je ne pense pas qu'il soit nécessaire de recopier une feuille de sprite mais cela risque d'être problématique pour l'utilisation de feuille de sprite en tant qu'argument de fonction).
Les méthodes principales:
- charger(string fichier) : charge le fichier image sur la surface
- definir_coul_trans(r,v,b) : définit une couleur transparente
- ajouter() : permet d'ajouter un couple animation/coordonnées. La fonction est surchargée pour permettre une souplesse d'utilisation.
- blitter(surface, nom_anim, x, y) : blitte un sprite sur la surface
Class FeuilleSprite : Extension de la class
J'ai codé aussi une class FeuilleSprite qui hérite de Sprite.
Je l'ai ajouté pour pouvoir gérer plus simplement la définition des animations; ainsi on va aller charger les infos du sprite et les animations (nom et coordonnées) dans un fichier texte externe (c'est là qu'intervient le sprites/spr_perso.txt). J'ai fait en sorte de pouvoir commenter le fichier texte.
La class contient une liste chainée d'erreur (au format string) c'est pourquoi j'ai ajouté deux accèsseurs pour lire les messages par la suite (et un alias de l'iterateur). Ce système de message d'erreur est assez lourd à gérer, si vous avez une meilleur idée je suis preneur !
Sinon la class ne contient qu'une méthode en plus: charger_feuille(string chemin) qui permet d'aller lire le fichier .txt pour en extraire les informations et ensuite définir entièrement le Sprite.
Merci à tous ceux qui auront pris la peine de lire mes sources
Partager