import processing.core.PApplet;
import java.awt.*;
import java.util.LinkedList;
import java.util.Queue;

public class GameLogic extends PApplet {

    public static void main(String[] args) {
        PApplet.main("GameLogic");
    }

    private static final int MAX_TRAIL_SIZE = 100; // Maximale Größe des Trails
    private Queue<int[]> trail = new LinkedList<>();
    private Point testPoint = new Point(200, 200);

    public void settings() {
        size(800, 600);
    }

    public void setup() {
        fillTrail(); // Beispielpfad erstellen
        noLoop(); // Zeichnen nur bei Bedarf
    }

    private void fillTrail() {
        // Beispielhafte Füllung der Spur (maximale Größe beachten)
        for (int i = 0; i < MAX_TRAIL_SIZE; i++) {
            trail.add(new int[]{50 + i * 5, 300}); // Punkte entlang der x-Achse
        }
    }

    // Methode zum Hinzufügen eines neuen Punkts, begrenzt auf MAX_TRAIL_SIZE
    public void addToTrail(int x, int y) {
        if (trail.size() >= MAX_TRAIL_SIZE) {
            trail.poll(); // Entferne das älteste Element, wenn die maximale Größe erreicht ist
        }
        trail.add(new int[]{x, y});
    }

    public boolean doCheckExtern(Queue<int[]> trail, Point point) {
        return doCheck(trail, point);
    }

    public boolean doCheck(Queue<int[]> trail, Point point) {
        int particleSize = 10;

        // Zeichne den Pfad auf das Canvas nur, wenn nötig
        background(255); // Weißer Hintergrund
        for (int[] coordinates : trail) {
            int x = coordinates[0];
            int y = coordinates[1];
            fill(0); // Schwarz
            rect(x, y, particleSize, particleSize);
        }

        // Überprüfe die Pixelwerte am Testpunkt
        int c = get(point.x, point.y); // Farbwert abrufen
        return (c == color(0)); // Schwarz bedeutet Kollision
    }
}
