示例#1
0
        /// <summary>
        /// 当收到加倍已经结束的信息
        /// </summary>
        protected virtual void OnDoubleOver(object sender, DdzbaseEventArgs args)
        {
            if (UserDataTemp == null)
            {
                return;
            }

            var data = args.IsfObjData;

            var rates        = data.GetIntArray("jiabei");
            var len          = rates.Length;
            var thisUserSeat = UserDataTemp.GetInt(RequestKey.KeySeat);

            for (int i = 0; i < len; i++)
            {
                if (thisUserSeat != i)
                {
                    continue;
                }
                if (rates[i] > 1)
                {
                    SetSpeakSpState(true, SpkJiabei);
                    ShowJiaBeiSp.gameObject.SetActive(true);
                }
                else
                {
                    SetSpeakSpState(true, SpkBuJiabei);
                }

                break;
            }

            StopCoroutine("HideJiabeiSp");
            StartCoroutine("HideJiabeiSp");
        }
示例#2
0
        /// <summary>
        /// 从服务器获得底牌信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        public override void OnGetDipai(object sender, DdzbaseEventArgs args)
        {
            base.OnGetDipai(sender, args);
            var selfCdsNum = UserDataTemp.GetInt(NewRequestKey.KeyCardNum);

            App.GetGameData <GlobalData>().UserSelfData.PutInt(NewRequestKey.KeyCardNum, selfCdsNum);
        }
示例#3
0
        /// <summary>
        /// 当是上家出牌时,之前说的话要消失
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void OnTypeOutCard(object sender, DdzbaseEventArgs args)
        {
            if (UserDataTemp == null)
            {
                return;
            }
            var data    = args.IsfObjData;
            var curSeat = data.GetInt(RequestKey.KeySeat);

            if (curSeat == UpSeatInt)
            {
                SetSpeakSpState(false);
            }
            else if (curSeat == OwnSeatInt)
            {
                SetSpeakSpState(false);
                var cdsLen        = data.GetIntArray(RequestKey.KeyCards).Length;
                var curselfCdsNum = UserDataTemp.GetInt(NewRequestKey.KeyCardNum) - cdsLen;
                UserDataTemp.PutInt(NewRequestKey.KeyCardNum, curselfCdsNum);

                var globalUserInfoLeft = App.GetGameData <GlobalData>().GetUserInfo(curSeat);
                if (globalUserInfoLeft != null)
                {
                    globalUserInfoLeft.PutInt(NewRequestKey.KeyCardNum, curselfCdsNum);
                }

                App.GetGameData <GlobalData>().OnSomePlayerHdcdsChange(curSeat, curselfCdsNum);

                CdNumLabel.text = curselfCdsNum.ToString(CultureInfo.InvariantCulture);
                if (curselfCdsNum > 0 && curselfCdsNum < 2 & JingDengAnim != null)
                {
                    JingDengAnim.SetActive(true);
                }
            }
        }
示例#4
0
        /// <summary>
        /// 根据缓存的信息刷新用户信息ui
        /// </summary>
        public override void RefreshUiInfo()
        {
            if (UserDataTemp == null)
            {
                return;
            }

            base.RefreshUiInfo();

            //多一个显示牌数的组件
            if (CdNumLabel != null && UserDataTemp.ContainsKey(NewRequestKey.KeyCardNum))
            {
                var selfhdCdsNum = UserDataTemp.GetInt(NewRequestKey.KeyCardNum);
                CdNumLabel.text = selfhdCdsNum.ToString(CultureInfo.InvariantCulture);
                if (selfhdCdsNum > 0 && selfhdCdsNum < 2 && JingDengAnim != null)
                {
                    JingDengAnim.SetActive(true);
                }
            }

            gameObject.SetActive(true);

            if (UserDataTemp != null && UserDataTemp.ContainsKey(NewRequestKey.KeyNetWork))
            {
                SetDuanXianSp(!UserDataTemp.GetBool(NewRequestKey.KeyNetWork));
            }
        }
示例#5
0
        protected virtual void OnUserOut(object sender, DdzbaseEventArgs args)
        {
            if (UserDataTemp == null)
            {
                return;
            }

            var data = args.IsfObjData;

            if (data == null || !data.ContainsKey(RequestKey.KeySeat))
            {
                return;
            }
            if (UserDataTemp != null && data.GetInt(RequestKey.KeySeat) == UserDataTemp.GetInt(RequestKey.KeySeat))
            {
                //如果已经开始游戏了,则不做玩家离开设置
                if (App.GetGameData <GlobalData>().IsStartGame)
                {
                    SetDuanXianSp(true);
                }
                else
                {
                    gameObject.SetActive(false);
                }
            }
        }
示例#6
0
        /// <summary>
        /// 当有人叫分抢地主时
        /// </summary>
        protected void OnTypeGrab(object sender, DdzbaseEventArgs args)
        {
            var data = args.IsfObjData;

            if (!DDzUtil.IsServDataContainAllKey(
                    new[]
            {
                RequestKey.KeySeat, RequestKey.KeyScore
            }, data))
            {
                Debug.LogError("有人叫分时,信息key不全");
                return;
            }

            var seat  = data.GetInt(RequestKey.KeySeat);
            var score = data.GetInt(RequestKey.KeyScore);

            if (UserDataTemp != null && UserDataTemp.GetInt(RequestKey.KeySeat) == seat)
            {
                //叫的分值
                switch (score)
                {
                case 0:
                {
                    SetSpeakSpState(true, SpkBuJiao);
                    break;
                }

                case 1:
                {
                    SetSpeakSpState(true, Spk1Fen);
                    break;
                }

                case 2:
                {
                    SetSpeakSpState(true, Spk2Fen);
                    break;
                }

                case 3:
                {
                    SetSpeakSpState(true, Spk3Fen);
                    break;
                }

                default:
                {
                    Debug.LogError("叫了一个超出预估的分值,所以不显示");
                    SetSpeakSpState(false);
                    break;
                }
                }
            }
        }
示例#7
0
        protected virtual void OnUserReady(object sender, DdzbaseEventArgs args)
        {
            ShowJiaBeiSp.SetActive(false);
            DizhuSp.SetActive(false);
            SetSpeakSpState(false);
            var data = args.IsfObjData;

            if (UserDataTemp != null && data.GetInt(RequestKey.KeySeat) == UserDataTemp.GetInt(RequestKey.KeySeat))
            {
                GameReadySp.gameObject.SetActive(true);
            }
        }
示例#8
0
 /// <summary>
 /// 当游戏结算时清空GameReadySp 和  ShowSpeakSp
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="args"></param>
 protected virtual void OnTypeGameOver(object sender, DdzbaseEventArgs args)
 {
     if (GameReadySp != null)
     {
         GameReadySp.gameObject.SetActive(false);
     }
     SetSpeakSpState(false);
     if (UserDataTemp != null && UserDataTemp.ContainsKey(NewRequestKey.KeyCardNum))
     {
         UserDataTemp.PutInt(NewRequestKey.KeyCardNum, 0);
     }
 }
示例#9
0
        /// <summary>
        /// 当玩家分数改变时
        /// </summary>
        /// <param name="seat"></param>
        /// <param name="scoreGold"></param>
        private void OnUserScoreChanged(int seat, int scoreGold)
        {
            if (UserDataTemp == null)
            {
                return;
            }

            if (seat == UserDataTemp.GetInt(RequestKey.KeySeat))
            {
                var curGold = UserDataTemp.GetLong(NewRequestKey.KeyTtGold) + scoreGold;
                UserDataTemp.PutLong(NewRequestKey.KeyTtGold, curGold);
                ScoreLabel.text = curGold.ToString(CultureInfo.InvariantCulture);
            }
        }
示例#10
0
        /// <summary>
        /// 当收到加倍信息
        /// </summary>
        private void OnDouble(object sender, DdzbaseEventArgs args)
        {
            if (UserDataTemp == null)
            {
                return;
            }

            var data = args.IsfObjData;
            int seat = data.GetInt(RequestKey.KeySeat);

            if (seat == UserDataTemp.GetInt(RequestKey.KeySeat))
            {
                SeltingDoublelabel.text = "";
            }
        }
示例#11
0
        /// <summary>
        /// 当给这个玩家发牌时
        /// </summary>
        protected virtual void OnAlloCateCds(object sender, DdzbaseEventArgs args)
        {
            //进入发牌阶段,隐藏掉准备状态
            GameReadySp.gameObject.SetActive(false);

            var data = args.IsfObjData;

            //此处不用判断是不是给自己发牌,因为服务器实际只给 游戏玩家自己发牌,其他玩家不发,但是每个玩家的牌数发的是一样的。所以可以赋值,擦
            if (UserDataTemp == null)
            {
                return;
            }
            var cardsLen = data.GetIntArray(GlobalConstKey.C_Cards).Length;

            UserDataTemp.PutInt(NewRequestKey.KeyCardNum, cardsLen);
        }
示例#12
0
        /// <summary>
        /// 根据玩家自己座位号存储其他玩家信息
        /// </summary>
        /// <param name="servData">服务器信息</param>
        protected override void SetOtherPlayerData(ISFSObject servData)
        {
            UpSeatInt  = App.GetGameData <GlobalData>().GetSelfSeat;
            OwnSeatInt = App.GetGameData <GlobalData>().GetRightPlayerSeat;
            var dataDic = GetOtherUsesDic(servData);
            var seat    = OwnSeatInt;

            if (dataDic.ContainsKey(seat))
            {
                UserDataTemp = dataDic[seat];
                if (UserDataTemp.ContainsKey(NewRequestKey.KeyCardNum))
                {
                    App.GetGameData <GlobalData>().OnSomePlayerHdcdsChange(OwnSeatInt, UserDataTemp.GetInt(NewRequestKey.KeyCardNum));
                }
                RefreshUiInfo();
            }
        }
示例#13
0
        /// <summary>
        /// 当用户进入房间时,刷新用户数据
        /// </summary>
        /// <param name="userData"></param>
        protected void UpdateUserdata(ISFSObject userData)
        {
            //存储牌数
            var cdnumTemp = 0;

            if (UserDataTemp != null && UserDataTemp.ContainsKey(NewRequestKey.KeyCardNum))
            {
                cdnumTemp = UserDataTemp.GetInt(NewRequestKey.KeyCardNum);
            }

            UserDataTemp = userData;

            //如果是用户重练进来可能不含有NewRequestKey.KeyCardNum参数,这时候需要重置牌数
            if (!UserDataTemp.ContainsKey(NewRequestKey.KeyCardNum))
            {
                UserDataTemp.PutInt(NewRequestKey.KeyCardNum, cdnumTemp);
            }
        }
示例#14
0
        /// <summary>
        /// 当是上家出牌时,之前说的话要消失
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="args"></param>
        private void OnTypeOutCard(object sender, DdzbaseEventArgs args)
        {
            var data    = args.IsfObjData;
            var curSeat = data.GetInt(RequestKey.KeySeat);

            if (curSeat == App.GetGameData <GlobalData>().GetSelfSeat)
            {
                SetSpeakSpState(false);
                var cdsLen        = data.GetIntArray(RequestKey.KeyCards).Length;
                var curselfCdsNum = UserDataTemp.GetInt(NewRequestKey.KeyCardNum) - cdsLen;
                UserDataTemp.PutInt(NewRequestKey.KeyCardNum, curselfCdsNum);
                App.GetGameData <GlobalData>().UserSelfData.PutInt(NewRequestKey.KeyCardNum, curselfCdsNum);

                App.GetGameData <GlobalData>().OnSomePlayerHdcdsChange(curSeat, curselfCdsNum);
            }
            else if (curSeat == UpSeatInt)
            {
                SetSpeakSpState(false);
            }
        }
示例#15
0
        //更新手牌数
        private void UpdateCdsNum()
        {
            if (UserDataTemp == null || !UserDataTemp.ContainsKey(NewRequestKey.KeyCardNum))
            {
                return;
            }
            var cdNum = UserDataTemp.GetInt(NewRequestKey.KeyCardNum);

            CdNumLabel.text = cdNum.ToString(CultureInfo.InvariantCulture);

            if (!UserDataTemp.ContainsKey(RequestKey.KeySeat))
            {
                return;
            }
            var globalUserInfo = App.GetGameData <GlobalData>().GetUserInfo(UserDataTemp.GetInt(RequestKey.KeySeat));

            if (globalUserInfo != null)
            {
                globalUserInfo.PutInt(NewRequestKey.KeyCardNum, cdNum);
            }
        }
示例#16
0
        /// <summary>
        /// 检查加倍
        /// </summary>
        /// <param name="data"></param>
        public override void OnCheckSelectDouble(ISFSObject data)
        {
            if (UserDataTemp == null)
            {
                return;
            }

            //如果加倍
            if (!data.ContainsKey(NewRequestKey.KeyJiaBei) || !data.GetBool(NewRequestKey.KeyJiaBei))
            {
                return;
            }

            var globaldata = App.GetGameData <GlobalData>();

            if (globaldata.JiaBeiType != 2 || (globaldata.JiaBeiType == 2 && UserDataTemp.GetInt(RequestKey.KeySeat) != data.GetInt(RequestKey.KeySeat)))
            {
                SetSpeakSpState(false);
                SeltingDoublelabel.gameObject.SetActive(true);
                SeltingDoublelabel.text = "正在选择加倍";
            }
        }
示例#17
0
        private void OnTypeBombScore(object sender, DdzbaseEventArgs args)
        {
            var data = args.IsfObjData;

            if (UserDataTemp != null &&
                UserDataTemp.ContainsKey(RequestKey.KeySeat) &&
                data.ContainsKey(RequestKey.KeySeat))
            {
                if (UserDataTemp.GetInt(RequestKey.KeySeat) == data.GetInt(RequestKey.KeySeat))
                {
                    if (data.ContainsKey(NewRequestKey.KeyWin))
                    {
                        PlayShowScore(data.GetInt(NewRequestKey.KeyWin));
                    }
                }
                else
                {
                    if (data.ContainsKey(NewRequestKey.KeyLost))
                    {
                        PlayShowScore(data.GetInt(NewRequestKey.KeyLost));
                    }
                }
            }
        }