218 lines
9.2 KiB
YAML
218 lines
9.2 KiB
YAML
# Tema de la UI: índexs de paleta, timings, fonts i flags visuals. Tota
|
||
# clau absent cau al valor compilat a Defaults::UI (veure defaults.hpp).
|
||
|
||
colors:
|
||
render_info_text: 58
|
||
render_info_shadow: 16
|
||
canvas_bg: 72
|
||
notification_text: 232
|
||
notification_bg: 64
|
||
exit_text: 71
|
||
exit_bg: 2
|
||
menu_bg: 2
|
||
menu_border: 232
|
||
menu_title: 237
|
||
menu_label: 58
|
||
menu_value: 232
|
||
menu_cursor: 71
|
||
menu_disabled: 16
|
||
hud_bg: 9
|
||
hud_label: 58
|
||
hud_value: 187
|
||
hud_flash: 237
|
||
# Rètol de transició de sala (ROOM_INTRO i ROOM_OUTRO). Independents
|
||
# de notification_* perquè la fase i les notificacions són dos canals
|
||
# visuals distints: ací pots canviar el color del rètol sense tocar
|
||
# els missatges del HUD.
|
||
room_text: 160
|
||
room_text_outline: 253
|
||
|
||
timings:
|
||
notification_ms: 4000
|
||
exit_ms: 4000
|
||
|
||
fonts:
|
||
hud:
|
||
name: "8bithud"
|
||
gif: "data/fonts/8bithud.gif"
|
||
fnt: "data/fonts/8bithud.fnt"
|
||
kerning: 1
|
||
placeholder:
|
||
name: "ari-w9500-condensed-display"
|
||
gif: "data/fonts/ari-w9500-condensed-display.gif"
|
||
fnt: "data/fonts/ari-w9500-condensed-display.fnt"
|
||
kerning: 1
|
||
# Font del rètol de transició de sala (ROOM_INTRO i ROOM_OUTRO).
|
||
room_text:
|
||
name: "CaesarDressing-Regular"
|
||
gif: "data/fonts/CaesarDressing-Regular.gif"
|
||
fnt: "data/fonts/CaesarDressing-Regular.fnt"
|
||
kerning: 1
|
||
menu_title:
|
||
name: "ari-w9500-display"
|
||
gif: "data/fonts/ari-w9500-display.gif"
|
||
fnt: "data/fonts/ari-w9500-display.fnt"
|
||
kerning: 0
|
||
menu_items:
|
||
name: "ari-w9500-condensed-display"
|
||
gif: "data/fonts/ari-w9500-condensed-display.gif"
|
||
fnt: "data/fonts/ari-w9500-condensed-display.fnt"
|
||
kerning: 0
|
||
# Copyright de la TITLE: pixel-art estricte (Tiny5-Regular size 5,
|
||
# caixa 3×6 px) generat amb font-gen. Diferenciada de la `placeholder`
|
||
# que pinta el "press start" — així la jerarquia tipogràfica del peu
|
||
# queda neta.
|
||
copyright:
|
||
name: "Tiny5-Regular"
|
||
gif: "data/fonts/Tiny5-Regular.gif"
|
||
fnt: "data/fonts/Tiny5-Regular.fnt"
|
||
kerning: 1
|
||
|
||
hud:
|
||
bg_enabled: false
|
||
entry_ms: 800 # durada de l'animació d'entrada dels tres blocs
|
||
flash_ms: 250 # durada del flash quan un jugador rep un hit
|
||
shake_ms: 300 # durada del shake que acompanya el flash
|
||
|
||
# Geometria del popup superior (Notifier). En píxels del canvas, llevat de
|
||
# slide_ms (durada en ms de l'animació d'entrada i d'eixida; constant
|
||
# independentment de la mida de la caixa). El padding vertical és asimètric a
|
||
# propòsit: padding_top > padding_bottom puja una mica el text dins la caixa.
|
||
# Corbes disponibles: linear, outQuad, inQuad, inOutQuad, outCubic, inCubic.
|
||
notifier:
|
||
padding_h: 6
|
||
padding_top: 4
|
||
padding_bottom: 3
|
||
line_gap: 1
|
||
margin_top: 3
|
||
border_px: 1
|
||
slide_ms: 300
|
||
slide_in_curve: outCubic
|
||
slide_out_curve: inCubic
|
||
|
||
# Pausa graduada de la GameScene: el món no para d'un colp, s'atura amb
|
||
# easing i torna a arrancar amb una altra corba. Els timings es poden
|
||
# afinar independentment, i les corbes permeten estils diferents entrant
|
||
# i sortint (p.ex. frenar suau i arrancar seca). Corbes disponibles:
|
||
# linear, outQuad, inQuad, inOutQuad, outCubic, inCubic.
|
||
pause:
|
||
enter_ms: 400
|
||
exit_ms: 250
|
||
enter_curve: outCubic
|
||
exit_curve: inCubic
|
||
|
||
# Sons del menú de servei. Els fitxers viuen a data/sounds/. SELECT
|
||
# acompanya navegació (amunt/avall) i back; ACCEPT acompanya modificació
|
||
# d'opció (esquerra/dreta/retorn) o entrada a un submenú.
|
||
sounds:
|
||
menu_select: "menu_select.wav"
|
||
menu_accept: "menu_accept.wav"
|
||
# Disparat quan un jugador prem START a la TITLE (primera pulsació o
|
||
# la del segon jugador dins de la finestra de STARTING).
|
||
player_start: "player_start.wav"
|
||
# Soroll/scratch sincronitzat amb la fase SCAN de LogoScene (scanline
|
||
# reveal). Es dispara al constructor de l'escena.
|
||
logo_glitch: "glitch.wav"
|
||
|
||
# Escena TITLE (placeholder visual mentre no hi haja artwork).
|
||
# `bg_color` i `text_color` són índexs sobre la paleta "ui" (uzebox.pal):
|
||
# 1 = (36,0,0) gairebé negre amb un mínim de càlid; 31 = (255,109,0)
|
||
# taronja pur. `duration_ms` és el timeout abans de saltar a la
|
||
# següent escena (skipable amb tecla no reservada). Els dos
|
||
# `blink_*_ms` defineixen el cicle del prompt "press start": el text
|
||
# es veu durant `visible_ms` i s'amaga durant `hidden_ms` repetint-se.
|
||
title:
|
||
duration_ms: 30000
|
||
bg_color: 1
|
||
text_color: 31
|
||
# Color del text del © de copyright (peu de la TITLE). Off-white càlid:
|
||
# índex 183 = (255,218,170), tipus crema/peach, ~90% blanc amb tint càlid.
|
||
copyright_color: 183
|
||
# Color de l'outline del prompt "PRESS START". Marró fosc càlid (índex
|
||
# 19 = 109,72,0), coherent amb la paleta del logo. Es manté separat de
|
||
# `copyright_color` perquè l'outline i el text del © tenen rols visuals
|
||
# diferents (contrast vs. peu informatiu).
|
||
press_start_outline_color: 19
|
||
# Posicions Y dels tres elements verticals de la TITLE, en percentatge
|
||
# sobre l'alçada del canvas (240 px). El logo s'ancora pel seu top
|
||
# (la imatge cau cap avall des d'aquest Y); el prompt i el copyright
|
||
# es centren verticalment sobre la línia.
|
||
logo_y_percent: 15
|
||
prompt_y_percent: 68
|
||
copyright_y_percent: 92
|
||
# Separació vertical en píxels entre el minilogo i el text del © al peu.
|
||
mini_logo_gap_px: 2
|
||
blink_visible_ms: 800
|
||
blink_hidden_ms: 200
|
||
# Fase STARTING (entre la primera pulsació de START i el salt a la
|
||
# següent escena). `starting_ms` és la durada fixa; durant aquesta
|
||
# fase el parpadeig accelera per `starting_blink_speedup` (2.0 = doble
|
||
# de freqüència). Si l'altre jugador prem START dins d'aquesta
|
||
# finestra, el comptador es reseteja i s'arrenca amb BOTH.
|
||
starting_ms: 3000
|
||
# Durant STARTING el prompt commuta a un cicle simètric 50/50
|
||
# (visible/ocult) amb aquest període total. 200 ms = 5 Hz, prou
|
||
# ràpid per llegir-se com a "pulsació confirmada".
|
||
starting_blink_period_ms: 200
|
||
# Fade-out estil "mosaic dissolve" durant l'última part de STARTING.
|
||
# `fade_out_ms` ha de ser <= starting_ms (els últims X ms del STARTING
|
||
# es fan amb el dissolve actiu fins a quedar negre). `fade_out_max_block`
|
||
# és la mida màxima de bloc en píxels al final del fade.
|
||
fade_out_ms: 800
|
||
fade_out_max_block: 32
|
||
# Fade-out de `title.ogg` en entrar a STARTING. Independent del visual:
|
||
# la música pot acabar abans o després del mosaic dissolve.
|
||
music_fade_out_ms: 3000
|
||
# Fade-to-black per a la sortida d'attract (timeout cap a LOGO). NO és
|
||
# mosaic — capa negra lineal damunt del canvas. La música no es toca:
|
||
# `title.ogg` continua sonant cap a LOGO, que ja veurà què en fa.
|
||
attract_fade_to_black_ms: 800
|
||
# Seqüència d'aparició dels elements de la TITLE en fase IDLE. Tots
|
||
# els temps són absoluts des de l'entrada a l'escena. `fade_in_ms` és
|
||
# la capa negra inicial que s'esvaeix cap al fons; els altres marquen
|
||
# quan apareix cada element. Si l'usuari prem START en qualsevol
|
||
# moment, la seqüència es completa instantàniament.
|
||
intro:
|
||
fade_in_ms: 500 # fade-in negre inicial sobre el fons
|
||
game_logo_at_ms: 1500 # visibilitat binària del game_logo
|
||
mini_logo_at_ms: 2000 # inici del slide-in del mini-logo
|
||
mini_logo_slide_ms: 500 # durada del slide
|
||
copyright_at_ms: 2200 # inici del slide-in del copyright
|
||
copyright_slide_ms: 500 # durada del slide
|
||
slide_curve: outCubic # corba compartida per mini_logo i copyright
|
||
press_start_at_ms: 3000 # quan apareix PRESS START amb parpadeig
|
||
# Distorsió sinusoidal del fons (efecte de calor del desert).
|
||
# `amplitude_px`: desplaçament màxim de cada fila en píxels.
|
||
# `wavelength_px`: distància vertical entre dos pics de l'ona.
|
||
# `speed_hz`: velocitat amb què avança la fase (cicles per segon).
|
||
# Si `enabled` és false, el fons es pinta sense distorsió.
|
||
heat_haze:
|
||
enabled: true
|
||
amplitude_px: 1.5
|
||
wavelength_px: 32.0
|
||
speed_hz: 0.6
|
||
|
||
# Escena LOGO (logotip de l'editora). El revelat del logo a la fase SCAN
|
||
# imita un escaneig CRT: una banda lluminosa baixa de dalt a baix; per
|
||
# damunt es veu la imatge ja "impressa", per sota encara és negre. Al
|
||
# voltant de la banda hi ha glitch (offset horitzontal de files amb
|
||
# falloff per distància) i ocasionalment apareixen bursts VHS (franges
|
||
# desplaçades) damunt la part ja revelada. Quan la banda toca el peu del
|
||
# logo, un flash blanc tanca l'efecte i s'entra a MIDDLE (logo estable).
|
||
logo:
|
||
scan:
|
||
duration_ms: 1500 # durada total del scan top→bottom
|
||
band_height_px: 4 # alçada (px) de la banda lluminosa
|
||
band_alpha: 200 # opacitat (0..255) de la capa blanca de la banda
|
||
band_pulse_hz: 20.0 # freqüència del pulse de brillantor (Hz)
|
||
band_pulse_depth: 0.45 # profunditat del pulse (0..1; 0 = sense pulse)
|
||
# Glitch d'impacte (files al voltant de la banda)
|
||
glitch_amplitude_px: 6 # offset horitzontal màxim a la banda
|
||
glitch_band_radius_px: 12 # files damunt/sota la banda amb glitch (falloff lineal)
|
||
# Bursts VHS sobre la part ja revelada
|
||
vhs_burst_per_sec: 3 # bursts/segon mitjà
|
||
vhs_burst_duration_ms: 80 # durada de cada burst
|
||
vhs_burst_height_px: 8 # alçada de la franja afectada
|
||
vhs_burst_amplitude_px: 8 # offset horitzontal del burst
|
||
flash_ms: 100 # flash blanc final quan acaba el scan
|