Moved the weapon and damage flash to the rasterizer.

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
2026-03-16 00:09:23 +01:00
parent 752c143234
commit a73a36e21d
2 changed files with 74 additions and 61 deletions

View File

@@ -6,7 +6,6 @@ import 'package:wolf_3d_data_types/wolf_3d_data_types.dart';
import 'package:wolf_3d_engine/wolf_3d_engine.dart';
import 'package:wolf_3d_input/wolf_3d_input.dart';
import 'package:wolf_3d_renderer/hud.dart';
import 'package:wolf_3d_renderer/weapon_painter.dart';
class WolfRenderer extends StatefulWidget {
const WolfRenderer(
@@ -125,57 +124,9 @@ class _WolfRendererState extends State<WolfRenderer>
return Center(
child: AspectRatio(
aspectRatio: 16 / 10,
child: Stack(
children: [
// --- 3D WORLD (PIXEL BUFFER) ---
CustomPaint(
size: Size(
constraints.maxWidth,
constraints.maxHeight,
),
painter: BufferPainter(_renderedFrame),
),
// --- FIRST PERSON WEAPON ---
Positioned(
bottom: 0,
left: 0,
right: 0,
child: Center(
child: Transform.translate(
offset: Offset(
0,
engine.player.weaponAnimOffset,
),
child: SizedBox(
width: 500,
height: 500,
child: CustomPaint(
painter: WeaponPainter(
sprite:
widget.data.sprites[engine
.player
.currentWeapon
.getCurrentSpriteIndex(
widget.data.sprites.length,
)],
),
),
),
),
),
),
// --- DAMAGE FLASH ---
if (engine.damageFlashOpacity > 0)
Positioned.fill(
child: Container(
color: Colors.red.withValues(
alpha: engine.damageFlashOpacity,
),
),
),
],
child: CustomPaint(
size: Size(constraints.maxWidth, constraints.maxHeight),
painter: BufferPainter(_renderedFrame),
),
),
);
@@ -190,8 +141,6 @@ class _WolfRendererState extends State<WolfRenderer>
}
}
// --- DEAD SIMPLE PAINTER ---
// It literally just stretches the 320x200 image to fill the screen
class BufferPainter extends CustomPainter {
final ui.Image? frame;
@@ -201,7 +150,6 @@ class BufferPainter extends CustomPainter {
void paint(Canvas canvas, Size size) {
if (frame == null) return;
// FilterQuality.none guarantees the classic, chunky, un-blurred pixels!
final Paint paint = Paint()..filterQuality = FilterQuality.none;
final Rect srcRect = Rect.fromLTWH(