public JoiningPlayerDelegates(Game.Lobby.JoiningPlayer joiningPlayer) { _joiningPlayer = joiningPlayer; _joiningPlayer.SetMyPlayerId += OnSetMyPlayerId; _joiningPlayer.LobbyException += OnLobbyException; _joiningPlayer.Disconnected += OnDisconnected; }
public void JoinGameClick() { if (string.IsNullOrWhiteSpace(_view.GetPlayerName())) { _view.ShowNameRequired(); return; } var result = 0; // 0 = no result yet, 1 = success, 2 = fail var joiningPlayer = new Game.Lobby.JoiningPlayer(); var joiningPlayerDelegates = new Helpers.JoiningPlayerDelegates(joiningPlayer); joiningPlayerDelegates.SetMyPlayerId += i => result = 1; joiningPlayerDelegates.LobbyException += s => _view.ShowException(new Exception(s)); joiningPlayerDelegates.Disconnected += () => result = 2; _view.SetLoading(true); try { joiningPlayer.Join(_view.GetPlayerName(), _view.GetJoinIp(), _view.GetJoinPort()); } catch (Exception exception) { result = 2; _view.ShowException(exception); } // Počkat na výsledek while (result == 0) { System.Threading.Thread.Sleep(200); } _view.SetLoading(false); joiningPlayerDelegates.Unsubsribe(); if (result == 1) { var networkLobbyView = new NetworkLobby.FormNetworkLobby(); var networkLobbyGui = networkLobbyView.GetNetworkLobbyGui(); networkLobbyGui.SetJoiningPlayer(joiningPlayer); networkLobbyView.ShowDialog(); if (networkLobbyGui.OpenGameWindow && networkLobbyGui.RemoteGame != null) { OpenRemoteGame(networkLobbyGui.RemoteGame); } } }
public void SetJoiningPlayer(Game.Lobby.JoiningPlayer joiningPlayer) { _joiningPlayer = joiningPlayer; _joiningPlayer.Disconnected += () => { if (_lobbyIsClosed) { return; } _view.ShowLobbyException("Odpojeno ze serveru."); _view.CloseLobby(); }; _joiningPlayer.LobbyException += message => _view.ShowLobbyException(message); _joiningPlayer.SetMyPlayerId += OnSetMyPlayerId; _joiningPlayer.LobbyPlayersUpdated += OnLobbyPlayersUpdated; _joiningPlayer.ChatServerMessage += OnChatServerMessage; _joiningPlayer.ChatPlayerMessage += OnChatPlayerMessage; _joiningPlayer.GameStarting += OnRemoteGameStarting; OnSetMyPlayerId(_joiningPlayer.GetMyPlayerId()); var lobbyPlayers = _joiningPlayer.GetLobbyPlayers(); OnLobbyPlayersUpdated(lobbyPlayers); foreach (var chatMessage in _joiningPlayer.GetStoredChatMessages()) { if (chatMessage is VsadilNestihl.Networking.Messages.Chat.ChatServerMessage chatServerMessage) { OnChatServerMessage(chatServerMessage.Message); } if (chatMessage is VsadilNestihl.Networking.Messages.Chat.ChatPlayerMessage chatPlayerMessage) { var lobbyPlayer = lobbyPlayers.Find(x => x.PlayerId == chatPlayerMessage.PlayerId); if (lobbyPlayer == null) { continue; } OnChatPlayerMessage(lobbyPlayer, chatPlayerMessage.Message); } } }