Example #1
0
    public void HandleShowResult(object[] data)
    {
        string            json        = BestHTTP.JSON.Json.Encode(data[0]);
        SRSSamGameSession gameSession = JsonConvert.DeserializeObject <SRSSamGameSession>(json);

        StartCoroutine(WaitShowResult(gameSession));
    }
    public void HandleJoinGame(object[] data)
    {
        UILayerController.Instance.HideLoading();

        string            json        = BestHTTP.JSON.Json.Encode(data[0]);
        SRSSamGameSession gameSession = JsonConvert.DeserializeObject <SRSSamGameSession>(json);

        StopAllCoroutines();
        UILayerController.Instance.ShowLayer(UILayerKey.LGameSam, _assetBundleConfig.name, (UILayer layer) =>
        {
            ((LGameSam)layer).Init(_config, _assetBundleConfig, _server, gameSession, moneyType, isRoomSolo);
        });

        //((LGameSam)UILayerController.Instance.ShowLayer(UILayerKey.LGameSam)).Init(_config, _assetBundleConfig, _server, gameSession, moneyType);
    }
Example #3
0
    public void HandleStartGame(object[] data)
    {
        string            json        = BestHTTP.JSON.Json.Encode(data[0]);
        SRSSamGameSession gameSession = JsonConvert.DeserializeObject <SRSSamGameSession>(json);

        _cardController.GiveBackAll();
        userCards.Clear();
        tableCards.Clear();

        _sam.session = gameSession;

        LoadRoomInfo();

        uiUser.UpdateUserData(_sam.session.Players[uiUser._playerData.AccountID]);
        uiUser.HideStatus();
        uiUser.HideBao1La();

        Database.Instance.UpdateUserMoney(MoneyType.GOLD, uiUser._playerData.Account.Gold);
        Database.Instance.UpdateUserMoney(MoneyType.COIN, uiUser._playerData.Account.Coin);

        foreach (var uiPlayer in uiPlayers)
        {
            uiPlayer.HideStatus();
            uiPlayer.HideBao1La();

            if (uiPlayer._playerData != null && _sam.session.Players.ContainsKey(uiPlayer._playerData.AccountID))
            {
                uiPlayer.UpdateUserData(_sam.session.Players[uiPlayer._playerData.AccountID]);
            }
        }

        btBatDau.gameObject.SetActive(false);

        turnInRound = 0;
        StartCoroutine(WaitChiaBai());
    }
Example #4
0
    public void HandleDanhBai(object[] data)
    {
        string            accountId   = data[0].ToString();
        List <int>        cardIds     = JsonConvert.DeserializeObject <List <int> >(BestHTTP.JSON.Json.Encode(data[1]));
        SRSSamGameSession gameSession = JsonConvert.DeserializeObject <SRSSamGameSession>(BestHTTP.JSON.Json.Encode(data[2]));

        uiUser.HideStatus();
        uiPlayers.ForEach(a => a.HideStatus());

        List <SamCard> cardAttack = new List <SamCard>();

        if (uiUser._playerData.AccountID.Equals(accountId))
        {
            foreach (var id in cardIds)
            {
                var uCard = userCards.FirstOrDefault(a => a.cardData.OrdinalValue == id);
                userCards.Remove(uCard);

                cardAttack.Add(uCard);
            }
            AddCardToTable(cardAttack);

            for (int i = 0; i < userCards.Count; i++)
            {
                var uCard = userCards[i];
                uCard.MoveCard(uCard.transform.position, tranUserCards[i].position, tranUserCards[i], tranUserCards[i], 1, false);
            }

            // my bao1la
            if (userCards.Count == 1)
            {
                uiUser.ShowBao1La();
            }
            else
            {
                uiUser.HideBao1La();
            }
        }
        else
        {
            var uiPlayer = uiPlayers.FirstOrDefault(a => a.IsPlayer(accountId));
            if (uiPlayer != null)
            {
                for (int i = 0; i < cardIds.Count; i++)
                {
                    // user
                    var uCard = _cardController.BorrowCard();
                    uCard.LoadData(new SRSSamCard {
                        OrdinalValue = cardIds[i]
                    }, null, false);
                    uCard.LoadCard();

                    uCard.transform.SetParent(tranWorld);
                    uCard.transform.localScale = new Vector3(0.6f, 0.6f, 1f);
                    uCard.transform.position   = uiPlayer.gCard.transform.position;

                    cardAttack.Add(uCard);

                    // remove card
                    if (uiPlayer._playerData.HandCards.Count > 0)
                    {
                        uiPlayer._playerData.HandCards.RemoveAt(0);
                    }
                }
                uiPlayer.UpdateCardNumber(uiPlayer._playerData.HandCards.Count);
            }
            AddCardToTable(cardAttack);
        }

        // check chat tuquy chat 2
        bool isAttack2     = false;
        bool isAttackTuQuy = false;

        if (gameSession.GameLoop.CurrTurnCards != null)
        {
            int turnCardCount = gameSession.GameLoop.CurrTurnCards.Count;
            if (turnCardCount > 0)
            {
                var turnCard = gameSession.GameLoop.CurrTurnCards[0];
                isAttack2     = _config.IsAttack2(turnCard.Value.Type);
                isAttackTuQuy = _config.IsAttackTuQuy(turnCard.Value.Type);

                if (isAttackTuQuy)
                {
                    // show tu quy
                    if (uiUser._playerData.AccountID.Equals(accountId))
                    {
                        uiUser.ShowStatus(_config.GetPlayerResultStatus(SamPlayerResurltStatus.TU_QUY), false, 0);
                    }
                    else
                    {
                        var uiPlayer = uiPlayers.FirstOrDefault(a => a.IsPlayer(accountId));
                        if (uiPlayer != null)
                        {
                            uiPlayer.ShowStatus(_config.GetPlayerResultStatus(SamPlayerResurltStatus.TU_QUY), false, 0);
                        }
                    }

                    // show bi chat
                    if (turnCardCount > 1)
                    {
                        var  lastTurnCard      = gameSession.GameLoop.CurrTurnCards[1];
                        bool isLastAttack2     = _config.IsAttack2(lastTurnCard.Value.Type);
                        bool isLastAttackTuQuy = _config.IsAttackTuQuy(lastTurnCard.Value.Type);

                        if (isLastAttack2 || isLastAttackTuQuy)
                        {
                            if (uiUser._playerData.AccountID.Equals(lastTurnCard.Key))
                            {
                                uiUser.ShowStatus(_config.GetPlayerResultStatus(SamPlayerResurltStatus.BI_CHAT), false, 0);
                            }
                            else
                            {
                                var uiPlayer = uiPlayers.FirstOrDefault(a => a.IsPlayer(lastTurnCard.Key));
                                if (uiPlayer != null)
                                {
                                    uiPlayer.ShowStatus(_config.GetPlayerResultStatus(SamPlayerResurltStatus.BI_CHAT), false, 0);
                                }
                            }
                        }
                    }
                }
            }
        }

        // audio
        AudioAssistant.Instance.PlaySoundGame(_config.gameId, isAttack2 ? _config.audioDanh2 : _config.audioDanhBai);
    }
Example #5
0
    public void Init(SRSSamConfig config, AssetBundleSettingItem assetBundleConfig, SamSignalRServer server, SRSSamGameSession session, int moneyType, bool isSolo)
    {
        _sam           = new SRSSam();
        _sam.session   = session;
        _sam.moneyType = moneyType;

        ClearUI();

        _config            = config;
        _assetBundleConfig = assetBundleConfig;
        _settingSound      = AudioAssistant.Instance.GetSettingSound(_config.gameId);
        _account           = Database.Instance.Account();

        _server                   = server;
        _server.OnSRSEvent        = OnSRSEvent;
        _server.OnSRSHubEvent     = OnSRSHubEvent;
        _server.OnSRSHubCallEvent = OnSRSHubCallEvent;

        gUiCoints.ForEach(a => a.SetActive(_sam.moneyType == MoneyType.COIN));
        gUiGolds.ForEach(a => a.SetActive(_sam.moneyType == MoneyType.GOLD));

        gUiSamNormals.ForEach(a => a.SetActive(!isSolo));
        gUiSamSolos.ForEach(a => a.SetActive(isSolo));

        LoadRoomInfo();
        LoadUserFirst(isSolo);
    }
Example #6
0
    IEnumerator WaitShowResult(SRSSamGameSession gameSession)
    {
        yield return(new WaitForSeconds(timeWaitShowResult));

        _sam.session = gameSession;

        DisableAllButton();

        // hide table card
        RomeveTableCard();
        userCards.ForEach(a => a.DisableCardSelect());

        // clear ui - update data - show result
        uiUser.HideCard();
        uiUser.HideBao1La();
        uiUser.HideCoundDown();
        uiUser.UpdateUserData(_sam.session.Players[uiUser._playerData.AccountID]);
        uiUser._playerData.Status = SamPlayerStatus.WAITING_MATCH;

        Database.Instance.UpdateUserMoney(MoneyType.GOLD, uiUser._playerData.Account.Gold);
        Database.Instance.UpdateUserMoney(MoneyType.COIN, uiUser._playerData.Account.Coin);

        SRSSamResult playerResult = gameSession.GameLoop.SessionResult.ResultList.FirstOrDefault(a => a.AccountId.Equals(uiUser._playerData.AccountID));

        if (playerResult != null)
        {
            SamPlayerResurltStatus status = _config.GetSamPlayerResurltStatus(playerResult.ResultFamily);
            uiUser.ShowStatus(_config.GetPlayerResultStatus(status), true, playerResult.Money);

            switch (playerResult.ResultFamily)
            {
            case SamResultFamily.TOI_TRANG:
                AudioAssistant.Instance.PlaySoundGame(_config.gameId, _config.audioThangDam);
                break;

            default:
                if (playerResult.Money < 0)
                {
                    AudioAssistant.Instance.PlaySoundGame(_config.gameId, _config.audioThua);
                }
                else
                {
                    AudioAssistant.Instance.PlaySoundGame(_config.gameId, _config.audioThang);
                }
                break;
            }
        }

        // Show Card in hand
        foreach (var uiPlayer in uiPlayers)
        {
            uiPlayer.HideCoundDown();
            uiPlayer.HideCard();
            uiPlayer.HideBao1La();

            if (uiPlayer._playerData != null && _sam.session.Players.ContainsKey(uiPlayer._playerData.AccountID))
            {
                uiPlayer.UpdateUserData(_sam.session.Players[uiPlayer._playerData.AccountID]);
                uiPlayer._playerData.Status = SamPlayerStatus.WAITING_MATCH;

                playerResult = gameSession.GameLoop.SessionResult.ResultList.FirstOrDefault(a => a.AccountId.Equals(uiPlayer._playerData.AccountID));
                if (playerResult != null)
                {
                    SamPlayerResurltStatus status = _config.GetSamPlayerResurltStatus(playerResult.ResultFamily);
                    uiPlayer.ShowStatus(_config.GetPlayerResultStatus(status), true, playerResult.Money);

                    ShowCardInHand(uiPlayer);
                }
            }
        }

        // hide result
        yield return(new WaitForSeconds(timeWaitHideResult));

        if (tableCards.Count > 0 || userCards.Count > 0)
        {
            _cardController.GiveBackAll();
            tableCards.Clear();
            userCards.Clear();

            uiUser.HideStatus();
            foreach (var uiPlayer in uiPlayers)
            {
                uiPlayer.HideStatus();
            }
        }
    }