private void HandleStartGame(Hub hub, MethodCallMessage methodCall)
    {
        SetRoomState(1);
        var data = methodCall.Arguments;

        _bacayData = JsonConvert.DeserializeObject <SRSBacay>(BestHTTP.JSON.Json.Encode(data[0]));
        var time = JsonConvert.DeserializeObject <BacayServerTime>(BestHTTP.JSON.Json.Encode(data[1]));

        for (int pos = 0; pos < _bacayData.Positions.Count; pos++)
        {
            var accountId = _bacayData.Positions[pos];
            if (accountId > 0)
            {
                var playerData = _bacayData.Players[Convert.ToString(accountId)];
                var player     = ShowPLayer(playerData, pos, false);
                player.ShowStart(time);
            }
            else
            {
                HidePlayer(pos);
            }
        }
        feedChecken.transform.parent.gameObject.SetActive(false);
        register.gameObject.SetActive(false);
        resign.gameObject.SetActive(false);
        noResign.gameObject.SetActive(false);
        HideBetOption();
    }
    private void HandleUpdateSession(Hub hub, MethodCallMessage methodCall)
    {
        var data  = methodCall.Arguments;
        var bacay = JsonConvert.DeserializeObject <SRSBacay>(BestHTTP.JSON.Json.Encode(data[0]));

        _bacayData = bacay;
        LoadRoomPlayer(false);
    }
    public void HandleJoin(object[] data)
    {
        UILayerController.Instance.HideLoading();
        SRSBacay        xocxoc     = JsonConvert.DeserializeObject <SRSBacay>(BestHTTP.JSON.Json.Encode(data[0]));
        BacayServerTime serverTime = JsonConvert.DeserializeObject <BacayServerTime>(BestHTTP.JSON.Json.Encode(data[1]));

        _server.OnSRSEvent    = null;
        _server.OnSRSHubEvent = null;

        //ClearUI();
        //((LGameXocXoc)UILayerController.Instance.ShowLayer(UILayerKey.LGameXocXoc)).Init(_config, _assetBundleConfig, _server, xocxoc);

        UILayerController.Instance.ShowLayer("LGameBaCay", _assetBundleConfig.name, (layer) =>
        {
            ClearUI();
            layer.GetComponent <LGameBaCay>().Init(myself, _server, xocxoc, _bacayConfig);
        });
    }
    private void HandleStartBettingTime(Hub hub, MethodCallMessage methodCall)
    {
        SetRoomState(2);
        var data = methodCall.Arguments;

        _bacayData = JsonConvert.DeserializeObject <SRSBacay>(BestHTTP.JSON.Json.Encode(data[0]));
        var time = JsonConvert.DeserializeObject <BacayServerTime>(BestHTTP.JSON.Json.Encode(data[1]));

        for (int i = 0; i < players.Count; i++)
        {
            var player = players[i];
            if (player.gameObject.activeSelf)
            {
                player.ShowTimer(time);
            }
        }

        ShowBetOption();
        feedChecken.transform.parent.gameObject.SetActive(true);
        feedChecken.text = "0";
        UpdateMatchId();
    }
    private void HandleStartAnimationTime(Hub hub, MethodCallMessage methodCall)
    {
        SetRoomState(3);
        var data = methodCall.Arguments;

        _bacayData = JsonConvert.DeserializeObject <SRSBacay>(BestHTTP.JSON.Json.Encode(data[0]));
        var time = JsonConvert.DeserializeObject <BacayServerTime>(BestHTTP.JSON.Json.Encode(data[1]));

        for (int i = 0; i < players.Count; i++)
        {
            var player = players[i];
            if (player.gameObject.activeSelf && _bacayData.Players[player.AccountIdString].Status == 1)
            {
                player.MoveCard(roomState.transform.position, transform, cards);
                player.ShowTimer(time);
            }
        }
        HideBetOption();
        submitChecken.gameObject.SetActive(false);
        showOneCard.gameObject.SetActive(true);
        showAllCard.gameObject.SetActive(true);
        AudioAssistant.Instance.PlaySoundGame(_config.gameId, _config.audioChiaBai);
    }
    public void Init(Account myself, SignalRServer server, SRSBacay bacayData, SRSBaCayConfig config)
    {
        accountIdNumber = myself.AccountID;
        accountIdString = Convert.ToString(accountIdNumber);
        _config         = config;

        _bacayData = bacayData;
        _server    = server;
        _server.AddListener("playerLeave", HandlePlayerLeave);
        _server.AddListener("playerJoin", HandlePlayerJoin);
        _server.AddListener("startGame", HandleStartGame);
        _server.AddListener("startBettingTime", HandleStartBettingTime);
        _server.AddListener("updateBetting", HandleUpdateBetting);
        _server.AddListener("feedChicken", HandleUpdateFeedChicken);
        _server.AddListener("startAnimationTime", HandleStartAnimationTime);
        _server.AddListener("showAllResult", HandleShowAllResult);
        _server.AddListener("showPrize", HandleShowPrize);
        _server.AddListener("askToSell", HandleAskToSell);
        _server.AddListener("askOtherToBuy", HandleAskOtherToBuy);
        _server.AddListener("changeOwner", HandleChangeOwner);
        _server.AddListener("updateSession", HandleUpdateSession);
        _server.AddListener("updateAccount", HandleUpdateAccount);
        _server.AddListener("message", HandleMessage);
        //_server.AddListener("error", HandleError);
        _server.AddListener("recieveMessage", HandleRecieveMessage);
        _server.AddListener("notifyEvent", HandleNotifyEvent);
        _server.AddListener("stopHub", HandleStopHub);

        _settingSound = AudioAssistant.Instance.GetSettingSound(_config.gameId);

        posRoot = _bacayData.Players[accountIdString].Position;

        leaveRoom = false;
        notify.transform.parent.gameObject.SetActive(false);
        feedChecken.transform.parent.gameObject.SetActive(false);

        register.gameObject.SetActive(false);
        resign.gameObject.SetActive(false);
        noResign.gameObject.SetActive(false);
        showOneCard.gameObject.SetActive(false);
        showAllCard.gameObject.SetActive(false);
        submitChecken.gameObject.SetActive(false);

        register.onClick.AddListener(OnRegisterOwnerClick);
        resign.onClick.AddListener(OnRresignOwnerClick);
        noResign.onClick.AddListener(OnTakeOwnerClick);
        showOneCard.onClick.AddListener(OnShowOneCardClick);
        showAllCard.onClick.AddListener(OnShowAllCardClick);
        submitChecken.onClick.AddListener(OnSubmitCheckenClick);
        submitBet.onClick.AddListener(OnSubmitBetClick);

        if (_bacayData.GameLoop.Phrase < 0)
        {
            SetRoomState(8);
        }
        else
        {
            SetRoomState(0);
        }

        SetupBetOption();
        HideBetOption();
        LoadRoomInfo();
        LoadRoomPlayer(true);
        Ping();
        LoadSound();
    }