Aggiungere un tema voleva dire mettere mano a quattro punti diversi — la palette del generatore, la forma, una skin, una risorsa di preset. Ora un solo comando li mette tutti al loro posto.
python3 addons/gohud/tools/new_theme.py neon --from scifi_dark --title "Neon"
python3 addons/gohud/tools/make_theme.py neon # tema .tres + grafica dei controlli
godot --headless --path . --import # importa una volta la nuova grafica
GoUi.use_preset(&"neon") # fatto — compare anche nel selettore
La prima riga scrive themes/palettes/neon.json e themes/presets/neon.tres. Il
JSON porta ogni valore del tema da cui eredita, scritto per esteso, quindi vale anche come
elenco di ciò che puoi cambiare: cancella una chiave per mantenere il valore del genitore, scrivila per sovrascriverlo. I preset
vengono trovati scandendo themes/presets/, quindi nessun codice di registrazione da modificare — anche il menu a tendina
dell'impostazione di progetto lo raccoglie da sé.
Che cosa puoi cambiare — in una pagina sola
| Dove | Che cosa | Come |
|---|---|---|
from | il tema genitore | dark · light · scifi_dark · medieval_dark · … oppure un altro tema JSON. Le chiavi omesse ne ereditano i valori; un ciclo di ereditarietà fallisce |
palette | sfondo · tre superfici · bordo · tre toni di testo · accento · quattro colori di stato · scrim · ombra · traccia della barra | "#RRGGBB", l'alfa come "#RRGGBB@0.35" |
colori vividi solo per i riempimenti *_vivid | mantengono le barre sature anche quando il colore del testo deve scurirsi — omettine uno e il generatore te lo dice | |
| leggibilità | non si regola a mano. Testo, bordi, accento e l'etichetta che ci sta sopra vengono spinti dal generatore finché non superano le soglie — cambia solo l'accento e le verifiche continuano a passare | |
shape | kind | flat (arrotondato) · cut (angoli smussati) · medieval (cornici forgiate) |
| dimensioni | radius · radius_small · radius_large · gap · gap_small · gap_large · padding · button_height · button_padding[4] — i token seguono, così pannelli e calcoli dei widget non si contraddicono mai | |
solo per cut | cut_ratio · cut_max · corners (diagonal|all) · glow · edge | |
solo per medieval | material (0 ferro · 1 cuoio · 2 pergamena) · grain_alpha · ornament_scale · bevel_strength · fonts — title, subtitle, caption, body, button associati a file di font res:// locali all'add-on | |
skin | base — la famiglia per i punti in cui il codice disegna da sé (joystick, slot, badge, anello del coach mark, chip, divisori) | default · scifi · medieval |
dials — i numeri di quei punti: larghezza e tinta del bordo degli slot, margine interno dei badge, opacità di chip e avvisi, larghezza e opacità dell'anello del joystick, dimensioni degli smussi sci-fi, bagliore e staffa | Ogni valore del genitore è scritto per esteso nel JSON. Il generatore li scrive dentro themes/skins/gohud_skin_<id>.tres — nessun codice di skin viene toccato. Solo per cambiare i disegni veri e propri esegui --new-skin, che genera lo scheletro di una sottoclasse di GoSkin | |
icons | il set di icone | un percorso res:// a una risorsa GoIconSet — se omesso, si mantiene quello di un genitore JSON |
dark · title | come il selettore lo mostra | booleano · stringa |
Ogni manopola
La tabella qui sotto viene riempita da tools/make_site.py direttamente dalle righe
@export degli script delle skin — aggiungi una manopola o cambia un valore predefinito e la tabella segue. Usa questi nomi sotto
skin.dials nel JSON. Una manopola il cui valore predefinito è scritto 14 è un intero, una che è scritta
10.0 un float — scrivi pure l'una o l'altra forma nel JSON e il generatore converte al tipo dello script.
Skin default GoSkin — 17
| Manopola | Predefinito | Che cosa imposta |
|---|---|---|
chip_fill_alpha | 0.16 | Opacità del riempimento del pannello di un chip. |
chip_edge_alpha | 0.45 | Opacità del bordo del pannello di un chip. |
alert_tint | 0.1 | Quanto il pannello di un riquadro di avviso è tinto verso il suo colore di stato. |
slot_tint_lit | 0.24 | Tinta d'accento del pannello di uno slot rapido mentre scorre la sua ricarica. |
slot_tint_idle | 0.08 | Tinta d'accento del pannello di uno slot rapido a riposo. |
slot_border_lit | 2 | Larghezza del bordo (dp) di uno slot rapido mentre scorre la sua ricarica. |
slot_border_idle | 1 | Larghezza del bordo (dp) di uno slot rapido a riposo. |
badge_pad_x | 5 | Margine interno orizzontale (dp) di un badge (quantità, tempo rimanente). |
badge_pad_y | 1 | Margine interno verticale (dp) di un badge. |
badge_edge_alpha | 0.6 | Opacità del bordo del pannello di un badge. |
float_shadow_alpha | 0.45 | Opacità dell'ombra delle schede flottanti (coach mark, scheda di richiesta). |
float_shadow_size | 14 | Sfocatura dell'ombra (dp) delle schede flottanti. |
float_shadow_lift | 4 | Scostamento verso il basso (dp) dell'ombra di una scheda flottante. |
float_glow_size | 10.0 | Distanza del bagliore (dp) di un pannello flottante che brilla invece di proiettare un'ombra, come il pannello smussato sci-fi. |
joystick_base_alpha | 0.42 | Opacità del disco di base del joystick. |
joystick_ring_alpha | 0.45 | Opacità dell'anello del joystick. |
joystick_ring_width | 2.0 | Larghezza (dp) dell'anello del joystick. |
Skin sci-fi GoSkinSciFi — 10
| Manopola | Predefinito | Che cosa imposta |
|---|---|---|
cut_chip | 7.0 | Dimensione dello smusso (dp) del pannello di un chip. |
cut_skeleton | 5.0 | Dimensione dello smusso (dp) di un pannello scheletro. |
cut_alert | 8.0 | Dimensione dello smusso (dp) di un riquadro di avviso. |
cut_segment | 8.0 | Dimensione dello smusso (dp) di un controllo segmentato. |
cut_slot | 6.0 | Dimensione dello smusso (dp) del pannello di uno slot rapido. |
cut_disc_ratio | 0.24 | Smusso di avatar e dischi = diametro × questo rapporto. |
slot_glow_alpha | 0.45 | Opacità del bagliore di uno slot la cui ricarica sta scorrendo. |
slot_glow_size | 6.0 | Distanza del bagliore (dp) di uno slot la cui ricarica sta scorrendo. |
bracket_arm | 12.0 | Lunghezza del braccio (dp) della staffa di mira del coach mark. |
bracket_thickness | 2.0 | Spessore della linea (dp) della staffa di mira del coach mark. |
Skin medievale GoSkinMedieval — 5
| Manopola | Predefinito | Che cosa imposta |
|---|---|---|
slot_radius | 4.0 | Raggio degli angoli (dp) della cornice medievale degli slot rapidi. |
leather_grain_alpha | 0.035 | Opacità dei segni discreti del cuoio dentro gli slot rapidi. |
ornament_scale | 1.0 | Scala delle decorazioni metalliche agli angoli degli slot rapidi. Le cornici dei menu usano shape.ornament_scale. |
bevel_strength | 0.18 | Intensità della luce metallica lungo i bordi degli slot rapidi. |
slot_rivets | 1 | Mostra piccoli rivetti metallici sugli slot rapidi: 0 li nasconde, 1 li mostra. |
Estendere la skin (facoltativo)
Nella skin vive solo ciò a cui tema e forma non arrivano — l'esagono del joystick, i badge degli slot, la staffa
di mira del coach mark. Estendi GoSkin, sovrascrivi solo quei metodi e fai puntare a quella risorsa la chiave
skin del JSON. Un tema di soli colori salta questo passaggio.
tools/check_scaffold.sh crea un tema usa e getta a ogni esecuzione —
cambia l'accento, porta il raggio a 4 — e verifica generazione, propagazione dei token e un passaggio di contrasto
pulito prima di rimuoverlo. La prima esecuzione ha scoperto che un tema con il solo accento cambiato falliva
8 coppie: il generatore spingeva i colori del testo ma usava l'accento così com'era scritto. Ora spinge anche l'accento
e l'etichetta che ci sta sopra.