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