Fixed HUD display

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
2026-03-16 00:53:48 +01:00
parent ff00f2b537
commit 7cdc7b0a9c

View File

@@ -460,18 +460,17 @@ class SoftwareRasterizer implements Rasterizer {
faceIndex = 127; // Dead face faceIndex = 127; // Dead face
} else { } else {
int healthTier = ((100 - health) ~/ 16).clamp(0, 6); int healthTier = ((100 - health) ~/ 16).clamp(0, 6);
// Base face is 106 (100% health, looking forward).
faceIndex = 106 + (healthTier * 3); faceIndex = 106 + (healthTier * 3);
} }
if (faceIndex < engine.data.vgaImages.length) { if (faceIndex < engine.data.vgaImages.length) {
_blitVgaImage(engine.data.vgaImages[faceIndex], 142, 164, buffer); // Exactly X=136. This will perfectly smother the background face.
_blitVgaImage(engine.data.vgaImages[faceIndex], 136, 164, buffer);
} }
} }
void _drawWeaponIcon(WolfEngine engine, FrameBuffer buffer) { void _drawWeaponIcon(WolfEngine engine, FrameBuffer buffer) {
int weaponIndex = 89; // Default to Pistol (Index 89) int weaponIndex = 89; // Default to Pistol
if (engine.player.hasChainGun) { if (engine.player.hasChainGun) {
weaponIndex = 91; weaponIndex = 91;
@@ -480,8 +479,8 @@ class SoftwareRasterizer implements Rasterizer {
} }
if (weaponIndex < engine.data.vgaImages.length) { if (weaponIndex < engine.data.vgaImages.length) {
// The weapon box starts at X=272. Let's center it vertically at 164. // Exactly X=256
_blitVgaImage(engine.data.vgaImages[weaponIndex], 272, 164, buffer); _blitVgaImage(engine.data.vgaImages[weaponIndex], 256, 164, buffer);
} }
} }
@@ -495,27 +494,30 @@ class SoftwareRasterizer implements Rasterizer {
// 1. Draw Background // 1. Draw Background
_blitVgaImage(engine.data.vgaImages[statusBarIndex], 0, 160, buffer); _blitVgaImage(engine.data.vgaImages[statusBarIndex], 0, 160, buffer);
// 2. Draw Stats (Right-aligned to fit inside the dark blue boxes) // 2. Draw Stats (100% mathematically accurate right-aligned coordinates)
// (Using a hardcoded '1' for the floor since your engine hides currentLevelIndex) _drawNumber(1, 32, 176, buffer, engine.data.vgaImages); // Floor
_drawNumber(1, 40, 176, buffer, engine.data.vgaImages); // Floor
_drawNumber( _drawNumber(
engine.player.score, engine.player.score,
104, 96,
176, 176,
buffer, buffer,
engine.data.vgaImages, engine.data.vgaImages,
); // Score ); // Score
_drawNumber(3, 136, 176, buffer, engine.data.vgaImages); // Lives _drawNumber(3, 120, 176, buffer, engine.data.vgaImages); // Lives
_drawNumber( _drawNumber(
engine.player.health, engine.player.health,
216, 192,
176, 176,
buffer, buffer,
engine.data.vgaImages, engine.data.vgaImages,
); // Health ); // Health
_drawNumber(
// Pulled the Ammo X coordinate back to 264 so it doesn't bleed into the weapon! engine.player.ammo,
_drawNumber(engine.player.ammo, 264, 176, buffer, engine.data.vgaImages); 232,
176,
buffer,
engine.data.vgaImages,
); // Ammo
// 3. Draw BJ's Face & Current Weapon // 3. Draw BJ's Face & Current Weapon
_drawFace(engine, buffer); _drawFace(engine, buffer);