Раніше додати тему означало правити вручну чотири місця — палітру конструктора, форму, скін, ресурс пресету. Тепер одна команда ставить усе це на місце.
python3 addons/gohud/tools/new_theme.py neon --from scifi_dark --title "Neon"
python3 addons/gohud/tools/make_theme.py neon # тема .tres + графіка контролів
godot --headless --path . --import # один раз імпортувати нову графіку
GoUi.use_preset(&"neon") # готово — вона з'явиться й у списку вибору
Перший рядок пише themes/palettes/neon.json і themes/presets/neon.tres. Цей
JSON несе кожне значення теми, від якої успадковується, повністю розписане, тож він заразом править
за список того, що можна змінити: видаліть ключ, щоб зберегти батьківське значення, або впишіть його, щоб
перевизначити. Пресети знаходяться скануванням теки themes/presets/, тож коду реєстру
міняти не треба — випадний список у параметрах проєкту теж їх підхопить.
Що можна змінити — на одній сторінці
| Де | Що | Як |
|---|---|---|
from | батьківська тема | dark · light · scifi_dark · medieval_dark · … або інша тема в JSON. Пропущені ключі успадковують її значення; цикл успадкування завершується помилкою |
palette | тло · три поверхні · рамка · три відтінки тексту · акцент · чотири кольори статусів · завіса · тінь · жолоб смуги | "#RRGGBB", альфа як "#RRGGBB@0.35" |
яскраві кольори лише для заливки *_vivid | тримають смуги насиченими навіть тоді, коли колір тексту доводиться затемнити — пропустіть один, і конструктор про це скаже | |
| читабельність | не налаштовується вручну. Текст, рамки, акцент і напис на ньому конструктор підіймає, доки вони не перевищать пороги — змініть лише акцент, і перевірки все одно пройдуть | |
shape | kind | flat (заокруглені) · cut (зрізані кути) · medieval (ковані рами) |
| розміри | radius · radius_small · radius_large · gap · gap_small · gap_large · padding · button_height · button_padding[4] — токени йдуть услід, тож панелі й розрахунки віджетів ніколи не розходяться | |
лише для cut | cut_ratio · cut_max · corners (diagonal|all) · glow · edge | |
лише для medieval | material (0 залізо · 1 шкіра · 2 пергамент) · grain_alpha · ornament_scale · bevel_strength · fonts — title, subtitle, caption, body, button, зіставлені з файлами шрифтів res://, що лежать у доповненні | |
skin | base — родина для місць, які код малює сам (стик, слоти, бейджі, кільце коуч-мітки, чипи, роздільники) | default · scifi · medieval |
dials — числа тих місць: ширина рамки слота й підфарбування, поля бейджа, непрозорість чипів і сповіщень, ширина та непрозорість кільця стика, розміри сай-фай фасок, сяйво й дужки | Кожне батьківське значення розписане в JSON. Конструктор записує їх у themes/skins/gohud_skin_<id>.tres — коду скіна ніхто не чіпає. Лише щоб змінити самі малюнки, запускають --new-skin, який створює каркас підкласу GoSkin | |
icons | набір іконок | шлях res:// до ресурсу GoIconSet — якщо пропустити, береться від батька в JSON |
dark · title | як його показує список вибору | булеве значення · рядок |
Усі регулятори
Таблицю нижче заповнює tools/make_site.py просто з рядків @export
у скриптах скінів — додайте регулятор чи змініть типове значення, і таблиця піде услід. Уживайте ці імена під
skin.dials у JSON. Регулятор, чиє типове значення читається як 14, — ціле число, а той,
що читається як 10.0, — дробове; пишіть у JSON будь-яку форму, конструктор зведе її до типу зі скрипта.
Стандартний скін GoSkin — 17
| Регулятор | Типове значення | Що задає |
|---|---|---|
chip_fill_alpha | 0.16 | Непрозорість заливки панелі чипа. |
chip_edge_alpha | 0.45 | Непрозорість краю панелі чипа. |
alert_tint | 0.1 | Наскільки панель сповіщення підфарбовується в бік свого кольору статусу. |
slot_tint_lit | 0.24 | Акцентне підфарбування панелі швидкого слота, поки триває відкат. |
slot_tint_idle | 0.08 | Акцентне підфарбування панелі швидкого слота в спокої. |
slot_border_lit | 2 | Ширина рамки швидкого слота (dp), поки триває відкат. |
slot_border_idle | 1 | Ширина рамки швидкого слота (dp) у спокої. |
badge_pad_x | 5 | Горизонтальне внутрішнє поле (dp) бейджа (кількість, час, що лишився). |
badge_pad_y | 1 | Вертикальне внутрішнє поле (dp) бейджа. |
badge_edge_alpha | 0.6 | Непрозорість краю панелі бейджа. |
float_shadow_alpha | 0.45 | Непрозорість тіні плаваючих карток (коуч-мітка, картка-запит). |
float_shadow_size | 14 | Розмиття тіні (dp) плаваючих карток. |
float_shadow_lift | 4 | Зсув тіні плаваючої картки вниз (dp). |
float_glow_size | 10.0 | Відстань сяйва (dp) для плаваючої панелі, яка сяє замість того, щоб кидати тінь, як-от сай-фай панель зі зрізаними кутами. |
joystick_base_alpha | 0.42 | Непрозорість опорного диска стика. |
joystick_ring_alpha | 0.45 | Непрозорість кільця стика. |
joystick_ring_width | 2.0 | Ширина (dp) кільця стика. |
Сай-фай скін GoSkinSciFi — 10
| Регулятор | Типове значення | Що задає |
|---|---|---|
cut_chip | 7.0 | Розмір фаски (dp) панелі чипа. |
cut_skeleton | 5.0 | Розмір фаски (dp) панелі-скелетона. |
cut_alert | 8.0 | Розмір фаски (dp) панелі сповіщення. |
cut_segment | 8.0 | Розмір фаски (dp) сегментованого контрола. |
cut_slot | 6.0 | Розмір фаски (dp) панелі швидкого слота. |
cut_disc_ratio | 0.24 | Фаска аватарів і дисків = діаметр × це співвідношення. |
slot_glow_alpha | 0.45 | Непрозорість сяйва слота, у якого триває відкат. |
slot_glow_size | 6.0 | Відстань сяйва (dp) слота, у якого триває відкат. |
bracket_arm | 12.0 | Довжина плеча (dp) прицільної дужки коуч-мітки. |
bracket_thickness | 2.0 | Товщина лінії (dp) прицільної дужки коуч-мітки. |
Середньовічний скін GoSkinMedieval — 5
| Регулятор | Типове значення | Що задає |
|---|---|---|
slot_radius | 4.0 | Радіус кутів (dp) середньовічної рами швидкого слота. |
leather_grain_alpha | 0.035 | Непрозорість ледь помітних слідів шкіри всередині швидких слотів. |
ornament_scale | 1.0 | Масштаб металевих оздоб на кутах швидких слотів. Рами меню беруть shape.ornament_scale. |
bevel_strength | 0.18 | Сила металевого відблиску вздовж країв швидкого слота. |
slot_rivets | 1 | Показувати на швидких слотах маленькі металеві заклепки: 0 — ховає, 1 — показує. |
Успадкувати скін (необов'язково)
У скіні живе лише те, куди не дістаються тема та форма — шестикутник стика, бейджі слотів, прицільна дужка
коуч-мітки. Успадкуйте GoSkin, перевизначте саме ці методи й вкажіть у полі skin
вашого JSON на цей ресурс. Тема, що міняє лише кольори, цей крок пропускає.
tools/check_scaffold.sh щоразу створює одноразову тему —
міняє акцент, ставить радіус у 4 — і перевіряє генерацію, поширення токенів і чистий прохід за контрастом,
перш ніж її видалити. Перший же прогін виявив, що тема, у якій змінили лише акцент, провалює 8 пар:
конструктор підіймав кольори тексту, але брав акцент таким, як написано. Тепер він підіймає й акцент,
і напис на ньому.