Salut
filoulefilou,
Je soupçonne que le problème vient du fait que tu crées la DynamicSprite localement, laquelle est (il me semble) automatiquement détruite lorsque la routine a fini d'être exécutée. Résultat : ton objet d'inventaire n'a plus aucune image associée après coup (en gros, c'est comme si ta commande
Delete à la ligne 14 était toujours là, même si tu l'enlèves).
Essaye de créer des DynamicSprite globales. Pour que ta solution soit générale, je te conseille d'utiliser des tableaux dynamiques. En haut de ton global script :
- Code:
-
DynamicSprite* vignettes[];
function game_start() {
vignettes = new DynamicSprite[Game.InventoryItemCount];
}
Ensuite, au lieu de créer une nouvelle variable-pointeur DynamicSprite (ligne 6 de ton bloc de code par exemple), tu fais directement référence au tableau
vignettes (utilise la propriété
ID de l'objet d'inventaire pour pointer sur la bonne case). Évidemment tu fais pareil pour toute référence à
vignette dans ton bloc de code : tu remplaces par
vignettes[...]Note : tu peux parcourir tous les objets d'inventaire en utilisant le tableau pré-défini
inventory, comme ça
- Code:
-
int i = 0;
while (i < Game.InventoryItemCount) {
if (player.InventoryQuantity[i]>1){
String Text_nbr;
Text_nbr = String.Format("%d", player.InventoryQuantity[i]);
vignettes[i] = DynamicSprite.CreateFromExistingSprite(inventory[i].Graphic, true);
DrawingSurface*surf = vignettes[i].GetDrawingSurface();
surf.DrawingColor = 14;
surf.DrawString(10, 20, 1, Text_nbr);
surf.Release();
inventory[i].Graphic = vignettes[i].Graphic;
}
i++;
}
Note 2 : tu devrais aussi probablement garder un backup des images que les objets d'inventaire ont au début du jeu, parce qu'à mesure que tu changes la propriété
Graphic pour écrire du texte par-dessus (le nombre) ça va devenir tout crade. C'est facile, tu crées un tableau dynamique de type
int, exactement comme tu le fais pour
vignettes (sauf que les
int sont pas des pointeurs, donc pas d'astérisque), mais en plus tu remplis chaque case de ce tableau avec
Graphic de l'objet d'inventaire correspondant (en utilisant une
while dans
game_start). Ensuite tu fais références à ce tableau dans
CreateFromExistingSprite plutôt qu'à
inventory[n].Graphic.
_________________
Ga is Ga
Vous pouvez consulter l'
aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !