feat: Enhance rendering with pushwall and enemy color support in ASCII, Sixel, and Software renderers

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
2026-03-23 11:15:17 +01:00
parent 1165e0bc44
commit 0c74abcb7e
4 changed files with 102 additions and 12 deletions
@@ -1,6 +1,7 @@
import 'dart:typed_data';
import 'package:test/test.dart';
import 'package:wolf_3d_dart/src/entities/entities/enemies/guard.dart';
import 'package:wolf_3d_dart/wolf_3d_data_types.dart';
import 'package:wolf_3d_dart/wolf_3d_engine.dart';
import 'package:wolf_3d_dart/wolf_3d_input.dart';
@@ -11,6 +12,16 @@ void main() {
test('software renderer draws fullscreen map overlay when enabled', () {
final engine = _buildEngine();
engine.init();
expect(engine.pushwallManager.pushwalls.containsKey('5,5'), isTrue);
engine.entities.add(
Guard(
x: 8.5,
y: 8.5,
angle: 0,
mapId: MapObject.guardStart,
difficulty: Difficulty.medium,
),
);
final renderer = SoftwareRenderer();
final frameNormal = renderer.render(engine);
@@ -28,6 +39,8 @@ void main() {
}
expect(changedPixels, greaterThan(mapPixels.length ~/ 5));
expect(mapPixels.contains(ColorPalette.vga32Bit[6]), isTrue);
expect(mapPixels.contains(ColorPalette.vga32Bit[12]), isTrue);
expect(mapPixels.contains(ColorPalette.vga32Bit[10]), isTrue);
});
});
@@ -57,7 +70,9 @@ WolfEngine _buildEngine() {
_fillBoundaries(wallGrid, 2);
wallGrid[2][4] = 1;
wallGrid[2][5] = 90;
wallGrid[5][5] = 1;
objectGrid[2][2] = MapObject.playerEast;
objectGrid[5][5] = MapObject.pushwallTrigger;
return WolfEngine(
data: WolfensteinData(