diff --git a/memory_lib/memory.py b/memory_lib/memory.py index 8d2c61c2ad93ac44cdd3e8c0dea83be006e63766..1324d84cd3215a9672ac1612e77ceb51fcb95597 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 6fb2d508b1261c3d84ab5797697b3b632cd180d9..506981909d57a3fc132d0407643924a83ece4016 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()