From 8a52575988d56d2c7655904b184bd9db689d181f Mon Sep 17 00:00:00 2001
From: Adrien Lescourt <adrien@lescourt.net>
Date: Fri, 16 Jul 2021 14:13:58 +0200
Subject: [PATCH] Add a stopped event

---
 memory_lib/memory.py | 1 +
 memory_lib/model.py  | 9 +++++++++
 2 files changed, 10 insertions(+)

diff --git a/memory_lib/memory.py b/memory_lib/memory.py
index 8d2c61c..1324d84 100644
--- a/memory_lib/memory.py
+++ b/memory_lib/memory.py
@@ -53,6 +53,7 @@ class Memory(ABC, threading.Thread, PiecesObserver):
             if key == ord("r"):
                 self.reset()
             if key == ord("q"):
+                self.stopped_trigger()
                 break
 
     @abstractmethod
diff --git a/memory_lib/model.py b/memory_lib/model.py
index 6fb2d50..5069819 100644
--- a/memory_lib/model.py
+++ b/memory_lib/model.py
@@ -69,6 +69,7 @@ class PiecesObserver:
     def __init__(self):
         self._pieces_observers = []
         self._board_observers = []
+        self._stopped_observers = []
 
     def bind_pieces(self, callback: Callable):
         self._pieces_observers.append(callback)
@@ -76,6 +77,9 @@ class PiecesObserver:
     def bind_board(self, callback: Callable):
         self._board_observers.append(callback)
 
+    def bind_stopped(self, callback: Callable):
+        self._stopped_observers.append(callback)
+
     def piece_trigger(self, piece_id: int):
         """On every piece state change, send the piece id that changed"""
         for callback in self._pieces_observers:
@@ -85,3 +89,8 @@ class PiecesObserver:
         """On every frame, send the full board"""
         for callback in self._board_observers:
             callback(board)
+
+    def stopped_trigger(self):
+        """On every frame, send the full board"""
+        for callback in self._stopped_observers:
+            callback()
-- 
GitLab