gohud

Preset Anda sendiri — satu berkas

← Tema

Dahulu menambah sebuah tema berarti menyunting empat tempat secara manual — palet pembangun tema, bentuknya, sebuah skin, dan sebuah resource preset. Kini satu perintah menempatkan semuanya sekaligus.

python3 addons/gohud/tools/new_theme.py neon --from scifi_dark --title "Neon"
python3 addons/gohud/tools/make_theme.py neon      # .tres tema + gambar kontrol
godot --headless --path . --import                  # impor gambar barunya sekali saja
GoUi.use_preset(&"neon")                             # selesai — ia muncul di pemilih juga

Baris pertama menulis themes/palettes/neon.json dan themes/presets/neon.tres. JSON-nya membawa setiap nilai dari tema yang diwarisinya, dijabarkan seluruhnya, sehingga sekaligus berfungsi sebagai daftar apa saja yang bisa Anda ubah: hapus sebuah kunci untuk mempertahankan nilai induknya, tulis satu untuk menimpanya. Preset ditemukan dengan memindai themes/presets/, jadi tidak ada kode registri yang perlu diubah — dropdown pada project setting pun langsung menangkapnya.

Apa yang bisa Anda ubah — dalam satu halaman

Di manaApaBagaimana
fromtema indukdark · light · scifi_dark · medieval_dark · … atau tema JSON lain. Kunci yang dihilangkan mewarisi nilainya; siklus pewarisan akan gagal
palettebackground · tiga surface · border · tiga nada teks · accent · empat warna status · scrim · shadow · alur bar"#RRGGBB", alfa sebagai "#RRGGBB@0.35"
warna cerah khusus isian *_vividmenjaga bar tetap pekat bahkan saat warna teksnya harus digelapkan — hilangkan satu dan pembangun tema akan memberi tahu
keterbacaantidak disetel manual. Teks, garis tepi, warna aksen, dan label di atasnya didorong oleh pembangun tema sampai melewati ambang batasnya — ubah aksennya saja dan pemeriksaannya tetap lolos
shapekindflat (membulat) · cut (sudut terpotong) · medieval (bingkai tempaan)
ukuranradius · radius_small · radius_large · gap · gap_small · gap_large · padding · button_height · button_padding[4] — token ikut menyesuaikan, sehingga panel dan perhitungan widget tidak pernah berselisih
khusus cutcut_ratio · cut_max · corners (diagonal|all) · glow · edge
khusus medievalmaterial (0 besi · 1 kulit · 2 perkamen) · grain_alpha · ornament_scale · bevel_strength · fontstitle, subtitle, caption, body, button dipetakan ke berkas font res:// di dalam add-on
skinbase — keluarga untuk tempat-tempat yang digambar kode sendiri (joystick, slot, lencana, cincin coach mark, chip, pemisah)default · scifi · medieval
dialsangka-angka dari tempat-tempat itu: lebar garis tepi dan rona slot, padding lencana, opasitas chip dan peringatan, lebar dan opasitas cincin joystick, ukuran chamfer sci-fi, pendar, dan kurungSetiap nilai induk dijabarkan di dalam JSON. Pembangun tema menuliskannya ke themes/skins/gohud_skin_<id>.trestidak ada kode skin yang disentuh. Hanya untuk mengubah gambarnya sendirilah Anda menjalankan --new-skin, yang menyiapkan kerangka subkelas GoSkin
iconsset ikonsebuah path res:// ke resource GoIconSet — dipertahankan dari induk JSON bila dihilangkan
dark · titlecara pemilih menampilkannyaboolean · string

Setiap kenop

Tabel di bawah ini diisi oleh tools/make_site.py langsung dari baris @export pada skrip skin — tambahkan sebuah kenop atau ubah nilai defaultnya dan tabelnya ikut menyesuaikan. Pakai nama-nama ini di bawah skin.dials di dalam JSON. Kenop yang defaultnya tertulis 14 adalah integer, yang tertulis 10.0 adalah float — tulis bentuk mana pun di JSON dan pembangun tema akan mengonversinya ke tipe milik skrip.

Skin default GoSkin — 17

KenopDefaultApa yang diaturnya
chip_fill_alpha0.16Opasitas isian panel sebuah chip.
chip_edge_alpha0.45Opasitas tepi panel sebuah chip.
alert_tint0.1Seberapa jauh panel kotak peringatan dironai ke arah warna statusnya.
slot_tint_lit0.24Rona aksen panel slot cepat selagi waktu jedanya berjalan.
slot_tint_idle0.08Rona aksen panel slot cepat saat diam.
slot_border_lit2Lebar garis tepi slot cepat (dp) selagi waktu jedanya berjalan.
slot_border_idle1Lebar garis tepi slot cepat (dp) saat diam.
badge_pad_x5Padding dalam horizontal (dp) sebuah lencana (jumlah, sisa waktu).
badge_pad_y1Padding dalam vertikal (dp) sebuah lencana.
badge_edge_alpha0.6Opasitas tepi panel sebuah lencana.
float_shadow_alpha0.45Opasitas bayangan kartu mengambang (coach mark, kartu ajakan).
float_shadow_size14Kaburnya bayangan (dp) kartu mengambang.
float_shadow_lift4Pergeseran ke bawah (dp) bayangan sebuah kartu mengambang.
float_glow_size10.0Jarak pendar (dp) panel mengambang yang berpendar alih-alih menjatuhkan bayangan, seperti panel bersudut potong sci-fi.
joystick_base_alpha0.42Opasitas cakram dasar joystick.
joystick_ring_alpha0.45Opasitas cincin joystick.
joystick_ring_width2.0Lebar (dp) cincin joystick.

Skin sci-fi GoSkinSciFi — 10

KenopDefaultApa yang diaturnya
cut_chip7.0Ukuran chamfer (dp) panel sebuah chip.
cut_skeleton5.0Ukuran chamfer (dp) panel kerangka pemuatan.
cut_alert8.0Ukuran chamfer (dp) sebuah kotak peringatan.
cut_segment8.0Ukuran chamfer (dp) sebuah kontrol tersegmentasi.
cut_slot6.0Ukuran chamfer (dp) panel slot cepat.
cut_disc_ratio0.24Chamfer avatar dan cakram = diameter × rasio ini.
slot_glow_alpha0.45Opasitas pendar sebuah slot yang waktu jedanya sedang berjalan.
slot_glow_size6.0Jarak pendar (dp) sebuah slot yang waktu jedanya sedang berjalan.
bracket_arm12.0Panjang lengan (dp) kurung penanda sasaran pada coach mark.
bracket_thickness2.0Ketebalan garis (dp) kurung penanda sasaran pada coach mark.

Skin abad pertengahan GoSkinMedieval — 5

KenopDefaultApa yang diaturnya
slot_radius4.0Radius sudut (dp) bingkai slot cepat abad pertengahan.
leather_grain_alpha0.035Opasitas guratan kulit yang samar di dalam slot cepat.
ornament_scale1.0Skala hiasan logam di sudut-sudut slot cepat. Bingkai menu memakai shape.ornament_scale.
bevel_strength0.18Kekuatan sorotan logam di sepanjang tepi slot cepat.
slot_rivets1Menampilkan paku keling logam kecil pada slot cepat: 0 menyembunyikannya, 1 menampilkannya.

Turunkan kelas skin (opsional)

Hanya apa yang tak terjangkau tema dan bentuk — heksagon joystick, lencana slot, kurung penanda sasaran pada coach mark — yang tinggal di dalam sebuah skin. Turunkan GoSkin, timpa metode-metode itu saja, lalu arahkan kolom skin di JSON ke resource tersebut. Tema yang hanya mengubah warna melewatkan langkah ini.

Sebuah pemeriksaan menjaga janji itu. tools/check_scaffold.sh membuat tema sekali pakai pada setiap jalan uji — mengubah aksennya, menyetel radiusnya ke 4 — lalu memverifikasi generasi, perambatan token, dan kelulusan kontras sebelum menghapusnya. Jalan uji pertama menemukan sebuah tema yang hanya diubah aksennya gagal pada 8 pasangan: pembangun tema mendorong warna teks tetapi memakai aksennya apa adanya. Kini ia mendorong aksen dan label di atasnya juga.