gohud

Votre propre préréglage — un seul fichier

← Thématisation

Ajouter un thème imposait autrefois de modifier quatre endroits à la main — la palette du générateur, la forme, un skin, une ressource de préréglage. Une seule commande les met désormais tous en place.

python3 addons/gohud/tools/new_theme.py neon --from scifi_dark --title "Neon"
python3 addons/gohud/tools/make_theme.py neon      # thème .tres + illustrations des contrôles
godot --headless --path . --import                  # importe les nouvelles illustrations une fois
GoUi.use_preset(&"neon")                             # terminé — il apparaît aussi dans le sélecteur

La première ligne écrit themes/palettes/neon.json et themes/presets/neon.tres. Le JSON porte chaque valeur du thème dont il hérite, entièrement détaillée : il sert donc aussi de liste de ce que vous pouvez changer — supprimez une clé pour garder la valeur du parent, écrivez-en une pour la redéfinir. Les préréglages sont trouvés en parcourant themes/presets/ : aucun code de registre à modifier — la liste déroulante du paramètre de projet le reprend elle aussi.

Ce que vous pouvez changer — sur une seule page

QuoiComment
fromle thème parentdark · light · scifi_dark · medieval_dark · … ou un autre thème JSON. Les clés omises héritent de ses valeurs ; un cycle d'héritage échoue
palettele fond · trois surfaces · la bordure · trois tons de texte · l'accent · quatre couleurs d'état · le voile · l'ombre · la gouttière des barres"#RRGGBB", l'alpha sous la forme "#RRGGBB@0.35"
couleurs vives réservées au remplissage *_vividgardent les barres saturées même quand la couleur du texte doit s'assombrir — omettez-en une et le générateur le signale
lisibilitépas réglée à la main. Le texte, les bordures, l'accent et le libellé posé dessus sont poussés par le générateur jusqu'à franchir les seuils — ne changez que l'accent et les vérifications passent toujours
shapekindflat (arrondi) · cut (coins chanfreinés) · medieval (cadres forgés)
taillesradius · radius_small · radius_large · gap · gap_small · gap_large · padding · button_height · button_padding[4] — les tokens suivent, si bien que les panneaux et les calculs des widgets ne divergent jamais
cut uniquementcut_ratio · cut_max · corners (diagonal|all) · glow · edge
medieval uniquementmaterial (0 fer · 1 cuir · 2 parchemin) · grain_alpha · ornament_scale · bevel_strength · fontstitle, subtitle, caption, body, button associés à des fichiers de police res:// internes à l'add-on
skinbase — la famille pour les endroits que le code dessine lui-même (joystick, emplacements, badges, anneau du repère guidé, puces, séparateurs)default · scifi · medieval
dials — les nombres de ces endroits : largeur et teinte de la bordure d'un emplacement, marge intérieure des badges, opacité des puces et des alertes, largeur et opacité de l'anneau du joystick, tailles des chanfreins science-fiction, halo et crochetsChaque valeur du parent est détaillée dans le JSON. Le générateur les écrit dans themes/skins/gohud_skin_<id>.tresaucun code de skin n'est touché. Ce n'est que pour changer les dessins eux-mêmes que vous lancez --new-skin, qui échafaude une sous-classe de GoSkin
iconsle jeu d'icônesun chemin res:// vers une ressource GoIconSet — conservé depuis un parent JSON s'il est omis
dark · titlecomment le sélecteur l'affichebooléen · chaîne

Toutes les molettes

Le tableau ci-dessous est rempli par tools/make_site.py directement depuis les lignes @export des scripts de skin — ajoutez une molette ou changez une valeur par défaut et le tableau suit. Utilisez ces noms sous skin.dials dans le JSON. Une molette dont la valeur par défaut s'écrit 14 est un entier, celle qui s'écrit 10.0 un flottant — écrivez l'une ou l'autre forme dans le JSON et le générateur convertit vers le type du script.

Skin par défaut GoSkin — 17

MoletteValeur par défautCe qu'elle règle
chip_fill_alpha0.16Opacité du remplissage du panneau d'une puce.
chip_edge_alpha0.45Opacité de l'arête du panneau d'une puce.
alert_tint0.1À quel point le panneau d'une boîte d'alerte est teinté vers sa couleur d'état.
slot_tint_lit0.24Teinte d'accent du panneau d'un emplacement rapide pendant son temps de recharge.
slot_tint_idle0.08Teinte d'accent du panneau d'un emplacement rapide au repos.
slot_border_lit2Largeur (dp) de la bordure d'un emplacement rapide pendant son temps de recharge.
slot_border_idle1Largeur (dp) de la bordure d'un emplacement rapide au repos.
badge_pad_x5Marge intérieure horizontale (dp) d'un badge (quantité, temps restant).
badge_pad_y1Marge intérieure verticale (dp) d'un badge.
badge_edge_alpha0.6Opacité de l'arête du panneau d'un badge.
float_shadow_alpha0.45Opacité de l'ombre des cartes flottantes (repère guidé, carte d'invite).
float_shadow_size14Flou (dp) de l'ombre des cartes flottantes.
float_shadow_lift4Décalage vers le bas (dp) de l'ombre d'une carte flottante.
float_glow_size10.0Distance (dp) du halo d'un panneau flottant qui rayonne au lieu de projeter une ombre, comme le panneau chanfreiné science-fiction.
joystick_base_alpha0.42Opacité du disque de base du joystick.
joystick_ring_alpha0.45Opacité de l'anneau du joystick.
joystick_ring_width2.0Largeur (dp) de l'anneau du joystick.

Skin science-fiction GoSkinSciFi — 10

MoletteValeur par défautCe qu'elle règle
cut_chip7.0Taille (dp) du chanfrein du panneau d'une puce.
cut_skeleton5.0Taille (dp) du chanfrein d'un panneau squelette.
cut_alert8.0Taille (dp) du chanfrein d'une boîte d'alerte.
cut_segment8.0Taille (dp) du chanfrein d'un contrôle segmenté.
cut_slot6.0Taille (dp) du chanfrein du panneau d'un emplacement rapide.
cut_disc_ratio0.24Chanfrein des avatars et des disques = diamètre × ce rapport.
slot_glow_alpha0.45Opacité du halo d'un emplacement dont le temps de recharge s'écoule.
slot_glow_size6.0Distance (dp) du halo d'un emplacement dont le temps de recharge s'écoule.
bracket_arm12.0Longueur (dp) des branches du crochet de visée du repère guidé.
bracket_thickness2.0Épaisseur (dp) du trait du crochet de visée du repère guidé.

Skin médiéval GoSkinMedieval — 5

MoletteValeur par défautCe qu'elle règle
slot_radius4.0Rayon (dp) des coins du cadre d'emplacement rapide médiéval.
leather_grain_alpha0.035Opacité des discrètes marques de cuir à l'intérieur des emplacements rapides.
ornament_scale1.0Échelle des décorations métalliques aux coins des emplacements rapides. Les cadres de menu utilisent shape.ornament_scale.
bevel_strength0.18Intensité du reflet métallique le long des arêtes des emplacements rapides.
slot_rivets1Afficher de petits rivets métalliques sur les emplacements rapides : 0 les masque, 1 les montre.

Dériver le skin (facultatif)

Seul ce que le thème et la forme n'atteignent pas — l'hexagone du joystick, les badges des emplacements, le crochet de visée du repère guidé — vit dans un skin. Dérivez GoSkin, ne redéfinissez que ces méthodes, et faites pointer la clé skin du JSON vers cette ressource. Un thème qui ne change que les couleurs saute cette étape.

Une vérification tient la promesse. tools/check_scaffold.sh crée un thème jetable à chaque exécution — change l'accent, met le rayon à 4 — et vérifie la génération, la propagation des tokens et un passage de contraste sans faute avant de le supprimer. Dès la première exécution, un thème dont seul l'accent avait changé échouait sur 8 paires : le générateur poussait les couleurs de texte mais utilisait l'accent tel quel. Il pousse désormais l'accent et le libellé posé dessus.