openthebox/proposals.md
Samuel Bouchet 930128a766 Implement interactive inventory, event log, and UI improvements (proposals 1-11)
- Reorder meta unlocks for better early-game pacing (visual panels first)
- Portrait always visible, cosmetics shown only when panel unlocked
- Auto-equip first cosmetic of each slot
- Transform ChatPanel into event log with localized title
- Compact UI feature announcements (Panel instead of FigletText)
- FullLayout-only screen clearing, inline resource summary pre-unlock
- Lore fragment named keys for inventory display
- Interactive inventory with ↑↓ selection, detail panel, and Enter to act
- Consumable items usable via UseItemAction pipeline
- Lore fragments readable in dedicated display panel
- Add InventoryRenderCapture test and document render capture workflow
2026-03-13 23:30:04 +01:00

4.7 KiB

Propositions d'améliorations du rendu

Analyse basée sur la capture de 2 playthroughs (seeds 42 et 777, 15 étapes chacun) et le rapport de pacing complet.


1. Le vide initial : 30 boîtes sans aucun panel visuel — DONE

Constat : Les 2 scénarios montrent "(no panels unlocked yet)" pour les 15 premières étapes (30 boîtes). Les premiers déverrouillages meta sont AutoSave et BoxAnimation — invisibles pour le joueur. Le premier panel visuel (ResourcePanel ou InventoryPanel) n'arrive qu'entre la boîte #32 et #36.

Résolu :

  • 1B) Portrait visible par défaut : une boîte nue +------+ s'affiche dès le départ, les cosmétiques n'apparaissent qu'après le déverrouillage PortraitPanel.
  • 1C) Méta-déverrouillages réordonnés : TextColors/StatsPanel/InventoryPanel/ResourcePanel arrivent en premier (box_meta_basics), AutoSave/BoxAnimation repoussés en fin de progression (box_meta_mastery). Résultat : 1er panel visuel à la boîte #7-16 au lieu de #32-36.

2. Les noms de boîtes apparaissent comme IDs bruts — ALREADY FIXED

Constat : Déjà corrigé dans une session précédente. GetLocalizedName() fait le fallback vers registry.GetBox().


3. Cosmétiques reçus sans portrait pour les voir — DONE

Résolu :

  • 3A) Portrait visible dès le départ (voir 1B). PortraitPanel arrive désormais à la boîte #32-36.
  • 3C) Auto-équipement : MetaEngine équipe automatiquement le premier cosmétique de chaque slot vide lors de la réception. Le joueur voit immédiatement le changement sur le portrait.

4. Ressources reçues mais invisibles — DONE

Résolu : Quand le ResourcePanel n'est pas débloqué, un résumé inline des ressources visibles s'affiche après le loot : [Santé 10/100 | Or 5].


5. Le layout "Full" arrive trop tard — DONE

Résolu : FullLayout déplacé de box_meta_mastery vers box_meta_interface. Résultat : FullLayout à la boîte #41-53 au lieu de #199.


6. Le panneau Chat est toujours vide — DONE

Résolu : ChatPanel transformé en Journal d'événements. Affiche les N derniers événements (loot, déverrouillages, changements de ressources, aventures débloquées) au lieu de l'ancien dialogue vide.

7. Feedback d'événements trop éphémère — DONE

Résolu :

  • 7A) Historique des événements dans le panel Log (remplace Chat).
  • 7B) Pas de Clear() en mode pré-FullLayout : le texte défile comme un terminal classique.

8. L'annonce FigletText de déverrouillage UI prend trop de place — DONE

Résolu : FigletText remplacé par un Panel compact avec bordure double et étoiles : ★ Panneau d'inventaire ★. Prend 3 lignes au lieu de 12.


9. Progression des cosmétiques : équipement auto — DONE

Résolu : Voir 3C. Auto-équipement du premier cosmétique de chaque slot.


10. Lore fragments : noms trop longs — DONE

Résolu : Les fragments de lore ont maintenant des noms courts ("Fragment : Genèse", "Fragment : L'Ordre", etc.) au lieu de phrases complètes. Les textes longs restent dans les clés lore.fragment_N pour affichage détaillé.


11. Consommables non consommables — DONE

Résolu :

  • 11A) Inventaire interactif : les objets sont sélectionnables avec ↑↓/PgUp/PgDn, la ligne sélectionnée est mise en surbrillance avec un indicateur ►.
  • 11B) Panneau de détails : un cadre « Détails » s'affiche sous l'inventaire montrant le nom, la rareté, et les informations contextuelles de l'objet sélectionné (effet des consommables, texte de lore complet, slot cosmétique, type de matériau).
  • Consommables : Appuyer sur Entrée utilise le consommable via UseItemActionResourceEngine.ProcessConsumable(). L'item est consommé et la ressource mise à jour.
  • Fragments de lore : Appuyer sur Entrée affiche le texte complet dans un panneau dédié avec bordure double.

Résumé

# Proposition Statut
1B Portrait visible par défaut DONE
1C Réordonner les méta-déverrouillages DONE
2 Noms de boîtes localisés dans le loot ALREADY FIXED
3C Auto-équiper le 1er cosmétique DONE
4 Résumé ressources inline DONE
5 FullLayout plus tôt DONE
6A Chat comme log d'événements DONE
7A Historique événements dans panel Log DONE
7B Pas de Clear avant FullLayout DONE
8 Annonce compacte des déverrouillages DONE
9 Auto-équipement cosmétiques DONE
10 Noms courts pour lore fragments DONE
11A Inventaire interactif avec sélection DONE
11B Panneau de détails contextuel DONE