feat: Add mutant death and god mode face animations, update HUD rendering and player damage handling

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
2026-03-23 12:29:56 +01:00
parent 400ce4f680
commit 827b8c779e
8 changed files with 124 additions and 5 deletions
@@ -228,6 +228,20 @@ abstract class RendererBackend<T>
faceIndex =
engine.data.registry.hud.resolve(HudKey.faceGotGatling)?.vgaIndex ??
-1;
} else if (engine.player.isMutantDeathFaceActive) {
faceIndex =
engine.data.registry.hud.resolve(HudKey.faceMutantDeath)?.vgaIndex ??
-1;
if (faceIndex < 0) {
faceIndex =
engine.data.registry.hud.resolve(HudKey.faceDead)?.vgaIndex ?? -1;
}
} else if (engine.player.isGodModeFaceEnabled) {
final int baseGodFace =
engine.data.registry.hud.resolve(HudKey.faceGodMode)?.vgaIndex ?? -1;
if (baseGodFace >= 0) {
faceIndex = baseGodFace + engine.player.hudFaceFrame;
}
} else {
final HudKey faceKey = engine.data.registry.hud.faceKeyForHealth(
engine.player.health,
@@ -241,6 +255,19 @@ abstract class RendererBackend<T>
}
}
if (faceIndex < 0) {
final HudKey fallbackKey = engine.data.registry.hud.faceKeyForHealth(
engine.player.health,
);
final int fallbackBase =
engine.data.registry.hud.resolve(fallbackKey)?.vgaIndex ?? -1;
if (fallbackBase >= 0) {
faceIndex = fallbackKey == HudKey.faceDead
? fallbackBase
: fallbackBase + engine.player.hudFaceFrame;
}
}
if (faceIndex >= 0 && faceIndex < vgaImages.length) {
blitHudVgaImage(vgaImages[faceIndex], 136, 164);
}