gohud

Il tuo preset — un solo file

← Temi

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

DoveChe cosaCome
fromil tema genitoredark · light · scifi_dark · medieval_dark · … oppure un altro tema JSON. Le chiavi omesse ne ereditano i valori; un ciclo di ereditarietà fallisce
palettesfondo · 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 *_vividmantengono 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
shapekindflat (arrotondato) · cut (angoli smussati) · medieval (cornici forgiate)
dimensioniradius · 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 cutcut_ratio · cut_max · corners (diagonal|all) · glow · edge
solo per medievalmaterial (0 ferro · 1 cuoio · 2 pergamena) · grain_alpha · ornament_scale · bevel_strength · fontstitle, subtitle, caption, body, button associati a file di font res:// locali all'add-on
skinbase — 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 staffaOgni valore del genitore è scritto per esteso nel JSON. Il generatore li scrive dentro themes/skins/gohud_skin_<id>.tresnessun 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
iconsil set di iconeun percorso res:// a una risorsa GoIconSet — se omesso, si mantiene quello di un genitore JSON
dark · titlecome il selettore lo mostrabooleano · 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

ManopolaPredefinitoChe cosa imposta
chip_fill_alpha0.16Opacità del riempimento del pannello di un chip.
chip_edge_alpha0.45Opacità del bordo del pannello di un chip.
alert_tint0.1Quanto il pannello di un riquadro di avviso è tinto verso il suo colore di stato.
slot_tint_lit0.24Tinta d'accento del pannello di uno slot rapido mentre scorre la sua ricarica.
slot_tint_idle0.08Tinta d'accento del pannello di uno slot rapido a riposo.
slot_border_lit2Larghezza del bordo (dp) di uno slot rapido mentre scorre la sua ricarica.
slot_border_idle1Larghezza del bordo (dp) di uno slot rapido a riposo.
badge_pad_x5Margine interno orizzontale (dp) di un badge (quantità, tempo rimanente).
badge_pad_y1Margine interno verticale (dp) di un badge.
badge_edge_alpha0.6Opacità del bordo del pannello di un badge.
float_shadow_alpha0.45Opacità dell'ombra delle schede flottanti (coach mark, scheda di richiesta).
float_shadow_size14Sfocatura dell'ombra (dp) delle schede flottanti.
float_shadow_lift4Scostamento verso il basso (dp) dell'ombra di una scheda flottante.
float_glow_size10.0Distanza del bagliore (dp) di un pannello flottante che brilla invece di proiettare un'ombra, come il pannello smussato sci-fi.
joystick_base_alpha0.42Opacità del disco di base del joystick.
joystick_ring_alpha0.45Opacità dell'anello del joystick.
joystick_ring_width2.0Larghezza (dp) dell'anello del joystick.

Skin sci-fi GoSkinSciFi — 10

ManopolaPredefinitoChe cosa imposta
cut_chip7.0Dimensione dello smusso (dp) del pannello di un chip.
cut_skeleton5.0Dimensione dello smusso (dp) di un pannello scheletro.
cut_alert8.0Dimensione dello smusso (dp) di un riquadro di avviso.
cut_segment8.0Dimensione dello smusso (dp) di un controllo segmentato.
cut_slot6.0Dimensione dello smusso (dp) del pannello di uno slot rapido.
cut_disc_ratio0.24Smusso di avatar e dischi = diametro × questo rapporto.
slot_glow_alpha0.45Opacità del bagliore di uno slot la cui ricarica sta scorrendo.
slot_glow_size6.0Distanza del bagliore (dp) di uno slot la cui ricarica sta scorrendo.
bracket_arm12.0Lunghezza del braccio (dp) della staffa di mira del coach mark.
bracket_thickness2.0Spessore della linea (dp) della staffa di mira del coach mark.

Skin medievale GoSkinMedieval — 5

ManopolaPredefinitoChe cosa imposta
slot_radius4.0Raggio degli angoli (dp) della cornice medievale degli slot rapidi.
leather_grain_alpha0.035Opacità dei segni discreti del cuoio dentro gli slot rapidi.
ornament_scale1.0Scala delle decorazioni metalliche agli angoli degli slot rapidi. Le cornici dei menu usano shape.ornament_scale.
bevel_strength0.18Intensità della luce metallica lungo i bordi degli slot rapidi.
slot_rivets1Mostra 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.

Una verifica mantiene la promessa. 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.