Added difficulty screen

Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
2026-03-13 19:20:06 +01:00
parent 827d858f0f
commit 01d8329969
6 changed files with 156 additions and 27 deletions

View File

@@ -1,9 +1,9 @@
import 'dart:math' as math;
import 'package:flutter/material.dart';
import 'package:wolf_dart/classes/entity.dart';
import 'package:wolf_dart/classes/linear_coordinates.dart';
import 'package:wolf_dart/classes/matrix.dart';
import 'package:wolf_dart/classes/sprite.dart';
import 'package:wolf_dart/features/renderer/color_palette.dart';
class RaycasterPainter extends CustomPainter {
@@ -14,7 +14,7 @@ class RaycasterPainter extends CustomPainter {
final double fov;
final Map<String, double> doorOffsets;
final List<Matrix<int>> sprites;
final List<Sprite> entities;
final List<Entity> entities;
RaycasterPainter({
required this.map,
@@ -164,7 +164,7 @@ class RaycasterPainter extends CustomPainter {
// --- 2. DRAW SPRITES ---
// Sort sprites from furthest to closest (Painter's Algorithm)
List<Sprite> activeSprites = List.from(entities);
List<Entity> activeSprites = List.from(entities);
activeSprites.sort((a, b) {
double distA =
math.pow(player.x - a.x, 2) + math.pow(player.y - a.y, 2).toDouble();
@@ -173,10 +173,10 @@ class RaycasterPainter extends CustomPainter {
return distB.compareTo(distA);
});
for (Sprite sprite in activeSprites) {
for (Entity entity in activeSprites) {
// Translate sprite position to relative to camera
double spriteX = sprite.x - player.x;
double spriteY = sprite.y - player.y;
double spriteX = entity.x - player.x;
double spriteY = entity.y - player.y;
// Inverse camera matrix (Transform to screen space)
double invDet = 1.0 / (planeX * dirY - dirX * planeY);
@@ -216,7 +216,7 @@ class RaycasterPainter extends CustomPainter {
double stepY = spriteHeight / 64.0;
// Safeguard against bad sprite indices
int safeIndex = sprite.spriteIndex.clamp(0, sprites.length - 1);
int safeIndex = entity.spriteIndex.clamp(0, sprites.length - 1);
Matrix<int> spritePixels = sprites[safeIndex];
for (int ty = 0; ty < 64; ty++) {