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 · fonts — title, 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
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ż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.

Skórka Material GoSkinMaterial — 2

PokrętłoDomyślnieCo ustawia
segment_gap2.0Odstęp (dp) między komórkami połączonej grupy przycisków Material.
segment_inner_radius8Promień narożnika (dp) w miejscu, gdzie stykają się dwie komórki połączonej grupy przycisków Material.

Skórka Kids GoSkinKids — 3

PokrętłoDomyślnieCo ustawia
toy_edge2Grubość obrysu (dp) zabawkowej części Kids — chipów, slotów, FAB, alertów.
toy_lip4Solidna krawędź (dp) pod zabawkową częścią Kids, którą się naciska; zmniejsza się, gdy część jest naciśnięta.
crayon_tint0.28Ile koloru kredki wypełnia powierzchnię slotu lub chipa Kids (0–1); reszta to kolor powierzchni.

Skórka Comic GoSkinComic — 1

PokrętłoDomyślnieCo ustawia
comic_tint0.22Ile własnego koloru wypełnia chip, szybki slot lub wybraną pigułkę Comic (0–1); reszta to kolor powierzchni.

Skórka Arcade GoSkinArcade — 3

PokrętłoDomyślnieCo ustawia
arcade_edge3Grubość obrysu tuszem (dp) części malowanej przez skórkę Arcade — slotów, chipów, plakietek, wstęgi tytułu, FAB.
arcade_lip4Krawędź (dp) pod naciskaną częścią Arcade — klawiszami, chipami, slotami, FAB; znika po naciśnięciu części.
arcade_gloss0.85Siła białej smugi połysku na malowanej części Arcade (0–1).

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.