Structure des zones à cliquer
Chaque vue dispose de plusieurs zones à
cliquer. On définit un tableau de pointeurs vers chaque début de zone de chaque
vue. Ce tableau contient donc 80 pointeurs. Le module GestCurseur.asm utilise le
pointeur de la vue courante pour obtenir la liste des zones à cliquer de cette
vue.
Les zones à cliquer sont définies comme un tableau de structures, terminé par
un octet égal à 0 (indique la fin de zone pour la vue en cours).
Chaque structure est composée des éléments suivants :
BYTE TypeZone Type
de zone
BYTE Xd
coordonnée
gauche de la zone
BYTE Xa
coordonnée
droite de la zone
BYTE Yd
coordonnée
basse de la zone
BYTE Ya
coordonnée
haute de la zone
WORD PtrFct pointeur de
fonction ou de message
Le type de la zone sert à définir l'aspect du curseur lorsque celui-ci est dans la zone décrite par les coordonnées, ainsi que le type d'action à réaliser lorsque l'on clique dans la zone.
Les 2 bits de poids faibles (Bit 0 et Bit 1) déterminent l'aspect du curseur :
Valeur 00 (0) : le curseur reste sous forme
de flèche lorsque l'on est dans la zone,
Valeur 01 (1) : le curseur se transforme en loupe lorsque l'on est dans la
zone,
Valeur 10 (2) : le curseur se transforme en personnage lorsque l'on est dans la
zone,
Valeur 11 (3) : inutilisé.
Les 2 bits de poids faible du quartet de poids fort (Bit 4 et Bit 5) déterminent l'action à réaliser lorsque le joueur clique dans la zone :
Valeur 00 (#00) : On exécute le code à
l'adresse de PtrFct,
Valeur 01 (#10) : On affiche le message situé à l'adresse de PtrFct et on
attend l'appui sur une touche,
Valeur 10 (#20) : On va à la vue dont le numéro est PtrFct (dans ce cas, PtrFct
varie entre 1 et 80),
Valeur 11 (#30) : inutilisé.
On peut donc en déduire que les combinaisons suivantes sont couramment utilisées dans le jeu :
#01 : permet de transformer le curseur en
loupe, et lorsque l'on clique, exécuter le code situé à l'adresse de PtrFct.
#02 : permet de transformer le curseur en personnage, et lorsque l'on clique,
exécuter le code situé à l'adresse de PtrFct.
#11 : permet de transformer le curseur en loupe, et lorsque l'on clique,
affiche le message pointé par PtrFct.
#12 : permet de transformer le curseur en personnage, et lorsque l'on clique,
affiche le message pointé par PtrFct.
#22 : permet de transformer le curseur en personnage, et lorsque l'on clique,
se déplace à la vue donnée par PtrFct.
La valeur 0 ne peut pas être utilisée dans les zone, car elle sert à marquer la fin de zone pour une vue. Par contre, on peut utiliser une autre valeur, sachant que les bits 2, 3, 6, 7 ne sont pas utilisés, par exemple, la valeur #04, permettra de ne pas modifier le curseur lorsque l'on sera dans la zone, mais exécutera le code situé à l'adresse de PtrFct lorsque l'on cliquera.