private void OnJoinGameResult(object sender, ClientListener <JoinGameMessage> .TArg e) { //Получение позиции игрока в игре uint?myPlayerPosition = e.Arg.MyPosition; //Проверка позиции игрока if (myPlayerPosition == null) { //Если присоединение не удалось, то разрываем соединение OnJoin?.Invoke(null); tcpClient.Dispose(); return; } //Если присоединение успешно OnJoin?.Invoke(e.Arg); //Если есть противник, то начинаем игру if (e.Arg.EnemyName != null) { joinGameListener.Stop(); OnStart?.Invoke(); playGameListener.Start(); } }
private void OnUpdateGameResult(object sender, ClientListener <PlayGameMessage> .TArg e) { //Проверка статуса игры: string status = e.Arg.GameStatus; switch (status) { case PlayGameMessage.PlayingGameStatus: OnUpdate?.Invoke(e.Arg); break; case PlayGameMessage.WinGameStatus: tcpClient.Dispose(); playGameListener.Stop(); OnWin?.Invoke(); break; case PlayGameMessage.LoseGameStatus: tcpClient.Dispose(); playGameListener.Stop(); OnLose?.Invoke(); break; } }
internal void Stop() { tcpClient?.Dispose(); joinGameListener?.Stop(); playGameListener?.Stop(); }