Beispiel #1
0
        /// <summary>
        /// 获得玩家列表
        /// </summary>
        /// <param name="data"></param>
        public void GetUsersList(ISFSObject data)
        {
            var users = data.GetSFSArray(ConstantData.KeyUsers);

            Players = new List <NbjlPlayerInfo>();
            var  count      = users.Count;
            bool localExist = false;

            for (int i = 0; i < count; i++)
            {
                var items = users.GetSFSObject(i);
                var info  = new NbjlPlayerInfo();
                info.Parse(items);
                Players.Add(info);
                if (info.Seat.Equals(SelfSeat))
                {
                    CurPlayerInfo = info;
                    localExist    = true;
                }
            }
            if (!localExist)
            {
                var user = data.GetSFSObject(ConstantData.KeyUser);
                if (user != null)
                {
                    var userInfo = new NbjlPlayerInfo();
                    userInfo.Parse(user);
                    CurPlayerInfo = userInfo;
                }
                Players.Add(CurPlayerInfo);
            }
            RoundPlayersFresh();
        }
Beispiel #2
0
        /// <summary>
        ///  玩家进入
        /// </summary>
        /// <param name="data"></param>
        public void OnUserJoin(ISFSObject data)
        {
            var            info       = data.GetSFSObject(ConstantData.KeyUser);
            NbjlPlayerInfo playerInfo = new NbjlPlayerInfo();

            playerInfo.Parse(info);
            Players.Add(playerInfo);
            RoundPlayersFresh();
        }
Beispiel #3
0
        /// <summary>
        /// 获得庄相关信息
        /// </summary>
        /// <param name="data"></param>
        public void GetBanerInfos(ISFSObject data)
        {
            var bankersData   = data.GetSFSArray(ConstantData.KeyBankers);
            var newBankerSeat = data.GetInt(ConstantData.KeyBankerSeat);

            BankerInfo    = null;
            IsApplyBanker = false;
            BankerSeat    = newBankerSeat;
            if (bankersData.Count == 0)
            {
                WaitBankerListChange = WaitBankers.Count != 0;
                WaitBankers          = new List <IRecycleData>();
            }
            else
            {
                var newWaitList   = new List <NbjlPlayerInfo>();
                var changeBankers = new List <NbjlPlayerInfo>();
                foreach (ISFSObject banker in bankersData)
                {
                    var user = new NbjlPlayerInfo();
                    user.Parse(banker);
                    var seat = user.Seat;
                    if (seat == SelfSeat)
                    {
                        IsApplyBanker = true;
                    }
                    changeBankers.Add(user);
                    if (seat == BankerSeat)
                    {
                        continue;
                    }
                    newWaitList.Add(user);
                }
                var changeCount = changeBankers.Count;
                if (changeCount > 0)
                {
                    var playerCount = Players.Count;
                    for (int i = 0; i < changeCount; i++)
                    {
                        var playerIndex = Players.FindIndex(item => (item != null && item.Seat == changeBankers[i].Seat));
                        if (playerIndex >= 0)
                        {
                            Players[playerIndex].CoinA = changeBankers[i].CoinA;
                        }
                    }
                }
                var oldWaitBankers = WaitBankers.ConvertAll(item => item as NbjlPlayerInfo);
                WaitBankerListChange = oldWaitBankers.Count != newWaitList.Count;
                if (!WaitBankerListChange)
                {
                    var count = oldWaitBankers.Count;
                    var state = false;
                    for (int i = 0; i < count; i++)
                    {
                        var oldItem = oldWaitBankers[i];
                        var newItem = newWaitList[i];
                        if (newItem.Seat != oldItem.Seat || newItem.NickM != oldItem.NickM || newItem.CoinA != oldItem.CoinA)
                        {
                            state = true;
                            break;
                        }
                    }
                    WaitBankerListChange = state;
                }
                if (WaitBankerListChange)
                {
                    WaitBankers = newWaitList.ConvertAll(item => item as IRecycleData);
                }
            }
            if (BankerSeat != ConstantData.KeyDefaultInt)
            {
                RoundPlayersFresh();
            }
            IsOnBanker = BankerInfo != null && BankerInfo.Seat.Equals(SelfSeat);
            if (IsOnBanker)
            {
                App.GameData.GStatus = YxEGameStatus.PlayAndConfine;
                IsApplyBanker        = true;
            }
        }