From f38539f3c84e764741f769d8553f083a7026633a Mon Sep 17 00:00:00 2001 From: Vladimir Date: Fri, 7 Aug 2026 03:07:04 +0300 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D1=8B=20=D1=81=20=D1=81=D0=B5=D1=82=D1=8C=D1=8E=20=D1=87=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=D0=B7=20=D0=B3=D1=80=D0=B0=D1=84=D0=B8=D1=87=D0=B5?= =?UTF-8?q?=D1=81=D0=BA=D0=B8=D0=B9=20=D0=B8=D0=BD=D1=82=D0=B5=D1=80=D1=84?= =?UTF-8?q?=D0=B5=D0=B9=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mind_reader/ui/main_frame.py | 40 +++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/src/mind_reader/ui/main_frame.py b/src/mind_reader/ui/main_frame.py index a9df505..b1a7f37 100644 --- a/src/mind_reader/ui/main_frame.py +++ b/src/mind_reader/ui/main_frame.py @@ -1,6 +1,7 @@ import wx from mind_reader.core import GameState +from mind_reader.network import NetworkController, NetworkMesssage from mind_reader.ui.dialogs import ClientConnectDialog, ServerStartDialog from mind_reader.ui.menu_bar import AppMenuBar from mind_reader.ui.views import LobbyPanel @@ -16,6 +17,10 @@ class MainFrame(wx.Frame): style=wx.DEFAULT_FRAME_STYLE, ) self.state: GameState | None = None + self.network = NetworkController( + self._handle_network_message, + self._handle_network_notice, + ) self.lobby_panel: LobbyPanel | None = None self.Center() @@ -27,7 +32,7 @@ class MainFrame(wx.Frame): self.SetMenuBar(self.menu_bar) self.CreateStatusBar(1) - self.SetStatusText("Подключение отсутствует") + # self.SetStatusText("Подключение отсутствует") self._bind_menu_events() @@ -55,34 +60,51 @@ class MainFrame(wx.Frame): self.lobby_panel = None self.Layout() + def _handle_network_message(self, m: NetworkMesssage): + pass + + def _handle_network_notice(self, notice: str): + self.SetStatusText(notice) + + def _recreate_network_controller(self): + self.network.stop() + self.network = NetworkController( + self._handle_network_message, + self._handle_network_notice, + ) + def on_client_connect(self, event): d = ClientConnectDialog(self) if d.ShowModal() == wx.ID_OK: name, ip = d.get_data() - self.state = GameState(name) - - self._show_lobby() - - self.menu_bar.set_connected_state(True) - self.SetStatusText(f"Подключено к {ip} | Ваше имя {name}") + if self.network.connect(ip): + self.state = GameState(name) + self._show_lobby() + self.menu_bar.set_connected_state(True) + else: + self._recreate_network_controller() + # self.SetStatusText(f"Подключено к {ip} | Ваше имя {name}") d.Destroy() def on_server_start(self, event): d = ServerStartDialog(self) if d.ShowModal() == wx.ID_OK: name, ip = d.get_data() + self.network.serve(ip) self.state = GameState(name) self._show_lobby() self.menu_bar.set_connected_state(True) - self.SetStatusText(f"Сервер запущен на {ip} | Ваше имя {name}") + # self.SetStatusText(f"Сервер запущен на {ip} | Ваше имя {name}") d.Destroy() def on_disconnect(self, event): + self._recreate_network_controller() + self._destroy_lobby() self.state = None self.menu_bar.set_connected_state(False) - self.SetStatusText("Подключение отсутствует") + # self.SetStatusText("Подключение отсутствует")