@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user