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
| Gdzie | Co | Jak |
|---|---|---|
from | motyw rodzica | dark · light · scifi_dark · medieval_dark · … albo inny motyw JSON. Pominięte klucze dziedziczą jego wartości; cykl dziedziczenia kończy się błędem |
palette | tł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ń *_vivid | utrzymują 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ą | |
shape | kind | flat (zaokrąglone) · cut (ścięte narożniki) · medieval (kute ramy) |
| rozmiary | radius · 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 cut | cut_ratio · cut_max · corners (diagonal|all) · glow · edge | |
tylko medieval | material (0 żelazo · 1 skóra · 2 pergamin) · grain_alpha · ornament_scale · bevel_strength · fonts — title, subtitle, caption, body, button przypisane do plików czcionek res:// wewnątrz dodatku | |
skin | base — rodzina dla miejsc, które kod rysuje sam (joystick, sloty, plakietki, pierścień wskazówki instruktażowej, chipy, separatory) | default · scifi · medieval |
dials — liczby 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żna | Każ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 | |
icons | zestaw ikon | ścieżka res:// do zasobu GoIconSet — po pominięciu zachowywana po rodzicu JSON |
dark · title | jak pokazuje go selektor | wartość 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ło | Domyślnie | Co ustawia |
|---|---|---|
chip_fill_alpha | 0.16 | Krycie wypełnienia panelu chipa. |
chip_edge_alpha | 0.45 | Krycie krawędzi panelu chipa. |
alert_tint | 0.1 | Jak mocno panel alertu jest zabarwiony w stronę swojego koloru statusu. |
slot_tint_lit | 0.24 | Zabarwienie akcentem panelu szybkiego slotu w trakcie odnowienia. |
slot_tint_idle | 0.08 | Zabarwienie akcentem panelu szybkiego slotu w spoczynku. |
slot_border_lit | 2 | Szerokość obramowania szybkiego slotu (dp) w trakcie odnowienia. |
slot_border_idle | 1 | Szerokość obramowania szybkiego slotu (dp) w spoczynku. |
badge_pad_x | 5 | Poziomy margines wewnętrzny (dp) plakietki (liczba, pozostały czas). |
badge_pad_y | 1 | Pionowy margines wewnętrzny (dp) plakietki. |
badge_edge_alpha | 0.6 | Krycie krawędzi panelu plakietki. |
float_shadow_alpha | 0.45 | Krycie cienia pływających kart (wskazówka instruktażowa, karta pytania). |
float_shadow_size | 14 | Rozmycie cienia (dp) pływających kart. |
float_shadow_lift | 4 | Przesunięcie cienia pływającej karty w dół (dp). |
float_glow_size | 10.0 | Zasięg poświaty (dp) pływającego panelu, który świeci zamiast rzucać cień, jak ścięty panel sci-fi. |
joystick_base_alpha | 0.42 | Krycie dysku podstawy joysticka. |
joystick_ring_alpha | 0.45 | Krycie pierścienia joysticka. |
joystick_ring_width | 2.0 | Szerokość (dp) pierścienia joysticka. |
Skórka sci-fi GoSkinSciFi — 10
| Pokrętło | Domyślnie | Co ustawia |
|---|---|---|
cut_chip | 7.0 | Rozmiar fazowania (dp) panelu chipa. |
cut_skeleton | 5.0 | Rozmiar fazowania (dp) panelu szkieletu. |
cut_alert | 8.0 | Rozmiar fazowania (dp) pola alertu. |
cut_segment | 8.0 | Rozmiar fazowania (dp) kontrolki segmentowej. |
cut_slot | 6.0 | Rozmiar fazowania (dp) panelu szybkiego slotu. |
cut_disc_ratio | 0.24 | Fazowanie awatarów i dysków = średnica × ten współczynnik. |
slot_glow_alpha | 0.45 | Krycie poświaty slotu, którego odnowienie trwa. |
slot_glow_size | 6.0 | Zasięg poświaty (dp) slotu, którego odnowienie trwa. |
bracket_arm | 12.0 | Długość ramienia (dp) ramki celowniczej wskazówki instruktażowej. |
bracket_thickness | 2.0 | Grubość linii (dp) ramki celowniczej wskazówki instruktażowej. |
Skórka średniowieczna GoSkinMedieval — 5
| Pokrętło | Domyślnie | Co ustawia |
|---|---|---|
slot_radius | 4.0 | Promień narożnika (dp) średniowiecznej ramy szybkiego slotu. |
leather_grain_alpha | 0.035 | Krycie subtelnych znaków skóry wewnątrz szybkich slotów. |
ornament_scale | 1.0 | Skala metalowych zdobień w narożnikach szybkich slotów. Ramy menu używają shape.ornament_scale. |
bevel_strength | 0.18 | Siła metalowego podświetlenia wzdłuż krawędzi szybkich slotów. |
slot_rivets | 1 | Pokazuj 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.
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.