import tkinter as tk
from PIL import Image, ImageDraw, ImageTk

class FlightSimulatorApp:
    def __init__(self, root, map_path):
        self.root = root
        self.root.title("Simulatore Tracce Aeree")

        # Carica mappa da file
        original_map = Image.open(map_path).convert("RGB")
        self.width, self.height = original_map.size

        # Tkinter canvas
        self.canvas = tk.Canvas(root, width=self.width, height=self.height)
        self.canvas.pack()

        # Mappa di sfondo
        self.base_map = original_map

        # Lista aerei
        self.aircrafts = [
            {"x": 100, "y": 100, "vx": 2, "vy": 1},
            {"x": 200, "y": 250, "vx": 1, "vy": -1},
            {"x": 300, "y": 400, "vx": -1, "vy": 2},
        ]
        self.tracks = [[] for _ in self.aircrafts]

        # Avvio animazione
        self.update_frame()

    def update_frame(self):
        # Copia mappa
        frame = self.base_map.copy()
        draw = ImageDraw.Draw(frame)

        # Disegna aerei e tracce
        for i, aircraft in enumerate(self.aircrafts):
            aircraft["x"] += aircraft["vx"]
            aircraft["y"] += aircraft["vy"]

            # Salva traccia
            self.tracks[i].append((aircraft["x"], aircraft["y"]))

            # Traccia gialla
            if len(self.tracks[i]) > 1:
                draw.line(self.tracks[i], fill='yellow', width=2)

            # Aereo rosso
            x, y = aircraft["x"], aircraft["y"]
            draw.ellipse((x-5, y-5, x+5, y+5), fill='red')

        # Aggiorna immagine Tkinter
        self.tk_image = ImageTk.PhotoImage(frame)
        self.canvas.create_image(0, 0, anchor='nw', image=self.tk_image)

        # Frame successivo
        self.root.after(100, self.update_frame)


if __name__ == "__main__":
    # Percorso immagine di sfondo (mappa)
    mappa_path = "mappa.png"  # ← Cambia con il nome del tuo file

    root = tk.Tk()
    app = FlightSimulatorApp(root, mappa_path)
    root.mainloop()
