EDIT : OK je pense que j'ai mal lu ton code en exemple, c'est la comparaison "avant"/"après" c'est ça ? Dans ce cas oui, c'est pas mal, mais je ferais plutôt un truc dans ce genre :
- Code:
-
function Personnage_AnyClick()
{
Character* perso_clique = Character.GetAtScreenXY(mouse.x, mouse.y);
playerID=perso_clique.GetProperty("PersonnageID");
perso_clique.Anyclick_Personnage();
}
Deux remarques : 1) les version plus récentes d'AGS ajoutent un système de viewport, tu devrais prendre ça en compte quand tu utilises
GetAtScreenXY il me semble
2) j'ai un peu l'impression que tu ajoutes une couche superflue là, puisque tu finis par appeler
Anyclick_Personnage sur le personnage cliqué en ayant pris soin de mettre à jour
playerID avant. J'ai l'impression que tu pourrais juste copier le contenu de
Anyclick_Personnage directement dans
Personnage_AnyClick, mais peut-être que je me trompe.
MESSAGE ORIGINAL :
Je pensais que ton intention était de traiter l'événement
Any Click sur les persos de façon parallèle à comment tu traites l'événement
Click sur les boutons, c'est-à-dire dans les deux cas
appeler une seule et même fonction générale quel que soit l'élément sur lequel l'événement se produit.
Du coup je vois pas très bien pourquoi tu veux garder
cJoshua_AnyClick, toute l'idée étant d'appeler
Personnage_AnyClick (tel que tu l'as nommée) lors d'un clic sur n'importe quel personnage. Pratiquement parlant, ça veut dire écrire
Personnage_AnyClick dans la ligne "Any click" de la grille d'événements de tout personnage, tout comme (de ce que j'ai compris) tu écris déjà
LeBouton_OnClick dans la ligne "Click" de la grille d'événements de tout bouton de GUI