J'écris un éditeur d'objet 2D afin de pouvoir créer plus rapidement l'interface utilisateur pour les programmes de base. Je n'utilise pas de bitmaps du tout. Au lieu de cela, je dessine simplement des primitives avec des appels de fonction dans la boucle du jeu. Tout s'est bien passé jusqu'ici, mais j'aimerais savoir comment modifier les couleurs des objets pendant l'exécution.Modification des couleurs des primitives pendant l'exécution dans Allegro 5
Le concept de base est que j'utilise une variable pour la couleur, et lorsque l'utilisateur appelle la fonction qui change la valeur de cette variable, cela change la couleur. Simple. Quelque chose comme:
void runColor(){
ALLEGRO_COLOR color = NULL;
if(event.mouse.button&1)
color = al_map_rgb(255, 0, 0);
else
color = al_map_rgb(0, 255, 0);
al_draw_filled_rectangle(firstXval, firstYval, secondXval, secondYval, color);
}
Malheureusement, cela ne fonctionne pas. Lorsque j'utilise un code similaire, les objets ne sont simplement pas dessinés. Il n'y a pas d'erreurs de compilation, pas d'erreurs d'exécution, rien. Au lieu de cela, les objets n'ont pas de couleur et sont donc invisibles, bien que j'ai vérifié qu'ils sont effectivement créés. Sooo je suppose que cela signifie que la variable de couleur est en quelque sorte le bon type, mais ne conserve pas la valeur de al_map_rgb()
quand il est égal à la valeur renvoyée par cette fonction. Je sais qu'il doit retourner quelque chose, car sinon il ne pourrait pas être un argument dans les fonctions al_draw
. Alors que je pourrais juste écrire sinon si les instructions qui mènent à différentes fonctions de dessin, je préfère avoir un simple petit paquet de code comme ci-dessus qu'un tas de choses redondantes qui résout quelque chose qui devrait être simple. Je préférerais ne pas aller avec le code équivalent du ruban adhésif.
Donc, je suis sûr que le problème a probablement à faire avec mon hypothèse que al_map_rgb()
renvoie une valeur de ALLEGRO_COLOR
, mais je ne sais pas. Seriez-vous prêts à faire des suggestions?