**Language / Langue :** **FR** | [[en:yaml:imagemaps|EN]]
====== Image maps / Point & clic (YAML) ======
Les image maps transforment une image en zone interactive. L'auteur fournit deux fichiers :
* une image visible, affichée au joueur ;
* un masque PNG, où chaque couleur plate correspond à une zone.
La fonctionnalité est interactive sur web, desktop et export HTML5 standalone. Sur Discord et terminal, l'image reste affichée comme média lisible, sans interaction point & clic.
===== Insérer une image map =====
Dans un texte de salle ou dans un encadré HUD :
texte: "[[#map:scene:https://cyril-fiesta.fr/jdr-bot/scenarios/images/showcase/taverne.png|https://cyril-fiesta.fr/jdr-bot/scenarios/images/showcase/taverne-masque.png]]"
Format général :
[[#map:id:image.png|masque.png]]
* ''id'' identifie la map dans la salle.
* ''image.png'' est l'image visible.
* ''masque.png'' est l'image de masque : chaque couleur pleine représente une zone.
===== Déclarer les zones =====
Les zones se déclarent dans la salle avec la clé ''zones:'' puis l'id de la map.
zones:
scene:
couleurs:
- couleur: "#FF0000"
clic: parler_barman
highlight: true
- couleur: "#0000FF"
clic: examiner_salle
survol-tooltip: "Regardez attentivement la salle..."
highlight: true
- couleur: "#00FF00"
survol-tooltip: "Une sortie vers la rue."
survol-event: observer_sortie
Chaque entrée de ''couleurs:'' associe une couleur du masque à une interaction.
===== Options de zone =====
* ''couleur:'' : couleur HTML du masque, au format ''#RRGGBB''.
* ''clic:'' : id d'un événement local déclenché au clic.
* ''survol-tooltip:'' : texte affiché dans une bulle au survol.
* ''survol-event:'' : id d'un événement local déclenché au survol.
* ''highlight: true'' : affiche la zone en surbrillance au survol.
* ''couleur-affichage:'' : couleur utilisée pour la surbrillance ou la peinture permanente.
* ''mode-affichage:'' : ''plein'' ou ''contour''.
* ''etat:'' : ''visible'', ''desactive'' ou ''invisible''.
===== Événements associés =====
Les ids référencés par ''clic:'' ou ''survol-event:'' doivent correspondre à des événements de la salle.
evenements:
- id: parler_barman
texte: |
Le barman grommelle :+n+
**« On commande ou on dégage. »**
faire: "parle_barman.=.1"
- id: examiner_salle
texte: "La salle est basse de plafond et sent la bière éventée."
- id: observer_sortie
once: true
texte: "L'air frais de la rue passe sous la porte."
Les événements associés gardent leurs champs habituels : ''si:'', ''faire:'', ''vers:'', ''texte:'', ''texte-ko:'' et ''once:''. Les clés ''visible-si:'' et ''grise-si:'' s'appliquent à la map entière. Pour conditionner une zone précise, utilisez ''etat:'' et ses couches ''si:''.
===== État d'une zone =====
L'état est vérifié à l'affichage et au moment du clic.
^ Valeur ^ Effet ^
| ''visible'' | État par défaut. Le clic, le survol et le tooltip fonctionnent. |
| ''desactive'' | Le clic et la surbrillance de survol sont coupés. Le tooltip reste disponible. Si ''couleur-affichage:'' est définie, la zone reste peinte. |
| ''invisible'' | Le clic, le survol et le tooltip sont coupés. |
Une zone peut porter plusieurs couches ''si:''. Elles sont évaluées dans l'ordre et ne remplacent que les clés qu'elles déclarent.
zones:
scene:
couleurs:
- couleur: "#F21010"
clic: trouver_cle
highlight: true
si:
- si: "v_cletrouvee_v.=.1"
etat: desactive
couleur-affichage: "#777777"
mode-affichage: plein
Une zone décorative peut utiliser ''etat:'' et ''couleur-affichage:'' sans avoir de ''clic:''. Une zone ''desactive'' ou ''invisible'' ne peut pas être déclenchée par un clic forcé envoyé au serveur.
===== once: zone / once: zone-salle =====
Quand une même couleur du masque contient plusieurs zones séparées, chaque composante peut être déclenchée individuellement :
* ''once: zone'' : chaque composante ne se déclenche qu'une seule fois **par partie** ;
* ''once: zone-salle'' : les composantes se réarment à chaque retour dans la salle.
evenements:
- id: toucher_bouteille
once: zone-salle
texte: "Vous inspectez une bouteille vide."
faire: "bouteilles.+.1"
===== once: couleur / once: couleur-salle =====
Ces deux valeurs regroupent toutes les taches qui utilisent la même couleur du masque :
* ''once: couleur'' : le premier clic consomme toute la couleur pour le reste de la partie ;
* ''once: couleur-salle'' : le premier clic consomme toute la couleur jusqu'à la prochaine visite de la salle.
evenements:
- id: toucher_bouteilles
once: couleur
texte: "Toutes les bouteilles portent le même symbole."
Utilisez ''once: zone'' pour traiter séparément plusieurs objets d'une même couleur. Utilisez ''once: couleur'' quand un seul clic doit les désactiver ensemble.
===== apres-clic: - marquer les zones consommées =====
Sur une zone dont l'événement de clic utilise l'un des modes ''zone'' ou ''couleur'', la clé ''apres-clic:'' choisit le rendu une fois l'interaction consommée :
^ Valeur ^ Effet ^
| ''masquer'' | Plus de highlight au survol, zone inerte. |
| ''fixe'' | Highlight affiché en permanence (déjà cliqué). |
| ''"#RRGGBB"'' | Highlight permanent de cette couleur. |
La clé optionnelle ''apres-mode:'' (''plein'' ou ''contour'') change le type de highlight de la marque - par exemple contour au survol, mais remplissage plein une fois l'élément trouvé. Idéal pour un cherche-et-trouve :
zones:
scene:
couleurs:
- couleur: "#00FFF3"
clic: toucher_bouteille
highlight: true
contour-seul: true
apres-clic: "#000000"
apres-mode: plein
Avec les variantes ''zone'' et ''couleur'', les marques persistent au retour dans la salle. Les variantes ''zone-salle'' et ''couleur-salle'' se réarment à chaque visite.
===== Dans un HUD =====
Une image map peut rester affichée en permanence dans un encadré :
encadre:
- position: haut
hauteur: 42
texte: "[[#map:scene:/scenarios/images/taverne.png|/scenarios/images/taverne-masque.png]]"
Les textes d'événements apparaissent alors dans le flux principal pendant que la scène reste cliquable.
===== Conseils =====
* Utiliser un masque PNG sans compression destructrice, avec des aplats nets.
* Éviter les couleurs trop proches dans le masque.
* Garder une zone par couleur quand c'est possible ; utiliser ''once: zone'' ou ''once: zone-salle'' si une couleur représente plusieurs éléments identiques.
* Prévoir un choix classique de secours si la navigation dépend entièrement du point & clic hors du mode ''ui: plein-ecran''.
Voir aussi : [[fr:yaml:tooltips|Tooltips interactifs]], [[fr:yaml:elements-cliquables|Éléments cliquables]], [[fr:yaml:hud|HUD]].