gohud

Ваш власний пресет — один файл

← Оформлення

Раніше додати тему означало правити вручну чотири місця — палітру конструктора, форму, скін, ресурс пресету. Тепер одна команда ставить усе це на місце.

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тримають смуги насиченими навіть тоді, коли колір тексту доводиться затемнити — пропустіть один, і конструктор про це скаже
читабельністьне налаштовується вручну. Текст, рамки, акцент і напис на ньому конструктор підіймає, доки вони не перевищать пороги — змініть лише акцент, і перевірки все одно пройдуть
shapekindflat (заокруглені) · cut (зрізані кути) · medieval (ковані рами)
розміриradius · radius_small · radius_large · gap · gap_small · gap_large · padding · button_height · button_padding[4] — токени йдуть услід, тож панелі й розрахунки віджетів ніколи не розходяться
лише для cutcut_ratio · cut_max · corners (diagonal|all) · glow · edge
лише для medievalmaterial (0 залізо · 1 шкіра · 2 пергамент) · grain_alpha · ornament_scale · bevel_strength · fontstitle, subtitle, caption, body, button, зіставлені з файлами шрифтів res://, що лежать у доповненні
skinbase — родина для місць, які код малює сам (стик, слоти, бейджі, кільце коуч-мітки, чипи, роздільники)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_alpha0.16Непрозорість заливки панелі чипа.
chip_edge_alpha0.45Непрозорість краю панелі чипа.
alert_tint0.1Наскільки панель сповіщення підфарбовується в бік свого кольору статусу.
slot_tint_lit0.24Акцентне підфарбування панелі швидкого слота, поки триває відкат.
slot_tint_idle0.08Акцентне підфарбування панелі швидкого слота в спокої.
slot_border_lit2Ширина рамки швидкого слота (dp), поки триває відкат.
slot_border_idle1Ширина рамки швидкого слота (dp) у спокої.
badge_pad_x5Горизонтальне внутрішнє поле (dp) бейджа (кількість, час, що лишився).
badge_pad_y1Вертикальне внутрішнє поле (dp) бейджа.
badge_edge_alpha0.6Непрозорість краю панелі бейджа.
float_shadow_alpha0.45Непрозорість тіні плаваючих карток (коуч-мітка, картка-запит).
float_shadow_size14Розмиття тіні (dp) плаваючих карток.
float_shadow_lift4Зсув тіні плаваючої картки вниз (dp).
float_glow_size10.0Відстань сяйва (dp) для плаваючої панелі, яка сяє замість того, щоб кидати тінь, як-от сай-фай панель зі зрізаними кутами.
joystick_base_alpha0.42Непрозорість опорного диска стика.
joystick_ring_alpha0.45Непрозорість кільця стика.
joystick_ring_width2.0Ширина (dp) кільця стика.

Сай-фай скін GoSkinSciFi — 10

РегуляторТипове значенняЩо задає
cut_chip7.0Розмір фаски (dp) панелі чипа.
cut_skeleton5.0Розмір фаски (dp) панелі-скелетона.
cut_alert8.0Розмір фаски (dp) панелі сповіщення.
cut_segment8.0Розмір фаски (dp) сегментованого контрола.
cut_slot6.0Розмір фаски (dp) панелі швидкого слота.
cut_disc_ratio0.24Фаска аватарів і дисків = діаметр × це співвідношення.
slot_glow_alpha0.45Непрозорість сяйва слота, у якого триває відкат.
slot_glow_size6.0Відстань сяйва (dp) слота, у якого триває відкат.
bracket_arm12.0Довжина плеча (dp) прицільної дужки коуч-мітки.
bracket_thickness2.0Товщина лінії (dp) прицільної дужки коуч-мітки.

Середньовічний скін GoSkinMedieval — 5

РегуляторТипове значенняЩо задає
slot_radius4.0Радіус кутів (dp) середньовічної рами швидкого слота.
leather_grain_alpha0.035Непрозорість ледь помітних слідів шкіри всередині швидких слотів.
ornament_scale1.0Масштаб металевих оздоб на кутах швидких слотів. Рами меню беруть shape.ornament_scale.
bevel_strength0.18Сила металевого відблиску вздовж країв швидкого слота.
slot_rivets1Показувати на швидких слотах маленькі металеві заклепки: 0 — ховає, 1 — показує.

Успадкувати скін (необов'язково)

У скіні живе лише те, куди не дістаються тема та форма — шестикутник стика, бейджі слотів, прицільна дужка коуч-мітки. Успадкуйте GoSkin, перевизначте саме ці методи й вкажіть у полі skin вашого JSON на цей ресурс. Тема, що міняє лише кольори, цей крок пропускає.

Обіцянку стереже перевірка. tools/check_scaffold.sh щоразу створює одноразову тему — міняє акцент, ставить радіус у 4 — і перевіряє генерацію, поширення токенів і чистий прохід за контрастом, перш ніж її видалити. Перший же прогін виявив, що тема, у якій змінили лише акцент, провалює 8 пар: конструктор підіймав кольори тексту, але брав акцент таким, як написано. Тепер він підіймає й акцент, і напис на ньому.