diff --git a/src/mind_reader/ui/main_frame.py b/src/mind_reader/ui/main_frame.py index a0eaa98..a9df505 100644 --- a/src/mind_reader/ui/main_frame.py +++ b/src/mind_reader/ui/main_frame.py @@ -1,7 +1,9 @@ import wx +from mind_reader.core import GameState from mind_reader.ui.dialogs import ClientConnectDialog, ServerStartDialog from mind_reader.ui.menu_bar import AppMenuBar +from mind_reader.ui.views import LobbyPanel class MainFrame(wx.Frame): @@ -13,8 +15,14 @@ class MainFrame(wx.Frame): size=wx.Size(700, 500), style=wx.DEFAULT_FRAME_STYLE, ) + self.state: GameState | None = None + self.lobby_panel: LobbyPanel | None = None + self.Center() + self.main_sizer = wx.BoxSizer(wx.VERTICAL) + self.SetSizer(self.main_sizer) + self.menu_bar = AppMenuBar(self) self.SetMenuBar(self.menu_bar) @@ -32,10 +40,29 @@ class MainFrame(wx.Frame): wx.EVT_MENU, self.on_disconnect, self.menu_bar.item_disconnect ) + def _show_lobby(self): + self._destroy_lobby() + + if self.state: + self.lobby_panel = LobbyPanel(self, self.state) + self.main_sizer.Add(self.lobby_panel, 1, wx.EXPAND) + self.Layout() + + def _destroy_lobby(self): + if self.lobby_panel: + self.main_sizer.Detach(self.lobby_panel) + self.lobby_panel.Destroy() + self.lobby_panel = None + self.Layout() + 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}") d.Destroy() @@ -44,10 +71,18 @@ class MainFrame(wx.Frame): d = ServerStartDialog(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}") d.Destroy() def on_disconnect(self, event): + self._destroy_lobby() + + self.state = None + self.menu_bar.set_connected_state(False) self.SetStatusText("Подключение отсутствует")