gohud

Twój własny preset — jeden plik

← Motywy

Dodanie motywu oznaczało kiedyś ręczną edycję w czterech miejscach — palety buildera, kształtu, skórki, zasobu presetu. Jedno polecenie ustawia teraz wszystkie.

python3 addons/gohud/tools/new_theme.py neon --from scifi_dark --title "Neon"
python3 addons/gohud/tools/make_theme.py neon      # .tres motywu + grafiki kontrolek
godot --headless --path . --import                  # zaimportuj nowe grafiki raz
GoUi.use_preset(&"neon")                             # gotowe — pokazuje się też w selektorze

Pierwsza linijka zapisuje themes/palettes/neon.json i themes/presets/neon.tres. JSON niesie każdą wartość motywu, po którym dziedziczy, wypisaną wprost, więc służy zarazem za listę tego, co możesz zmienić: usuń klucz, by zachować wartość rodzica, wpisz go, by ją nadpisać. Presety znajdowane są przez skanowanie themes/presets/, więc żaden kod rejestru się nie zmienia — lista rozwijana w ustawieniach projektu też je podchwyci.

Co możesz zmienić — na jednej stronie

GdzieCoJak
frommotyw rodzicadark · light · scifi_dark · medieval_dark · … albo inny motyw JSON. Pominięte klucze dziedziczą jego wartości; cykl dziedziczenia kończy się błędem
palettetło · trzy powierzchnie · obramowanie · trzy tony tekstu · akcent · cztery kolory statusów · zasłona · cień · tor paska"#RRGGBB", kanał alfa jako "#RRGGBB@0.35"
żywe kolory tylko do wypełnień *_vividutrzymują nasycenie pasków nawet wtedy, gdy kolor tekstu musi pociemnieć — pomiń któryś, a builder to zgłosi
czytelnośćnie strojona ręcznie. Tekst, obramowania, akcent i etykieta na nim są przesuwane przez buildera, aż przekroczą progi — zmień sam akcent, a kontrole i tak przejdą
shapekindflat (zaokrąglone) · cut (ścięte narożniki) · medieval (kute ramy)
rozmiaryradius · radius_small · radius_large · gap · gap_small · gap_large · padding · button_height · button_padding[4] — tokeny idą za nimi, więc panele i obliczenia widżetów nigdy się nie rozjeżdżają
tylko cutcut_ratio · cut_max · corners (diagonal|all) · glow · edge
tylko medievalmaterial (0 żelazo · 1 skóra · 2 pergamin) · grain_alpha · ornament_scale · bevel_strength · fontstitle, subtitle, caption, body, button przypisane do plików czcionek res:// wewnątrz dodatku
skinbase — rodzina dla miejsc, które kod rysuje sam (joystick, sloty, plakietki, pierścień wskazówki instruktażowej, chipy, separatory)default · scifi · medieval
dialsliczby tych miejsc: szerokość i zabarwienie obramowania slotu, margines wewnętrzny plakietki, krycie chipa i alertu, szerokość i krycie pierścienia joysticka, rozmiary fazowań sci-fi, poświata i ramka narożnaKażda wartość rodzica jest wypisana wprost w JSON-ie. Builder wpisuje je do themes/skins/gohud_skin_<id>.tresżaden kod skórki nie zostaje ruszony. Dopiero po to, by zmienić same rysunki, uruchamiasz --new-skin, który tworzy szkielet podklasy GoSkin
iconszestaw ikonścieżka res:// do zasobu GoIconSet — po pominięciu zachowywana po rodzicu JSON
dark · titlejak pokazuje go selektorwartość logiczna · ciąg znaków

Wszystkie pokrętła

Tabelę poniżej wypełnia tools/make_site.py wprost z linii @export w skryptach skórek — dodaj pokrętło albo zmień wartość domyślną, a tabela pójdzie za tym. Używaj tych nazw pod skin.dials w JSON-ie. Pokrętło, którego domyślna wartość brzmi 14, jest liczbą całkowitą, a takie, które brzmi 10.0 — zmiennoprzecinkową; wpisz w JSON-ie dowolną formę, a builder rzutuje ją na typ ze skryptu.

Skórka domyślna GoSkin — 17

PokrętłoDomyślnieCo ustawia
chip_fill_alpha0.16Krycie wypełnienia panelu chipa.
chip_edge_alpha0.45Krycie krawędzi panelu chipa.
alert_tint0.1Jak mocno panel alertu jest zabarwiony w stronę swojego koloru statusu.
slot_tint_lit0.24Zabarwienie akcentem panelu szybkiego slotu w trakcie odnowienia.
slot_tint_idle0.08Zabarwienie akcentem panelu szybkiego slotu w spoczynku.
slot_border_lit2Szerokość obramowania szybkiego slotu (dp) w trakcie odnowienia.
slot_border_idle1Szerokość obramowania szybkiego slotu (dp) w spoczynku.
badge_pad_x5Poziomy margines wewnętrzny (dp) plakietki (liczba, pozostały czas).
badge_pad_y1Pionowy margines wewnętrzny (dp) plakietki.
badge_edge_alpha0.6Krycie krawędzi panelu plakietki.
float_shadow_alpha0.45Krycie cienia pływających kart (wskazówka instruktażowa, karta pytania).
float_shadow_size14Rozmycie cienia (dp) pływających kart.
float_shadow_lift4Przesunięcie cienia pływającej karty w dół (dp).
float_glow_size10.0Zasięg poświaty (dp) pływającego panelu, który świeci zamiast rzucać cień, jak ścięty panel sci-fi.
joystick_base_alpha0.42Krycie dysku podstawy joysticka.
joystick_ring_alpha0.45Krycie pierścienia joysticka.
joystick_ring_width2.0Szerokość (dp) pierścienia joysticka.

Skórka sci-fi GoSkinSciFi — 10

PokrętłoDomyślnieCo ustawia
cut_chip7.0Rozmiar fazowania (dp) panelu chipa.
cut_skeleton5.0Rozmiar fazowania (dp) panelu szkieletu.
cut_alert8.0Rozmiar fazowania (dp) pola alertu.
cut_segment8.0Rozmiar fazowania (dp) kontrolki segmentowej.
cut_slot6.0Rozmiar fazowania (dp) panelu szybkiego slotu.
cut_disc_ratio0.24Fazowanie awatarów i dysków = średnica × ten współczynnik.
slot_glow_alpha0.45Krycie poświaty slotu, którego odnowienie trwa.
slot_glow_size6.0Zasięg poświaty (dp) slotu, którego odnowienie trwa.
bracket_arm12.0Długość ramienia (dp) ramki celowniczej wskazówki instruktażowej.
bracket_thickness2.0Grubość linii (dp) ramki celowniczej wskazówki instruktażowej.

Skórka średniowieczna GoSkinMedieval — 5

PokrętłoDomyślnieCo ustawia
slot_radius4.0Promień narożnika (dp) średniowiecznej ramy szybkiego slotu.
leather_grain_alpha0.035Krycie subtelnych znaków skóry wewnątrz szybkich slotów.
ornament_scale1.0Skala metalowych zdobień w narożnikach szybkich slotów. Ramy menu używają shape.ornament_scale.
bevel_strength0.18Siła metalowego podświetlenia wzdłuż krawędzi szybkich slotów.
slot_rivets1Pokazuj małe metalowe nity na szybkich slotach: 0 je ukrywa, 1 pokazuje.

Odziedzicz po skórce (opcjonalnie)

W skórce mieszka tylko to, czego motyw i kształt nie sięgają — sześciokąt joysticka, plakietki slotów, ramka celownicza wskazówki instruktażowej. Odziedzicz po GoSkin, nadpisz wyłącznie te metody i wskaż skin w JSON-ie na ten zasób. Motyw zmieniający same kolory pomija ten krok.

Kontrola pilnuje tej obietnicy. tools/check_scaffold.sh przy każdym przebiegu tworzy jednorazowy motyw — zmienia akcent, ustawia promień na 4 — i sprawdza generowanie, propagację tokenów oraz czysty wynik kontrastu, zanim go usunie. Pierwszy przebieg wykrył, że motyw ze zmienionym tylko akcentem oblewa 8 par: builder przesuwał kolory tekstu, ale akcentu używał tak, jak go zapisano. Teraz przesuwa także akcent i etykietę na nim.