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();
 }