U1: fix da playtest device (HUD panel, icone stat, testo menu)2026-07-19
Feedback di Ivan sui primi screenshot in-game.
- [fix] Pannello stats HUD più capiente.
HUD.tscn: il Panel da 200×244 → 224×254, contenuti estesi a destra (StatsBox/MoneyLabel offset_right 192→212, DayLabel 195→214) così "Giorno 1" e la riga ora/giorno non toccano più il bordo strappato del cartone (prima ~5px, dentro la cornice da 12px). La dimensione è nella scena; la posizione resta gestita da _apply_safe_area(). - [change] Rimosse le icone stat nuove a sinistra delle barre. Erano un doppione: l'HUD ha già le icone accanto alle etichette (
_insert_stat_icon: bread/sleep/shower/siren). Ripristinato _create_pixel_bar senza la colonna icona; gli asset stat_*.png restano in assets/ui/ per usi futuri. - [fix] Testo game over leggibile sul cartone.
ReasonLabel (tutto il corpo game over via _build_gameover_body): da bianco+contorno nero a inchiostro quasi-nero in grassetto — font_color/font_outline_color Color(0.11,0.06,0.02) con outline_size=1 (contorno stesso colore = tratto più spesso, da feedback "troppo sottile"), font 17→18. Legge come pennarello grosso su cartone invece di "staccare" col bianco freddo o sparire troppo fine. Stesso trattamento da estendere agli altri menu (main/opzioni/baracca) nella pass MainMenu. - [test] Compile-check
HUD.tscn + HUD.gd: 2/2 OK.
U1: asset cartone generati → importati e collegati (tema texture + HUD)2026-07-19
Ivan ha generato il kit da UI_AI_PROMPTS.md; qui viene importato e messo in gioco.
- [feat] Asset UI cartone importati in
assets/ui/ (chroma-key magenta→trasparente, soglia distanza <120; zero fringe perché downscalati nearest): panel_cardboard, panel_cardboard_dark, tape_strip, tape_corner_a, tape_corner_b, bar_frame, bar_fill, btn_sign_normal/pressed/focus (dal foglio 3 stati), stat_hunger/energy/hygiene/wanted (dal foglio 4×16), card_levelup, banner_event, perk_icons (foglio 4×4, tenuto per R2). Sorgenti magenta originali (incl. varianti tape v2) archiviati in sprites_raw/UI/ (LFS, non committati). - [feat] Tema: placeholder → texture vere.
default_theme.tres: StyleBoxFlat graybox sostituiti da StyleBoxTexture 9-patch con texture_margin dai valori di UI_AI_PROMPTS.md — CardboardPanel/CardboardPanelDark (12), CardboardButton (normal/pressed/focus 12·9, hover=focus, disabled=normal), StatBar (bar_frame 6·5 + bar_fill 2, tinto via self_modulate), PerkCard (14), BigNotifyBanner (24·8). Ogni UI che già dichiara le type variation (HUD, level-up, pausa, game over, countdown ondata) mostra ora il cartone vero senza altre modifiche. - [feat] HUD: scotch e icone stat veri.
_make_tape() usa tape_corner_a/b.png (TextureRect, alpha 0.78, nearest) al posto dei ColorRect placeholder di SU-45; _create_pixel_bar() antepone a ogni barra stat l'icona 16px (panino/zzz/saponetta/stella) via _make_icon_rect. Solo presentazione, zero logica. - [test] Compile-check mirato: HUD.gd + HUD.tscn + LevelUpScreen .tscn/.gd → 4/4 OK. Tema caricato: le 9
StyleBoxTexture risolvono tutte con texture non-null. Simulazione 9-patch (stretch a misure reali, PIL): corner integri, centro uniforme, bar_fill tinto verde/blu/turchese → docs/ui_restyle/00_theme_applied_sim.png. - [docs] Filtro texture di progetto
default_texture_filter=0 (nearest) → UI croccante senza config per-file. In assets/ui/ restano inutilizzati btn_sign.png/stat_icons.png (fogli interi: il gioco usa gli slice) e tape_*-v2.png (scelta scotch = v1) — eliminabili (delete file bloccato in sandbox). Non committato (index bloccato); LFS non toccato; resa su device da confermare.
U1: `UI_AI_PROMPTS.md` + tema cartone completo + level-up stilizzato2026-07-19
Sprint U1 (restyle "cartone, scotch e pennarello"), scope sessione concordato: U1.1 + refactor sicuro — MainMenu (168 add_theme_) NON toccato, rinviato.
- [docs]
UI_AI_PROMPTS.md (U1.1) — il manifest asset per Ivan. Stesso formato di BUILDINGS/NPC_AI_PROMPTS.md: protocollo ChatGPT, STYLE ANCHOR con ABSOLUTE RULE sfondo magenta, regole 9-patch e fogli multi-icona, blocchi (A) prompt / (B) avoid, OUTPUT SPEC con px sorgente+finale. Kit completo: pannello cartone chiaro/scuro, 3 scotch, cornice+riempimento barra, 4 icone stat 16×16, carta perk 96×128, bottone-cartello 3 stati, striscione, 16 icone perk. Grana misurata sugli sprite reali (item 16×16 1:1, personaggi 32×32) → UI alla stessa densità. 2 palette proposte (A ocra calda / B grigia fredda), Ivan sceglie generando. Mappa asset→type variation + note import (nearest, mipmaps off, self_modulate coi colori stat di HUD.gd). - [feat] Generato
1.1 — panel_cardboard.png. Primo asset reale del kit U1 in palette A ocra: texture RGB 48×48, sfondo chroma-key magenta puro, outline pixel netto, margini 9-patch 12 px e centro 24×24 uniforme; salvata in assets/ui/ senza ancora collegarla al tema placeholder. - [feat] Generato
1.2 — panel_cardboard_dark.png. Variante scura coordinata per pannelli secondari/game-over: stessa sagoma pixel della 1.1, corpo cardboard mid + shadow, hi-edge chiaro, tape invariato e tre minuscole macchie confinate agli angoli; anche questa resta scollegata dal tema placeholder finché il kit non è completo. - [feat] Generato set
2 — scotch decorativo. Aggiunti tape_strip.png (64×20) e i due angoli tape_corner_a.png / tape_corner_b.png (28×28): palette A, corpo pieno su chroma-key magenta, outline marker da 1 px, strappi distinti e pose diagonali opposte. L'opacità resta demandata al modulate runtime come previsto dal manifest. - [feat] Seconda variante del set
2. Il comando ripetuto ha prodotto tape_strip-v2.png e tape_corner_a-v2.png / tape_corner_b-v2.png, preservando gli asset canonici: strappi più profondi, sagome alternative e diagonali degli angoli più marcate, con le stesse dimensioni e palette. - [feat] Generato set
3 — barra stat. Aggiunti bar_frame.png (64×18, 9-patch 6 px orizzontali / 5 px verticali) con cornice marker e recesso scuro, più bar_fill.png (8×8, margini 2 px) near-white e tinteggiabile via self_modulate. Nessun colore stat è incorporato nel fill. - [feat] Generato set
4 — icone stat. Aggiunto stat_icons.png, atlas 64×16 in quattro celle 16×16: panino, tre Z, saponetta con tre bolle e stella da sceriffo a cinque punte. Palette A uniforme, simboli centrati e pronti per quattro AtlasTexture. - [feat] Generato set
5 — carta level-up. Aggiunto card_levelup.png (96×128 RGB) in palette A: sagoma di cartone strappato, tape minuscolo in alto a sinistra, angolo ripiegato in alto a destra, recesso icona vuoto 40×40 e area testo inferiore piatta. Sfondo chroma-key magenta puro; asset non ancora collegato alla variation PerkCard. - [feat] Generato set
6 — bottone-cartello. Aggiunto btn_sign.png, atlas orizzontale 144×32 RGB in tre celle 48×32 (normal / pressed / focus): stessa sagoma strappata, facce senza testo, tape d'angolo, stato premuto più scuro e piatto, focus con doppio highlight e due tacche di selezione. Margini per cella: 12 px orizzontali / 9 px verticali; non ancora collegato a CardboardButton. - [feat] Generato set
7 — striscione eventi. Aggiunto banner_event.png (128×32 RGB) in palette A: fascia di cartone leggermente incurvata, estremità strappate e fissate con due piccoli tape, scuff confinati ai lati e centro pulito per il testo runtime. Margini 9-patch: 24 px orizzontali / 8 px verticali; non ancora collegato a BigNotifyBanner. - [feat] Generato set
8 — icone perk. Aggiunto perk_icons.png, atlas 64×64 RGB in griglia 4×4 con le 16 icone del pool R2, nell'ordine del manifest: stomaco/sonno/pelle/carisma, kazoo/gatto magnetico/braccio/sesto senso, suola/patata/ombrello/bravo ragazzo, topo/coperta/furti/nove vite. Ogni simbolo è un doodle marker da 16×16 in palette A, senza label né separatori; non ancora affettato in AtlasTexture. - [chore] Bundle handoff UI per Claude. Creato
Homeless_UI_assets_1.1-8.zip con i 15 PNG finali del kit, rinominati internamente col numero della richiesta (1.1_–8_); incluse entrambe le versioni del set 2 (2_ e 2_v2_), escluse tutte le bozze Imagegen. - [feat] Tema: completato lo scaffolding delle type variation.
default_theme.tres esteso con le 3 variazioni placeholder mancanti richieste dal brief — CardboardPanelDark, PerkCard, BigNotifyBanner (StyleBoxFlat graybox marroni, stessi nomi degli asset finali → swap = solo ricollegare le texture). Set ora completo: CardboardPanel/CardboardPanelDark/CardboardButton/StatBar(+fill)/PerkCard/BigNotifyBanner/BigNotify. - [feat] Level-up stilizzato (stadio successivo del refactor U1.2).
LevelUpScreen.tscn: il Panel usa CardboardPanel, la carta CardTemplate usa CardboardButton, inclinazione fissa −1,2° (pivot centrato). Solo presentazione, zero logica (lo script non ha né override né StyleBox inline). Le carte vere di R2 si vestiranno con PerkCard quando esisteranno. - [test] Compile-check mirato pulito.
check_files.sh su LevelUpScreen.tscn/.gd + HUD.tscn: 4 controllati, 0 falliti. Tema validato a parte (.tres è ignorato da check_files by design): load() OK come Theme, tutte e 6 le type variation registrate (Panel: CardboardPanel/CardboardPanelDark/PerkCard/BigNotifyBanner; Button: CardboardButton; ProgressBar: StatBar). Solo il rumore EOS/GLIBC noto. - [test] Asset
1.1 validato. Dimensioni/mode/palette controllati via Pillow (48×48 RGB, 7 colori totali inclusi magenta e tape), quattro angoli magenta esatti, centro 24×24 piatto e prova di stiramento 9-patch 240×120 senza deformazioni o discontinuità. run_check.sh non eseguibile su questo host macOS: nel workspace è disponibile solo il binario Godot Linux ARM64 e non c'è un Godot locale alternativo; nessun file di codice o scena è stato modificato dalla generazione. - [test] Asset
1.2 validato. 48×48 RGB, 6 colori, maschera/sagoma identica pixel-per-pixel alla 1.1, centro 24×24 uniforme, quattro angoli magenta esatti e prova 9-patch 240×120 pulita. - [test] Set
2 validato. Tutti i PNG sono RGB senza alfa, usano esattamente 4 colori della palette A incluso #FF00FF, hanno angoli/bordo canvas magenta e un'unica componente di tape; corner_b non coincide né con corner_a né col suo semplice mirror. - [test] Set
2 variante -v2 validato. Dimensioni 64×20 / 28×28 / 28×28, quattro colori esatti, una componente connessa e bordo magenta continuo; ogni maschera differisce dalla corrispondente v1 e i due nuovi corner non sono mirror fra loro. - [test] Set
3 validato. PNG RGB e dimensioni esatte; centro bar_frame 52×8 uniforme in cardboard shadow, centro bar_fill 4×4 uniforme in #F2EEE2, quattro bande estensibili senza variazioni lungo l'asse di stretch. Simulazioni 9-patch verso 240×30 e fill 180×8 pulite. - [test] Set
4 validato per cella. 64×16 RGB, 6 colori, ogni icona resta nel proprio tile con 1 px di respiro. Componenti connesse attese: panino 1, ZZZ 3, saponetta+bolle 4, stella 1; nessun separatore o bleed fra celle. - [test] Set
5 validato. 96×128 RGB, 7 colori esatti della palette A, quattro angoli magenta, un’unica componente, slot esterno 40×40 con interno piatto e area testo 68×50 uniforme. Piega e tape restano nei corner da 14 px. Nota di integrazione: la richiesta del manifest di tenere anche lo slot da 40 px fuori dal centro estensibile è geometricamente incompatibile con patch_margin = 14; usare la carta alla misura nativa oppure separare lo slot in un overlay prima di ridimensionarla. - [test] Set
6 validato per stato e 9-patch. 144×32 RGB, 7 colori della palette A; tre celle esatte 48×32, quattro angoli magenta e centro 24×14 uniforme (light / mid / light). Normal e pressed hanno maschera identica; focus aggiunge soltanto le sei pixel-tacche previste. Le bande estensibili 12/9 sono uniformi lungo il proprio asse in tutti e tre gli stati. - [test] Set
7 validato per 9-patch. 128×32 RGB, 7 colori della palette A, quattro angoli magenta e un’unica componente. Centro 80×16 interamente cardboard light, senza decorazioni; tutte le righe/colonne delle bande estensibili 24/8 sono uniformi lungo il rispettivo asse. Bbox soggetto (3,1)–(125,27). - [test] Set
8 validato per cella. 64×64 RGB, 7 colori della palette A; sedici tile esatti 16×16 con maschere tutte diverse e almeno 1 px di magenta su ogni bordo, quindi zero bleed. Ispezione nearest 8× superata per ordine e leggibilità; Nove vite contiene un gatto più esattamente nove punti 4-disconnessi. - [test] Bundle ZIP validato.
unzip -t senza errori, 15/15 entry presenti; tutti i file interni riaperti con Pillow come PNG RGB e confrontati con le dimensioni attese. SHA-256 archivio: 303f18639f8b4943bf48b0839e13129759078df7bfb28727c62642be15f46e6d. - [docs]
docs/ui_restyle/ creata col piano dei 4 scatti before/after (criterio #4); cattura headless della UI non affidabile in sandbox → before/after da device (fallback U1.3).
Modifiche nel working tree, non committate (in coda al test device del resto dello sprint; index git bloccato in sandbox). Asset LFS non toccati. Rinviato: refactor MainMenu+Opzioni+Baracca (168 add_theme_), pannello game-over/retata, MapOverlay.