Загрузка данных


class ScreenOverlay:
    """Прозрачный оверлей поверх экрана для отрисовки подсветки ходов"""
    def __init__(self):
        self.root = None
        self.canvas = None
        self.show_highlight = False
        self.current_move = None

    def start(self):
        self.root = tk.Tk()
        self.root.overrideredirect(True)
        self.root.attributes("-topmost", True)
        self.root.attributes("-transparentcolor", "black")

        screen_w = self.root.winfo_screenwidth()
        screen_h = self.root.winfo_screenheight()
        self.root.geometry(f"{screen_w}x{screen_h}+0+0")

        # Пропуск кликов мыши сквозь окно (Click-Through)
        hwnd = ctypes.windll.user32.GetParent(self.root.winfo_id())
        style = ctypes.windll.user32.GetWindowLongW(hwnd, -20)
        ctypes.windll.user32.SetWindowLongW(hwnd, -20, style | 0x00000020 | 0x00080000)

        self.canvas = tk.Canvas(self.root, bg="black", highlightthickness=0)
        self.canvas.pack(fill="both", expand=True)

        self.root.mainloop()

    def toggle_highlight(self):
        """Включение/выключение отображения по клавише V"""
        self.show_highlight = not self.show_highlight
        status = "ВКЛЮЧЕНА" if self.show_highlight else "ВЫКЛЮЧЕНА"
        print(f"\n[OVERLAY]: Подсветка ходов {status}")
        if self.root:
            self.root.after(0, self.redraw)

    def update_move(self, src_box, dst_box):
        """Обновление координат хода (Зеленый / Красный)"""
        self.current_move = {"from": src_box, "to": dst_box}
        if self.root and self.show_highlight:
            self.root.after(0, self.redraw)

    def redraw(self):
        if not self.canvas:
            return
        
        self.canvas.delete("all")
        if not self.show_highlight or not self.current_move:
            return

        # Зелёная рамка (Откуда)
        fx, fy, fw, fh = self.current_move["from"]
        self.canvas.create_rectangle(fx, fy, fx + fw, fy + fh, outline="#00FF00", width=4)

        # Красная рамка (Куда)
        tx, ty, tw, th = self.current_move["to"]
        self.canvas.create_rectangle(tx, ty, tx + tw, ty + th, outline="#FF0000", width=4)