feat: Implement chaingun pickup face animation and update HUD rendering logic
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
@@ -222,10 +222,25 @@ abstract class RendererBackend<T>
|
||||
}
|
||||
|
||||
void _drawHudFace(WolfEngine engine, List<VgaImage> vgaImages) {
|
||||
final faceRef = engine.data.registry.hud.faceForHealth(
|
||||
engine.player.health,
|
||||
);
|
||||
final int faceIndex = faceRef?.vgaIndex ?? -1;
|
||||
int faceIndex = -1;
|
||||
|
||||
if (engine.player.isChaingunPickupFaceActive) {
|
||||
faceIndex =
|
||||
engine.data.registry.hud.resolve(HudKey.faceGotGatling)?.vgaIndex ??
|
||||
-1;
|
||||
} else {
|
||||
final HudKey faceKey = engine.data.registry.hud.faceKeyForHealth(
|
||||
engine.player.health,
|
||||
);
|
||||
final int baseIndex =
|
||||
engine.data.registry.hud.resolve(faceKey)?.vgaIndex ?? -1;
|
||||
if (baseIndex >= 0) {
|
||||
faceIndex = faceKey == HudKey.faceDead
|
||||
? baseIndex
|
||||
: baseIndex + engine.player.hudFaceFrame;
|
||||
}
|
||||
}
|
||||
|
||||
if (faceIndex >= 0 && faceIndex < vgaImages.length) {
|
||||
blitHudVgaImage(vgaImages[faceIndex], 136, 164);
|
||||
}
|
||||
|
||||
@@ -190,6 +190,10 @@ class SoftwareRenderer extends RendererBackend<FrameBuffer> {
|
||||
? normalExitColor
|
||||
: objTile == MapObject.secretExitTrigger
|
||||
? secretExitColor
|
||||
: objTile == MapObject.goldKey
|
||||
? goldKeyColor
|
||||
: objTile == MapObject.silverKey
|
||||
? silverKeyColor
|
||||
: (wallTile == 0
|
||||
? floorColor
|
||||
: (wallTile >= 90 ? doorColor : wallColor));
|
||||
|
||||
Reference in New Issue
Block a user