Exemplo n.º 1
0
        public void OnOutCard(ISFSObject data)
        {
            var seat        = data.GetInt(RequestKey.KeySeat);
            var card        = data.GetInt(JlGameRequestConstKey.KeyCard);
            var foldNum     = data.ContainsKey(JlGameRequestConstKey.KeyFoldNum) ? data.GetInt(JlGameRequestConstKey.KeyFoldNum) : -1;
            var handNum     = data.ContainsKey(JlGameRequestConstKey.KeyHandNum) ? data.GetInt(JlGameRequestConstKey.KeyHandNum) : -1;
            var activeCards = data.ContainsKey(JlGameRequestConstKey.KeyActiveCards) ? data.GetIntArray(JlGameRequestConstKey.KeyActiveCards) : null; //
            var killDragon  = data.ContainsKey(JlGameRequestConstKey.KeyKillDragon) ? data.GetBoolArray(JlGameRequestConstKey.KeyKillDragon) : null;
            var isDragon    = data.ContainsKey(JlGameRequestConstKey.KeyIsDragon) ? data.GetBoolArray(JlGameRequestConstKey.KeyIsDragon) : null;

            var sendObj = SFSObject.NewInstance();

            sendObj.PutInt("card", card);
            sendObj.PutInt("seat", seat);
            sendObj.PutBoolArray("killDragon", killDragon);
            sendObj.PutBoolArray("isDragon", isDragon);


            EventObj.SendEvent("SoundEvent", "CardSound", new JlGameSound.SoundData(JlGameSound.EnAudio.None, GetPlayerInfo <JlGameUserInfo>(seat, true).SexI, card));
            EventObj.SendEvent("TableViewEvent", "OutCard", sendObj);

//            YxDebug.LogArray(activeCards);
            if (activeCards != null && activeCards.Length != 0)
            {
                GetPlayer <JlGameSelfPlayer>(SelfSeat, true).FreshHandCard(activeCards, false);
            }
            GetPlayer <JlGamePlayer>(seat, true).FreshFoldCardShow(foldNum, handNum);

            GetPlayer <JlGamePlayer>(seat, true).HideCountDown();
            YxClockManager.StopWaitPlayer();
        }
Exemplo n.º 2
0
        /// <summary>
        /// 重置
        /// </summary>
        public void Reset(bool isLanDi = false)
        {
            LaddyMgr.Rest(isLanDi);
            GuoBet = -1;

            foreach (PokerCard publicPoker in PublicPokers)
            {
                Destroy(publicPoker.gameObject);
            }

            PublicPokers = new List <PokerCard>();

            SpeakMgr.Reset();
            DealerMgr.Reset();
            AnimationMgr.Reset();
            SummaryMgr.Reset();

            var gdata = App.GetGameData <FillpitGameData>();

            //开放模式自动准备
            GetPlayerPanel().SetReadyBtnActive(!gdata.IsRoomGame);

            gdata.LastBetValue = 0;
            var players = gdata.PlayerList;

            BetMgr.BetParent.DestroyChildren();
            YxClockManager.StopWaitPlayer();

            foreach (var player in players)
            {
                var panel = (PlayerPanel)player;
                panel.Reset();
            }
        }
Exemplo n.º 3
0
        public void FreshTableCard()
        {
            if (IsGameStart && _rejoin)
            {
                var sendObj = SFSObject.NewInstance();
                sendObj.PutIntArray("color1", _color1);
                sendObj.PutIntArray("color2", _color2);
                sendObj.PutIntArray("color3", _color3);
                sendObj.PutIntArray("color4", _color4);
                GetPlayerInfo <JlGameUserInfo>().IsCurSpeaker = _curSpeaker == SelfSeat;
                sendObj.PutBoolArray("killDragon", _killDragon);
                sendObj.PutBoolArray("isDragon", _isDragon);
                EventObj.SendEvent("TableViewEvent", "Rejoin", sendObj);

                var time = _cd - (_ct - _st);
                if (time > 600)
                {
                    time = _mrcd;
                    GetPlayer <JlGamePlayer>(_curSpeaker, true).SetCountNum((int)time, true);
                }
                else
                {
                    GetPlayer <JlGamePlayer>(_curSpeaker, true).SetCountNum((int)time);
                }
                YxClockManager.BeginWaitPlayer(_curSpeaker, time);
            }
            else
            {
                EventObj.SendEvent("TableViewEvent", "Reset", null);
                if (!GetPlayer <JlGamePlayer>().ReadyState)
                {
                    EventObj.SendEvent("TableViewEvent", "Ready", null);
                }
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 重置
        /// </summary>
        public void Reset()
        {
            YxClockManager.StopWaitPlayer();
            foreach (PokerCard publicPoker in PublicPokers)
            {
                DestroyImmediate(publicPoker.gameObject);
            }
            var gdata = App.GetGameData <TexasGameData>();

            gdata.GStatus = YxEGameStatus.Normal;
            PublicPokers.Clear();
            ResultData.Clear();
            SpeakMagr.Reset();
            DealerMagr.Reset();
            SmallBanker = -1;
            BigBanker   = -1;

            var playerList  = gdata.PlayerList;
            var playerCount = playerList.Length;

            for (var i = 0; i < playerCount; i++)
            {
                var player = gdata.GetPlayer <PlayerPanel>(i);
                player.Reset();
            }

            foreach (var pokerPos in PublicPokerPos)
            {
                pokerPos.transform.DestroyChildren();
            }
            StopAllCoroutines();
        }
Exemplo n.º 5
0
        /// <summary>
        /// 重置
        /// </summary>
        public void Reset()
        {
            if (PublicPokers.Count > 0)
            {
                foreach (PokerCard publicPoker in PublicPokers)
                {
                    if (publicPoker != null && publicPoker.gameObject != null)
                    {
                        Destroy(publicPoker.gameObject);
                    }
                }
            }

            YxClockManager.StopWaitPlayer();
            PublicPokers.Clear();
            SpeakMgr.Reset();
            DealerMgr.Rest();

            var playerList = App.GetGameData <GangwuGameData>().PlayerList;

            foreach (var yxBaseGamePlayer in playerList)
            {
                var player = (PlayerPanel)yxBaseGamePlayer;
                player.Reset();
            }
            StopAllCoroutines();
        }
Exemplo n.º 6
0
 /// <summary>
 /// 当游戏结束时,运行处理数据
 /// </summary>
 /// <param name="data"></param>
 void OnGameOver(ISFSObject data)
 {
     if (data.ContainsKey("users"))
     {
         App.GetGameManager <FillpitGameManager>().SummaryMgr.OnGameOver(data);
     }
     YxClockManager.StopWaitPlayer();
 }
Exemplo n.º 7
0
        /// <summary>
        /// 结算结束
        /// </summary>
        public void ResultDone()
        {
            PokerResultInit();

            CancelInvoke("ResultSomeone");
            //结算完成重置数据
            Reset();
            BetMagr.Reset();
            IsResultDone = false;
            YxClockManager.StopWaitPlayer();
        }
Exemplo n.º 8
0
        /// <summary>
        /// 初始化 房间
        /// </summary>
        public void InitRoom(ISFSObject gameInfo)
        {
            var gdata = App.GetGameData <SssGameData>();

            if (gameInfo.ContainsKey("showGoldRate"))
            {
                gdata.ShowGoldRate = gameInfo.GetInt("showGoldRate");
            }

            if (gameInfo.ContainsKey("rule"))
            {
                RoomRuleView.InitRoomRuleInfo(gameInfo);
            }

            if (gameInfo.ContainsKey("ownerId"))
            {
                _ownerId = gameInfo.GetInt("ownerId");
            }

            RoomInfo.ShowRoomInfo(gameInfo);
            //获取房间配置
            if (gdata.IsRoomGame)
            {
                WeiXinInviteBtn.ChatInviteBtn.SetActive(!gdata.IsPlayed);
                HistoryMgr.MaxCount = gameInfo.GetInt("maxRound");
            }
            else
            {
                WeiXinInviteBtn.ChatInviteBtn.SetActive(false);
            }

            if (gameInfo.ContainsKey("state"))
            {
                int state = gameInfo.GetInt("state");
                if (state > 1)
                {
                    int cd            = gameInfo.GetInt("cd");
                    int remainingTime = GetRemainingTime(cd, gameInfo);
                    ClockCd.BeginCountDown(remainingTime, (int)gameInfo.GetLong("st"), false);     //开始记时
                    Debug.Log("<color=#00FF2BFF>" + "重连服务器时间擢" + gameInfo.GetLong("ct") + "</color>");
                    YxClockManager.BeginToCountDown(remainingTime);
                }
            }

            if (ChoiseWay != null)
            {
                int len = ChoiseWay.Length;
                for (int i = 0; i < len; i++)
                {
                    ChoiseWay[i].Init();
                }
            }
        }
Exemplo n.º 9
0
        public override int OnChangeRoom()
        {
            base.OnChangeRoom();
            YxClockManager.StopWaitPlayer();
            var panelList = App.GameData.PlayerList;

            foreach (var panel in panelList)
            {
                panel.Info = null;
                panel.gameObject.SetActive(false);
            }
            return(base.OnChangeRoom());
        }
Exemplo n.º 10
0
        /// <summary>
        /// 显示指定玩家说话
        /// </summary>
        /// <param name="speaker"></param>
        /// <param name="cd"></param>
        public void Speaker(int speaker, float cd = -1)
        {
            var speakerPanel = App.GameData.GetPlayer <PlayerPanel>(speaker, true);

            if (speakerPanel.Info == null)
            {
                YxDebug.Log("座位上没有玩家!");
                return;
            }

            YxClockManager.BeginWaitPlayer(speaker, cd <= 0
                ? App.GetGameData <GangwuGameData>().SpeakCd
                : cd);
        }
Exemplo n.º 11
0
        public void OnWhoSpeak(ISFSObject data)
        {
            var cd          = data.GetInt(JlGameRequestConstKey.KeyCdTime);
            var seat        = data.GetInt(RequestKey.KeySeat);
            var activeCards = data.ContainsKey(JlGameRequestConstKey.KeyActiveCards) ? data.GetIntArray(JlGameRequestConstKey.KeyActiveCards) : null;
            var foldNum     = data.ContainsKey(JlGameRequestConstKey.KeyFoldNum) ? data.GetInt(JlGameRequestConstKey.KeyFoldNum) : -1;
            var handNum     = data.ContainsKey(JlGameRequestConstKey.KeyHandNum) ? data.GetInt(JlGameRequestConstKey.KeyHandNum) : -1;

//            YxDebug.LogArray(activeCards);

            if (cd > 600)
            {
                var count = YxClockManager.WaitPlayerCountDown;
                if (count != null)
                {
                    count.Loop = true;
                }
                cd = _mrcd;
                GetPlayer <JlGamePlayer>(seat, true).SetCountNum(cd, true);
            }
            else
            {
                GetPlayer <JlGamePlayer>(seat, true).SetCountNum(cd);
            }

            YxClockManager.BeginWaitPlayer(seat, cd);


            if (seat == SelfSeat)
            {
                GetPlayer <JlGameSelfPlayer>(SelfSeat, true).FreshHandCard(activeCards);

                EventObj.SendEvent("SoundEvent", "RemindSound",
                                   activeCards != null && activeCards.Length == 0
                        ? new JlGameSound.SoundData(JlGameSound.EnAudio.FoldCard,
                                                    GetPlayerInfo <JlGameUserInfo>(seat, true).SexI)
                        : new JlGameSound.SoundData(JlGameSound.EnAudio.OutCard,
                                                    GetPlayerInfo <JlGameUserInfo>(seat, true).SexI));
            }
            else
            {
                GetPlayer <JlGameSelfPlayer>(SelfSeat, true).NoCanClickCard();
            }

            if (foldNum != -1 && handNum != -1)
            {
                GetPlayer <JlGamePlayer>(seat, true).FreshFoldCardShow(foldNum, handNum);
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// 显示指定玩家说话
        /// </summary>
        /// <param name="speaker"></param>
        /// <param name="cd"></param>
        /// <param name="waitTime"></param>
        IEnumerator Speaker(int speaker, float cd = -1, float waitTime = 0f)
        {
            yield return(new WaitForSeconds(waitTime));

            var gdata = App.GetGameData <TexasGameData>();

            YxClockManager.BeginWaitPlayer(speaker, cd <= 0 ? gdata.SpeakCd : cd);
            if (speaker == gdata.SelfSeat)
            {
                SpeakMagr.ShowSpeak();
            }
            else
            {
                SpeakMagr.ShowSelfType();
            }
        }
Exemplo n.º 13
0
        /// <summary>
        /// 游戏数据重置
        /// </summary>
        /// <param name="init">是否直接清理玩家手牌,不播放动画</param>
        public virtual void Reset(bool init = false)
        {
            PublicPokers = new List <PokerCard>();

            DealPokerMgr.Reset();
            SpeakMgr.Reset();
            BetMgr.Reset();
            YxClockManager.StopToCountDown();

            var gdata      = App.GetGameData <BlackJackGameData>();
            var playerList = gdata.PlayerList;

            foreach (GameObject bet in Bets)
            {
                Destroy(bet);
            }
            Bets.Clear();

            if (init)
            {
                YxDebug.LogError("Reset but && Init");
                foreach (var yxBaseGamePlayer in playerList)
                {
                    var player = (BjPlayerPanel)yxBaseGamePlayer;
                    player.Reset();
                }
                foreach (PokerCard publicPoker in PublicPokers)
                {
                    Destroy(publicPoker.gameObject);
                }
                PublicPokers.Clear();
                gdata.BjBankerBanker.Reset();
            }
            else
            {
                foreach (var yxBaseGamePlayer in playerList)
                {
                    var player = (BjPlayerPanel)yxBaseGamePlayer;
                    player.ThrowPokersWithAnim();
                    player.Reset();
                }
                var banker = gdata.BjBankerBanker;
                banker.ThrowPokersWithAnim();
                banker.Reset();
            }
            SelfPlayer.SetReadyBtnActive(true);
        }
Exemplo n.º 14
0
        internal void OnBet(ISFSObject data)
        {
            int bankerSeat = data.GetInt("banker");
            var gdata      = App.GetGameData <PaiJiuGameData>();

            gdata.BankerSeat = bankerSeat;
            gdata.GetPlayer <PaiJiuPlayer>(bankerSeat, true).SetBankerMarkActive(true);
            if (bankerSeat != App.GameData.SelfSeat)
            {
                SpeakMgr.ShowSpeak(GameRequestType.BeginBet);
            }

            CheckShowedPanel.ResetCards(data.GetInt("cardcnt") > 16);       //一次出现发牌16张,共32张牌.如果张数为32,就需要重置出现牌信息
            YxClockManager.BeginToCountDown(data.GetInt("cd"));
            TableData.SetTalebData(data);
            OnGameStart();
        }
Exemplo n.º 15
0
        public void OnFoldCard(ISFSObject data)
        {
            var seat    = data.GetInt(RequestKey.KeySeat);
            var foldNum = data.GetInt(JlGameRequestConstKey.KeyFoldNum);
            var handNum = data.GetInt(JlGameRequestConstKey.KeyHandNum);

            var card      = data.ContainsKey(JlGameRequestConstKey.KeyCard) ? data.GetInt(JlGameRequestConstKey.KeyCard) : -1;
            var foldScore = data.ContainsKey(JlGameRequestConstKey.KeyFoldScore) ? data.GetInt(JlGameRequestConstKey.KeyFoldScore) : -1;

            GetPlayer <JlGamePlayer>(seat, true).FreshFoldCardShow(foldNum, handNum, foldScore);

            if (seat == SelfSeat)
            {
                GetPlayer <JlGameSelfPlayer>(seat, true).FoldCard(card);
            }
            EventObj.SendEvent("SoundEvent", "RemindSound", new JlGameSound.SoundData(JlGameSound.EnAudio.HasFoldCard, GetPlayerInfo <JlGameUserInfo>(seat, true).SexI));

            GetPlayer <JlGamePlayer>(seat, true).HideCountDown();
            YxClockManager.StopWaitPlayer();
        }
Exemplo n.º 16
0
        /// <summary>
        /// 显示指定玩家说话
        /// </summary>
        /// <param name="speaker"></param>
        /// <param name="cd"></param>
        /// <param name="rt"></param>
        public void Speaker(int speaker, float cd = -1, GameRequestType rt = GameRequestType.None)
        {
            var gdata = App.GetGameData <FillpitGameData>();

            if (gdata.GetPlayerInfo(speaker, true) == null)
            {
                YxDebug.Log("座位上没有玩家!");
                return;
            }

            //设置等待
            bool loop = cd > 300;

            cd = loop ? 35 : cd <= 0 ? gdata.SpeakCd : cd;
            YxClockManager.BeginWaitPlayer(speaker, cd, isLoop: loop);

            if (speaker == gdata.SelfSeat)
            {
                SpeakMgr.ShowSpeak(rt);
            }
        }
Exemplo n.º 17
0
        public void InitGameInfo(ISFSObject gameInfo)
        {
            var gdata = App.GetGameData <PaiJiuGameData>();

            if (gameInfo.ContainsKey("curante"))
            {
                gdata.Ante = gameInfo.GetInt("curante");
            }
            if (gameInfo.ContainsKey("cargs2"))
            {
                BetMgr.InitChips(gameInfo);
            }
            if (gameInfo.ContainsKey("banker"))
            {
                gdata.BankerSeat = gameInfo.GetInt("banker");
            }



            var status = 0;

            if (gameInfo.ContainsKey("status"))
            {
                status       = gameInfo.GetInt("status");
                gdata.Status = status;
                bool isGameing = status > 0;
                gdata.IsGameing = isGameing;
                //设置时间
                if (!isGameing || !gameInfo.ContainsKey("cd"))
                {
                    return;
                }
                var cd = gameInfo.GetInt("cd");
                cd -= (int)(gameInfo.GetLong("ct") - gameInfo.GetLong("st"));
                YxClockManager.BeginToCountDown(cd);
            }
        }
Exemplo n.º 18
0
        public override void GameResponseStatus(int type, ISFSObject response)
        {
            var gdata = App.GetGameData <GangwuGameData>();

            if (!gdata.IsGameInfo)
            {
                YxDebug.LogError("GameInfo还没有初始化!!");
                return;
            }

            switch ((GameRequestType)type)
            {
            case GameRequestType.Bet:

                if (response.ContainsKey("seat"))
                {
                    int         bseat    = response.GetInt("seat");
                    int         bgold    = response.GetInt("gold");
                    PlayerPanel onePanel = gdata.GetPlayer <PlayerPanel>(bseat, true);
                    if (bgold > 0)
                    {
                        if (bgold + onePanel.BetMoney == SpeakMgr.MaxBetNum)
                        {
                            onePanel.ShowGameType("call");
                        }
                        else if (onePanel.Info != null && bgold == onePanel.Coin)
                        {
                            onePanel.CurGameType = PlayerGameType.AllIn;
                            onePanel.ShowGameType("allIn");
                        }
                        else
                        {
                            onePanel.ShowGameType("");
                        }
                    }
                    else
                    {
                        onePanel.ShowGameType("seePoker");
                    }
                    onePanel.PlayerBet(bgold);

                    if (onePanel.CurGameType != PlayerGameType.AllIn &&
                        onePanel.BetMoney > SpeakMgr.MaxBetNum)
                    {
                        Facade.Instance <MusicManager>().Play("addBet");
                        onePanel.ShowGameType(string.Empty);
                    }
                    else if (onePanel.CurGameType != PlayerGameType.AllIn &&
                             onePanel.BetMoney == SpeakMgr.MaxBetNum)
                    {
                        Facade.Instance <MusicManager>().Play(bgold > 0
                                ? "call"
                                : "seePoker");
                    }

                    //设置最大下注
                    SpeakMgr.MaxBetNum = onePanel.BetMoney >
                                         SpeakMgr.MaxBetNum
                            ? onePanel.BetMoney
                            : SpeakMgr.MaxBetNum;


                    if (bseat == gdata.SelfSeat)
                    {
                        SpeakMgr.ShowAuto();
                        SpeakMgr.AddBetSum = 0;
                    }
                }
                //包含users说明游戏开始
                else if (response.ContainsKey("users"))
                {
                    ++gdata.CurRound;
                    int[] beginSeats   = response.GetIntArray("users");
                    int   beginBetGold = response.GetInt("guoBet");
                    gdata.Ante        = response.GetInt("curante");
                    gdata.IsGameStart = true;
                    gdata.IsPlayed    = true;
                    foreach (int seat in beginSeats)
                    {
                        PlayerPanel panel = gdata.GetPlayer <PlayerPanel>(seat, true);
                        if (panel.Info != null)
                        {
                            panel.SetPlayerReadyState(true);
                            panel.PlayerBet(beginBetGold);
                        }
                    }
                    HistoryResultMgr.CreateHistoryItem(beginSeats);
                    //隐藏准备按钮
                    gdata.GetPlayer <SelfPlayerPanel>().OnGameStart();
                }
                break;



            case GameRequestType.Fold:
                int         fseat     = response.GetInt("seat");
                PlayerPanel foldPanel = gdata.GetPlayer <PlayerPanel>(fseat, true);
                foldPanel.CurGameType = PlayerGameType.Fold;
                foldPanel.Mask.SetActive(true);
                foldPanel.BetLabel.gameObject.SetActive(foldPanel.BetMoney > 0);
                foldPanel.ShowGameType("fold");
                if (fseat == gdata.SelfSeat)
                {
                    SpeakMgr.ShowNothing();
                }
                break;


            case GameRequestType.Card:

                if (response.ContainsKey("selfCard"))
                {
                    int[] selfCards = response.GetIntArray("selfCard");
                    if (selfCards.Length > 0)
                    {
                        gdata.GetPlayer <PlayerPanel>().UserBetPoker.LeftCardValue = selfCards[0];
                    }
                }

                if (response.ContainsKey("cards"))
                {
                    int[] cardSeats = response.GetIntArray("seats");
                    int[] cards     = response.GetIntArray("cards");

                    int cardCount = response.GetInt("cardCount");
                    gdata.CardCount = cardCount;

                    //如果为cardCount是2,则是第一轮发牌,需要先发一轮暗牌
                    if (cardCount <= 2)
                    {
                        int[] tempCards = new int[cardSeats.Length];

                        for (int i = 0; i < cardSeats.Length; i++)
                        {
                            if (cardSeats[i] == gdata.SelfSeat)
                            {
                                tempCards[i] = gdata.GetPlayer <PlayerPanel>().UserBetPoker.LeftCardValue;
                            }
                        }

                        DealerMgr.BeginBigDeal(tempCards, cardSeats, 0);
                    }

                    DealerMgr.BeginBigDeal(cards, cardSeats, cardCount - 1);

                    //初始化玩家当前状态信息
                    foreach (int seat in cardSeats)
                    {
                        gdata.GetPlayer <PlayerPanel>(seat, true).ShowGameType(string.Empty);
                    }
                }

                //每轮开始清除最大下注
                SpeakMgr.MaxBetNum = 0;
                SpeakMgr.AddBetSum = 0;
                BetMgr.CollectBet();
                foreach (var yxBaseGamePlayer in gdata.PlayerList)
                {
                    var panel = (PlayerPanel)yxBaseGamePlayer;
                    panel.BetMoney      = 0;
                    panel.BetLabel.text = panel.BetMoney.ToString();
                }

                SpeakMgr.BetRemenber.Clear();

                break;


            case GameRequestType.Result:
                gdata.AllocateFour = false;
                //当接到结算时,由于要排除由于手机卡顿或者由于有玩家手上筹码过少,引起的直接结算,这里将手牌取消动画显示
                DealerMgr.OnResult();

                ResultMgr.OnGameResult(response.GetSFSArray("result"));
                StartCoroutine(ShowResultView());

                DoResult(response);

                HistoryResultMgr.GetHistoryInfo(response);

                YxClockManager.StopWaitPlayer();
                break;


            case GameRequestType.BetSpeak:

                int betSpeakSeat = response.GetInt("seat");
                var betSpeaker   = gdata.GetPlayer <PlayerPanel>(betSpeakSeat, true);

                if (!betSpeaker.ReadyState)
                {
                    return;
                }

                gdata.AllocateFour = response.ContainsKey("allocateFour") && response.GetBool("allocateFour");

                gdata.SpeakCd = response.GetInt("cd");
                betSpeaker.ShowGameType(string.Empty);
                Speaker(betSpeakSeat, response.GetInt("cd"));
                if (betSpeakSeat == gdata.SelfSeat)
                {
                    betSpeaker.BetLabel.gameObject.SetActive(true);
                    SpeakMgr.ShowSpeak();
                }
                break;



            case GameRequestType.FollowSpeak:

                int followSpeakSeat = response.GetInt("seat");
                var followSpeaker   = gdata.GetPlayer <PlayerPanel>(followSpeakSeat, true);
                if (!followSpeaker.ReadyState)
                {
                    return;
                }

                gdata.SpeakCd      = response.GetInt("cd");
                gdata.AllocateFour = response.GetBool("allocateFour");
                followSpeaker.ShowGameType(string.Empty);

                Speaker(followSpeakSeat, response.GetInt("cd"));
                if (followSpeakSeat == gdata.SelfSeat)
                {
                    followSpeaker.BetLabel.gameObject.SetActive(true);
                    SpeakMgr.ShowSpeak();
                }
                break;

            case GameRequestType.AllowReady:
                gdata.AllocateFour = false;
                gdata.IsGameStart  = false;

                _waitResult = false;       //允许显示结算

                YxClockManager.StopWaitPlayer();
                break;

            default:
                YxDebug.Log("不存在的服务器交互!");
                break;
            }
        }
Exemplo n.º 19
0
        public override void GameResponseStatus(int type, ISFSObject response)
        {
            var gdata = App.GetGameData <TexasGameData>();

            switch ((GameRequestType)type)
            {
            case GameRequestType.Bet:

                var bseat = response.GetInt("seat");
                var bgold = response.GetInt("gold");
                if (bseat == gdata.SelfSeat)
                {
                    gdata.GStatus = YxEGameStatus.PlayAndConfine;
                }
                var bplayer = gdata.GetPlayer <PlayerPanel>(bseat, true);
                bplayer.PlayerBet(bgold);
                YxClockManager.StopToCountDown();
                SpeakMagr.PoolNum += bgold;

                if (bplayer.CurGameType != PlayerGameType.AllIn && bplayer.BetMoney > SpeakMagr.MaxBetNum)
                {
                    Facade.Instance <MusicManager>().Play("addBet");
                }
                else if (bplayer.CurGameType != PlayerGameType.AllIn && bplayer.BetMoney == SpeakMagr.MaxBetNum)
                {
                    bool isCall = bgold > 0;
                    Facade.Instance <MusicManager>().Play(isCall
                            ? "call"
                            : "seePoker");
                    bplayer.CurGameType = isCall ? PlayerGameType.Call : PlayerGameType.SeePoker;
                }

                //设置最大下注
                SpeakMagr.MaxBetNum = bplayer.BetMoney >
                                      SpeakMagr.MaxBetNum
                        ? bplayer.BetMoney
                        : SpeakMagr.MaxBetNum;

                YxDebug.Log("玩家 " + bseat + " 下注 : " + bgold);

                if (response.ContainsKey("speaker"))
                {
                    StartCoroutine(Speaker(response.GetInt("speaker"),
                                           response.ContainsKey("cd")
                                ? response.GetInt("cd")
                                : App.GetGameData <TexasGameData>().SpeakCd));
                }

                break;

            case GameRequestType.Fold:
            {
                var fseat   = response.GetInt("seat");
                var fplayer = gdata.GetPlayer <PlayerPanel>(fseat, true);
                YxClockManager.StopWaitPlayer();
                fplayer.CurGameType = PlayerGameType.Fold;
                //fplayer.ReadyState = false;
                Facade.Instance <MusicManager>().Play("fold");
                if (fseat == gdata.SelfSeat)
                {
                    SpeakMagr.ShowNothing();
                    gdata.GStatus = YxEGameStatus.Normal;
                }
                YxDebug.Log("玩家 " + fseat + " 弃牌!!");

                if (response.ContainsKey("speaker"))
                {
                    StartCoroutine(Speaker(response.GetInt("speaker"),
                                           response.ContainsKey("cd")
                                    ? response.GetInt("cd")
                                    : App.GetGameData <TexasGameData>().SpeakCd));
                }
            }
            break;

            case GameRequestType.HandCard:
                //游戏开始
                gdata.IsGameStart = true;

                //设置自己的状态
                var self = gdata.GetPlayer <SelfPanel>();
                self.SetReadyBtnActive(false);

                //游戏开始要隐藏微信邀请按钮
                if (gdata.IsRoomGame)
                {
                    RModelMagr.OnGameStart();
                    gdata.IsPlayed = true;
                }

                //下大小盲注时,游戏开始
                if (response.ContainsKey("bkp"))
                {
                    int round = ++gdata.CurRound;

                    RModelMagr.UpDataRoundValue(round);
                    IsResultDone = false;

                    //小盲注 在下一家为大盲注
                    var bkp = response.GetInt("bkp");

                    if (gdata.GetPlayer().ReadyState)
                    {
                        gdata.GStatus = self.ReadyState ? YxEGameStatus.PlayAndConfine : YxEGameStatus.Play;
                    }

                    var playerList  = gdata.PlayerList;
                    var playerCount = playerList.Length;
                    var maxCount    = playerCount + bkp;
                    for (var i = bkp; i < maxCount; i++)
                    {
                        var index  = i % playerCount;
                        var player = gdata.GetPlayer <PlayerPanel>(index, true);
                        if (player.Info == null || !player.ReadyState)
                        {
                            continue;
                        }

                        if (SmallBanker == -1)
                        {
                            //小盲下注
                            var xmz = player.RoomCoin >= gdata.Ante
                                    ? gdata.Ante : player.RoomCoin;
                            player.PlayerBet(xmz);
                            SmallBanker         = index;
                            SpeakMagr.MaxBetNum = xmz;
                            SpeakMagr.PoolNum  += xmz;
                        }
                        else if (BigBanker == -1)
                        {
                            //大盲下注
                            var dmz = player.RoomCoin >= gdata.Ante * 2
                                    ? gdata.Ante * 2
                                    : player.RoomCoin;
                            player.Blinds.SetActive(true);
                            player.PlayerBet(dmz);
                            BigBanker           = i;
                            SpeakMagr.MaxBetNum = dmz > SpeakMagr.MaxBetNum
                                    ? dmz
                                    : SpeakMagr.MaxBetNum;
                            SpeakMagr.PoolNum += dmz;
                        }
                    }

                    //获得手牌
                    if (response.ContainsKey(RequestKey.KeyCards))
                    {
                        DealerMagr.BeginSmallDeal(SmallBanker, response.GetIntArray(RequestKey.KeyCards));
                    }

                    if (HistoryResultMgr != null)
                    {
                        HistoryResultMgr.CreateHistoryItem(response);
                    }
                }
                else
                {
                    SpeakMagr.MaxBetNum = 0;         //每轮开始清除最大下注

                    BetMagr.Invoke("CollectBet", 0.5f);

                    //发公共牌
                    DealerMagr.BeginBigDeal(response.GetIntArray(RequestKey.KeyCards));

                    if (response.ContainsKey("speaker"))
                    {
                        StartCoroutine(Speaker(response.GetInt("speaker"), gdata.SpeakCd, 0.7f));
                    }
                    HideAllPlayersGameType();
                }

                break;


            case GameRequestType.Request:
            {
                gdata.GStatus = YxEGameStatus.Normal;
                SpeakMagr.ShowNothing();
                HideAllPlayersGameType();
                YxClockManager.StopWaitPlayer();

                //每轮开始清除最大下注
                BetMagr.CollectBet();

                var players = response.GetSFSArray("players");

                ResultCd = response.GetInt("cd");

                if (response.ContainsKey("croomct"))
                {
                    RModelMagr.CalibrationTime((int)response.GetLong("croomct"));
                }

                var idxIndex        = 0;
                var playerDataCount = players.Count;
                for (var i = 0; i < playerDataCount; i++)
                {
                    var playerData = players.GetSFSObject(i);
                    //没有参与游戏的玩家直接跳过
                    if (!playerData.ContainsKey("isPlayed") || !playerData.GetBool("isPlayed"))
                    {
                        continue;
                    }
                    //弃牌玩家不会设置数据
                    bool isFold = playerData.ContainsKey("isGiveUp") && playerData.GetBool("isGiveUp");
                    if (isFold)
                    {
                        continue;
                    }

                    //座位号
                    var seat = playerData.GetInt("seat");

                    //玩家输赢
                    var winGold = Math.Abs(playerData.GetInt("xz")) + playerData.GetInt("gold");

                    var p = gdata.GetPlayer <PlayerPanel>(seat, true);
                    p.Blinds.SetActive(false);
                    if (seat != gdata.SelfSeat)
                    {
                        var cardArray = playerData.GetIntArray("cardArr");
                        p.ShowHandCards(cardArray);
                        p.UserBetPoker.TurnOverCard();
                    }

                    if (p.Info == null)
                    {
                        continue;
                    }

                    if (playerData.ContainsKey("roomGold"))
                    {
                        p.RoomCoin = playerData.GetInt("roomGold");
                    }

                    if (winGold <= 0)
                    {
                        continue;
                    }

                    ISFSObject teax;
                    if (playerData.ContainsKey("teax"))
                    {
                        teax = playerData.GetSFSObject("teax");
                    }
                    else
                    {
                        teax = new SFSObject();
                        teax.PutInt("idx", idxIndex);
                        idxIndex++;
                    }
                    teax.PutInt("seat", seat);
                    teax.PutInt("gold", winGold);
                    teax.PutBool("isGiveUp", false);
                    teax.PutIntArray("cardArr", playerData.GetIntArray("cardArr"));

                    ////赢家拿钱
                    var teaxIndex = teax.GetInt("idx");
                    var wins      = ResultData.ContainsKey(teaxIndex) ? ResultData[teaxIndex] : new List <ISFSObject>();
                    wins.Add(teax);
                    ResultData[teaxIndex] = wins;
                }

                if (HistoryResultMgr != null)
                {
                    if (response.ContainsKey("curTime"))
                    {
                        HistoryResultMgr.SetHistoryItemTime(response.GetUtfString("curTime"));
                    }
                    HistoryResultMgr.GetHistoryInfo(response);         //获取战绩信息
                }

                BeginResult();
                if (TotalScoreView != null)
                {
                    TotalScoreView.OnGetGameResultInfo(response);
                }
            }
            break;

            case GameRequestType.Speaker:
                var speakCd = response.GetInt("cd");
                gdata.SpeakCd = speakCd;
                StartCoroutine(Speaker(response.GetInt("speaker"), speakCd));
                break;

            case GameRequestType.SetGold:

                var setPlayer = gdata.GetPlayer <PlayerPanel>(response.GetInt("seat"), true);
                var gold      = response.GetInt(RequestKey.KeyGold);
                setPlayer.Coin    -= gold - setPlayer.RoomCoin;
                setPlayer.RoomCoin = gold;
                break;

            case GameRequestType.AllowReady:
                gdata.GStatus     = YxEGameStatus.Normal;
                gdata.IsGameStart = false;
                //清空准备列表开始接收准备信息
                //如果仍在结算则提前结算完成
                {
                    if (IsResultDone)
                    {
                        ResultDone();
                    }
                    var playerList  = gdata.PlayerList;
                    var playerCount = playerList.Length;
                    for (var i = 0; i < playerCount; i++)
                    {
                        var player = gdata.GetPlayer <PlayerPanel>(i);
                        if (player.Info != null && player.RoomCoin <= 0)
                        {
                            player.ReadyState = false;
                        }
                    }

                    CheckSelfGold();
                }
                break;

            default:
                YxDebug.Log("不存在的服务器交互!");
                break;
            }
        }
Exemplo n.º 20
0
        public override void GameResponseStatus(int type, ISFSObject data)
        {
            var gdata = App.GetGameData <BlackJackGameData>();

            if (!gdata.IsGameInfo)
            {
                YxDebug.LogError("GameInfo还没有初始化!!");
                return;
            }

            switch ((GameRequestType)type)
            {
            case GameRequestType.StartAnte:

                DealPokerMgr.CleanPokers();            //清理掉上一把没有清理掉的手牌
                //ClockCd.BeginCountDown(data.GetInt("cd"));
                YxClockManager.BeginToCountDown(data.GetInt("cd"));
                SpeakMgr.BetViewActive(true);

                //游戏开始,隐藏准备按键和标志
                var anteUsers = gdata.PlayerList;
                foreach (var yxBaseGamePlayer in anteUsers)
                {
                    var anteUser = (BjPlayerPanel)yxBaseGamePlayer;
                    anteUser.SetReadyBtnActive(false);
                    anteUser.SetReadyMarkActive(false);
                }
                break;


            case GameRequestType.EndAnte:

                SpeakMgr.ShowNothing();
                YxClockManager.StopToCountDown();
                break;


            case GameRequestType.Ante:

                int anteSeat = data.GetInt("seat");
                int anteGold = data.GetInt("gold");
                gdata.GetPlayer <BjPlayerPanel>(anteSeat, true).PlayerBet(anteGold);
                if (anteSeat == SelfSeat && anteGold > 0)
                {
                    gdata.IsPlaying = true;
                    BetBtnMgr.CheckColdClickAnte();
                }
                break;


            case GameRequestType.Allocate:

                if (data.ContainsKey("cards"))
                {
                    ISFSArray allocateArray = data.GetSFSArray("cards");

                    foreach (ISFSObject player in allocateArray)
                    {
                        int[] allocateSeat   = { player.GetInt("seat") };
                        int[] allowcateCards = player.GetIntArray("cards");
                        DealPokerMgr.EnqueueCardInfo(allocateSeat, allowcateCards);
                        DealPokerMgr.BeginDealCards();          //开始发牌
                    }
                }

                if (data.ContainsKey("bankcards"))
                {
                    int[] albankerCards = data.GetIntArray("bankcards");

                    DealPokerMgr.EnqueueCardInfo(gdata.BjBankerBanker, albankerCards);
                    DealPokerMgr.BeginDealCards();
                }

                if (data.ContainsKey("card"))
                {
                    int cardSeat = data.GetInt("seat");
                    DealPokerMgr.EnqueueCardInfo(cardSeat, data.GetInt("card"));
                    gdata.GetPlayer <BjPlayerPanel>(cardSeat, true).StopCountDown();

                    if (gdata.IsMyTurn(cardSeat))
                    {
                        SpeakMgr.DoubleBtnEnable(false);
                        SpeakMgr.InsuranceBtnEnable(false);
                    }
                }
                SpeakMgr.ShowNothing();
                break;


            case GameRequestType.Result:
                gdata.IsGameing = false;
                gdata.IsPlaying = false;
                ResultMgr.InitResultView(data);
                ResultMgr.ShowResultView();

                if (data.ContainsKey("users"))
                {
                    ISFSArray resultUsers = data.GetSFSArray("users");
                    foreach (ISFSObject resultUser in resultUsers)
                    {
                        int resultSeat = resultUser.GetInt("seat");
                        var panel      = gdata.GetPlayer <BjPlayerPanel>(resultSeat, true);
                        if (panel.Info == null)
                        {
                            continue;
                        }
                        panel.Coin = resultUser.GetLong("ttgold");

                        if (resultSeat == SelfSeat)
                        {
                            ResultMgr.InitResultView(resultUser);
                        }
                    }
                }
                Invoke("ResetGame", 6);
                break;


            case GameRequestType.Speak:

                int   speakSeat = data.GetInt("seat");
                float speakCd   = data.GetInt("cd");
                gdata.GetPlayer <BjPlayerPanel>(speakSeat, true).BeginCountDown(speakCd);

                if (speakSeat != SelfSeat)
                {
                    YxDebug.Log(" === no my self === " + SelfSeat);
                    SpeakMgr.ShowNothing();
                    break;
                }

                SpeakMgr spkMgr = SpeakMgr;
                spkMgr.SpeakViewActive(true);

                //显示双倍和保险按键
                if (data.ContainsKey("addrate"))
                {
                    //双倍按钮的显示和是否能按
                    spkMgr.DoubleBtn.SetActive(data.GetBool("addrate"));
                    spkMgr.DoubleBtnEnable(SelfPlayer.BetMoney / 2 <= gdata.GetSelfPanel().Coin);

                    //保险按钮的显示和是否能按
                    spkMgr.InsuranceBtn.SetActive(data.GetBool("insurance"));
                    spkMgr.InsuranceBtnEnable(SelfPlayer.BetMoney <= gdata.GetSelfPanel().Coin);
                }

                break;


            case GameRequestType.Stand:

                int standSeat = data.GetInt("seat");
                gdata.GetPlayer <BjPlayerPanel>(standSeat).StopCountDown();
                if (standSeat == SelfSeat)
                {
                    SpeakMgr.ShowNothing();
                }

                break;


            case GameRequestType.AddRate:

                if (data.ContainsKey("seat"))
                {
                    int addRateSeat = data.GetInt("seat");
                    gdata.GetPlayer <BjPlayerPanel>(addRateSeat).BuyDouble(data.GetInt("gold"));
                    if (addRateSeat == SelfSeat)
                    {
                        SpeakMgr.SpeakViewActive(true);
                        SpeakMgr.DoubleBtnEnable(false);
                    }
                }
                break;

            case GameRequestType.BankerAllocate:

                SpeakMgr.ShowNothing();

                if (data.ContainsKey("cards"))
                {
                    gdata.BjBankerBanker.ShowBankerCard0(data.GetIntArray("cards")[0]);
                    DealPokerMgr.DealAllPoker();
                }

                //庄家要牌
                if (data.ContainsKey("card"))
                {
                    DealPokerMgr.EnqueueCardInfo(gdata.BjBankerBanker, data.GetInt("card"));
                    DealPokerMgr.BeginDealCards();
                }

                break;

            case GameRequestType.Insurance:

                if (data.ContainsKey("seat"))
                {
                    int insuranceSeat = data.GetInt("seat");
                    gdata.GetPlayer <BjPlayerPanel>(insuranceSeat).BuyInsurance(data.GetInt("gold"));

                    if (insuranceSeat == SelfSeat)
                    {
                        SpeakMgr.SpeakViewActive(true);
                        SpeakMgr.InsuranceBtnEnable(false);
                    }
                }

                break;
            }
        }
Exemplo n.º 21
0
        public override void GameResponseStatus(int type, ISFSObject response)
        {
            YxDebug.Log("Request == " + (GameRequestType)type);
            var gdata = App.GetGameData <FillpitGameData>();

            if (response.ContainsKey("anteRate"))
            {
                YxDebug.Log("===============================");
                YxDebug.LogArray(response.GetIntArray("anteRate"));
                BetMgr.SetAddBtns(response.GetIntArray("anteRate"));
            }

            if (!App.GetRServer <FillpitGameServer>().HasGetGameInfo)
            {
                return;
            }

            GameRequestType gameType = (GameRequestType)type;
            int             selfSeat = gdata.SelfSeat;

            switch (gameType)
            {
            case GameRequestType.Bet:

                //当存在users时,说明下盲注,这个名游戏已经开始
                if (response.ContainsKey("users"))
                {
                    OnBetBlinds(response);
                    //投盲注,如果烂底,盲注值为0
                    gdata.IsLanDi = response.ContainsKey("landi") && response.GetBool("landi");
                }

                if (response.ContainsKey("banker"))
                {
                    var banker   = response.GetInt("banker");
                    var betPanel = GetPlayerPanel(banker, true);
                    betPanel.SetBankIcon(true);
                }

                //此为某个玩家下注
                if (response.ContainsKey("seat"))
                {
                    int betGold = response.GetInt("gold");
                    int betseat = response.GetInt("seat");

                    gdata.LastBetValue = betGold;

                    var betPanel = GetPlayerPanel(betseat, true);
                    betPanel.PlayerBet(betGold, true, 200);
                    betPanel.ShowGameType(gameType);
                    if (response.ContainsKey("speakerType"))
                    {
                        betPanel.Speak((GameRequestType)response.GetInt("speakerType"), betGold);
                    }

                    LaddyMgr.OnPlayerBet(betGold);

                    if (betseat == selfSeat)
                    {
                        SpeakMgr.ShowNothing();
                    }
                }


                break;

            case GameRequestType.BetSpeak:
                int bseat = response.GetInt("seat");       //当前座位号
                Speaker(bseat, response.ContainsKey("cd") ? response.GetInt("cd") : 30f, GameRequestType.BetSpeak);
                break;

            case GameRequestType.Card:

                HideAllPalyerGameType(false);

                int[] cardSeats = response.GetIntArray("seats");
                DealerMgr.FirstSeat = response.GetInt("fs");

                int curCard = response.GetInt("curCardRound");
                LaddyMgr.OnDealCard(curCard);

                //新游戏开始,第一轮发牌带上隐藏牌
                if (curCard == 1)
                {
                    var count = DealerMgr.HideN;
                    for (int i = 0; i < count; i++)
                    {
                        int[] pokers = new int[cardSeats.Length];
                        DealerMgr.BeginBigDeal(pokers, cardSeats);
                    }
                }

                //如果存在私人牌,则将牌赋值到对应手牌处
                if (response.ContainsKey("selfCard") && response.GetIntArray("selfCard").Length >= 0)
                {
                    int[] selfCards = response.GetIntArray("selfCard");
                    YxDebug.LogArray(selfCards);
                    GetPlayerPanel().UserBetPoker.SetHandPokersValue(selfCards);
                }

                //将每个玩家明牌点数显示出来
                if (response.ContainsKey("openCV"))
                {
                    int seatCount          = cardSeats.Length;
                    var openCardValueArray = response.GetIntArray("openCV");
                    int openMax            = -1;
                    foreach (var openVal in openCardValueArray)
                    {
                        if (openMax < openVal)
                        {
                            openMax = openVal;
                        }
                    }
                    int arrayLength = openCardValueArray.Length;
                    for (int i = 0; i < arrayLength; i++)
                    {
                        int cvSeat  = cardSeats[i % seatCount];
                        int openVal = openCardValueArray[i];
                        var panel   = GetPlayerPanel(cvSeat, true);
                        panel.SetShownCardsPoint(openVal);
                        panel.SetMaxPoint(openMax);
                        panel.ShowPointLabel();
                    }
                }

                if (response.ContainsKey("selfCV"))
                {
                    gdata.GetPlayer <PlayerPanel>().SetAllCardPoint(response.GetInt("selfCV"));
                }

                //是否有公共牌,如果有,说明牌数少于在座人数
                //公共牌用于发给其余多的人
                if (response.ContainsKey("publicCard"))
                {
                    DealerMgr.PublicCardId = response.GetInt("publicCard");
                }

                if (response.ContainsKey("cardsArr"))
                {
                    ISFSArray cardsArray = response.GetSFSArray("cardsArr");
                    int       arraycount = cardsArray.Count;
                    for (int i = 0; i < arraycount; i++)
                    {
                        DealerMgr.BeginBigDeal(cardsArray.GetIntArray(i), cardSeats);
                    }
                }
                else
                {
                    DealerMgr.BeginBigDeal(response.GetIntArray("cards"), cardSeats);       //当有selfCard时,要将发牌重置到从第0张发
                }

                HideAllPalyerGameType(false);
                gdata.LastBetValue = 0;          //将最后一次下注重置,避免下次跟注时出现问题
                break;

            case GameRequestType.Fold:
                int foldSeat = response.GetInt("seat");
                YxClockManager.StopWaitPlayer();
                var foldPanel = GetPlayerPanel(foldSeat, true);
                foldPanel.Speak(GameRequestType.Fold);

                if (foldSeat == selfSeat)
                {
                    SpeakMgr.ShowNothing();
                }
                YxDebug.Log("玩家 " + foldSeat + " 弃牌!!");
                break;

            case GameRequestType.FollowSpeak:       //  跟注
                int followSeat = response.GetInt("seat");

                Speaker(followSeat, response.ContainsKey("cd") ? response.GetInt("cd") : 30f, gdata.LastBetValue > 0
                                ? GameRequestType.FollowSpeak
                                : GameRequestType.BetSpeak);
                var followPanel = GetPlayerPanel(followSeat, true);
                followPanel.HideGameType();
                break;


            case GameRequestType.KickSpeak:
                int kickSeat = response.GetInt("seat");
                Speaker(kickSeat, response.ContainsKey("cd") ? response.GetInt("cd") : 30f,
                        GameRequestType.KickSpeak);
                break;

            case GameRequestType.NotKick:

                int notKickSeat = response.GetInt("seat");
                YxClockManager.StopWaitPlayer();
                var notkickspeaker = gdata.GetPlayer <PlayerPanel>(notKickSeat, true);
                notkickspeaker.Speak(GameRequestType.NotKick);

                if (notKickSeat == selfSeat)
                {
                    SpeakMgr.ShowNothing();
                }
                break;

            case GameRequestType.Result:
                DealerMgr.FastDeal();          //把堆积的牌全部发出去
                gdata.IsGameing = false;
                if (response.ContainsKey("result"))
                {
                    YxClockManager.StopWaitPlayer();
                    bool isLandi = response.ContainsKey("landi") && response.GetBool("landi");
                    gdata.IsLanDi = isLandi;
                    AnimationMgr.SetResultLanDiAnim(isLandi);

                    HideAllPalyerGameType(true);

                    ISFSArray resultArray = response.GetSFSArray("result");
                    ShowPlayerCardsPoint(resultArray);
                    //是否是烂底
                    //如果烂底,直接显示结算结果,否则显示胜利动画
                    if (!isLandi)
                    {
                        ShowWinAnim(resultArray);
                    }
                    else
                    {
                        LaddyMgr.DeductHappys();
                    }
                    SummaryMgr.OnGameResult(resultArray);


                    //初始化玩家游戏币
                    foreach (ISFSObject resultItem in resultArray)
                    {
                        int resultSeat  = resultItem.GetInt("seat");
                        var resultPanel = GetPlayerPanel(resultSeat, true);
                        resultPanel.OnGameResult(resultItem);
                    }
                }

                break;


            case GameRequestType.BackKick:

                int backKickSeat = response.GetInt("seat");

                Speaker(backKickSeat, response.ContainsKey("cd") ? response.GetInt("cd") : 30f,
                        GameRequestType.BackKick);
                break;

            case GameRequestType.StartGame:
                //开始游戏,服务器标记本房间已经开始游戏,所以本机必须发送ready
                //为防止本机出现显示数据异常,以服务器信息为准
                if (response.ContainsKey("isStart") && response.GetBool("isStart"))
                {
                    App.GetRServer <FillpitGameServer>().ReadyGame();
                    WeiChatInvite.SetWeiChatBtnActive(false);
                }
                break;
            }
        }
Exemplo n.º 22
0
        public override void GameResponseStatus(int type, ISFSObject response)
        {
            YxDebug.Log("Request == " + (GameRequestType)type);

            var gdata = App.GetGameData <PaiJiuGameData>();

            gdata.Status = type;

            switch ((GameRequestType)type)
            {
            case GameRequestType.AllowStart:
                gdata.GetPlayer <PaiJiuPlayerSelf>().CouldStart();
                break;

            case GameRequestType.BeginBet:
                OnBet(response);
                break;

            case GameRequestType.UserBet:
                int betSeat = response.GetInt("seat");
                gdata.GetPlayer <PaiJiuPlayer>(betSeat, true).PlayerBet(response.GetInt("gold"));
                break;

            case GameRequestType.SendCard:
                TableData.SubCardCount(16);
                SpeakMgr.ShowNothing();
                YxClockManager.BeginToCountDown(response.GetInt("cd"));
                DealerMgr.BeginBigDeal(response.GetIntArray("card"));
                Tool.Tools.TestDebug(response.GetIntArray("card"));
                //SpeakMgr.ShowSpeak(GameRequestType.SendCard);
                break;

            case GameRequestType.PutCard:
                DealerMgr.FastDeal();
                int putcardSeat = response.GetInt("seat");
                gdata.GetPlayer <PaiJiuPlayer>(putcardSeat, true).FinishSelect();
                if (putcardSeat == App.GameData.SelfSeat)
                {
                    if (response.ContainsKey("cards"))
                    {
                        int[] putCards = new int[4];            //data.GetIntArray("cards");
                        gdata.GetPlayer <PaiJiuPlayer>(putcardSeat, true).UserBetPoker.SetBetPokerInfo(putCards);
                    }
                    SpeakMgr.ShowNothing();
                }
                break;

            case GameRequestType.Compare:
                OnCompare(response);
                break;

            case GameRequestType.AllowReady:
                gdata.IsGameing = false;
                Reset();
                ReadyList.Clear();
                break;

            case GameRequestType.GameBegin:
                break;
            }
        }