Ajout : architecture HUD avec respect des coordonnees natives Amiga
Premiere version fonctionnelle du HUD d’AB3D2 au-dessus de la vue 3D, construite
sur 4 composants decouples permettant de supporter n’importe quelle resolution
cible sans deformer le HUD.
Composants :
-
HudLayout: source de verite pour toutes les positions/dimensions du HUD,
en coordonnees natives Amiga 320×256. Toutes les valeurs viennent directement
descreen.hetdraw.hdu code C original (HUD_BORDER_WIDTH=16,
SMALL_WIDTH=192, SMALL_HEIGHT=160, HUD_AMMO_COUNT_X=160, etc.). -
HudScaling: conversion coord natives -> coord ecran JME. Supporte 3 modes :
FIT (letterbox proportionnel, defaut), STRETCH (remplit tout), PIXEL_PERFECT
(scale entier). Gere l’inversion d’axe Y (natif top-left vs JME bottom-left). -
HudMode: enum SMALL_SCREEN (HUD complet visible, 3D 192×160) ou FULL_SCREEN
(3D plein ecran, panneau bas en overlay). -
HudState: modele des valeurs dynamiques (AMMO, ENERGY, arme selectionnee,
messages avec ring buffer deduplique). Decouple du rendu JME. -
HudAppState: couche JME. Chargenewborder.pngcomme fond (deja extrait via
IffExtractor), positionne AMMO/ENERGY/slots/messages en BitmapText aux
coordonnees natives converties via HudScaling.
Integration :
– Attache automatiquement le HudAppState depuis GameAppState.initialize().
– Message d’accueil « Level X loaded » pushe a l’init.
– Detach propre dans cleanup().
Ce qui reste a faire :
– Relier AMMO/ENERGY/selectedWeapon aux vraies donnees joueur (actuellement
valeurs fixes).
– Ajouter la zone 3D transparente (actuellement le border masque une partie
de la vue). Options : (a) appliquer alpha=0 a la zone centrale noire du PNG,
(b) configurer un viewport 3D a la taille de HudLayout.getSmall3DViewport().
– Extraire les vraies fonts pixel (stenfontraw) pour un look 100% fidele.
– Implementer le mode FULL_SCREEN (panneau bas seul).
– Fenetre redimensionnable : appeler HudAppState.onResize() sur resize event.
Palette Amiga copper-list decodee
Format de panelcols identifie comme dump de copper list Amiga AGA :
– Byte 0-1 = adresse registre hardware ($0180 = COLOR00, …)
– Byte 2-3 = vraie couleur $0RGB 12-bit
Fix applique dans RawExtractor.parseAmiga12BitPalette() pour lire les bytes
2-3 au lieu des bytes 0-1. Les couleurs HUD confirmees : noir ($0000), oranges
($0DA0, $0A80), rouge ($0E00), jaune vif ($0FF2), blanc ($0FFF).