Exemple #1
0
        private void 处理_C_能否进入(int p, byte[][] p_2)
        {
            var selectedServiceID = BitConverter.ToInt32(p_2[2], 0);

            byte[][] sendData = new byte[][] { BitConverter.GetBytes(p), BitConverter.GetBytes((int)DDZActions.C_能否进入) };
            if (selectedServiceID == 0)
            {
                foreach (var service in _gameService)  //随机加入
                {
                    if (service.Value.Length < 3)
                    {
                        lock (_sync_sendWhispers)
                        {
                            _sendWhispers.Enqueue(new KeyValuePair <int, byte[][]>(service.Key, sendData));
                            var tempPlayer = new DDZCharacter();
                            tempPlayer.TableID = service.Key;
                            tempPlayer.ProxyID = p;
                            _player.Add(p, tempPlayer);
                        }
                    }
                }
            }
            else   //选择加入
            {
                lock (_sync_sendWhispers)
                {
                    _sendWhispers.Enqueue(new KeyValuePair <int, byte[][]>(selectedServiceID, sendData));
                    var tempPlayer = new DDZCharacter();
                    tempPlayer.TableID = selectedServiceID;
                    tempPlayer.ProxyID = p;
                    _player.Add(p, tempPlayer);
                }
            }
        }
Exemple #2
0
        private void 处理_Pass(int playerid)
        {
            DDZCharacter thisPlayer = _players[playerid];

            if (thisPlayer.clientState != DDZClientStates.已出牌)
            {
                thisPlayer.clientState       = DDZClientStates.Pass;
                thisPlayer.后面的玩家.clientState = DDZClientStates.等待出牌;
                thisPlayer.后面的玩家.超时_出牌超时     = GameLooper.Counter + 30;
                发出_请出牌(thisPlayer.后面的玩家.PlayerID);
            }
        }
Exemple #3
0
 private void 处理_能否进入(int playerid)
 {
     if (_currentStateHander.CanIJoinIt(_players.Count))
     {
         var tempPlayer = new DDZCharacter();
         tempPlayer.超时_进入超时     = GameLooper.Counter + 10;
         tempPlayer.PlayerID    = playerid;
         tempPlayer.clientState = DDZClientStates.等待进入;
         _players.Add(playerid, tempPlayer);
         发出_能进入(playerid);
     }
     else
     {
         发出_不能进入(playerid);
     }
 }
Exemple #4
0
        private void 处理_出牌(int playerid, byte[][] p)
        {
            DDZCharacter thisPlayer           = _players[playerid];
            PokerGroup   tempPG               = new PokerGroup();
            PokerGroup   LastPlayerPokerGroup = thisPlayer.前面的玩家.LastPokerGroup;

            if (tempPG > LastPlayerPokerGroup && thisPlayer.clientState == DDZClientStates.等待出牌)
            {
                thisPlayer.clientState       = DDZClientStates.已出牌;
                thisPlayer.LastPokerGroup    = tempPG;
                thisPlayer.后面的玩家.clientState = DDZClientStates.等待出牌;
                thisPlayer.后面的玩家.超时_出牌超时     = GameLooper.Counter + 30; //30秒出牌
                发出_请出牌(thisPlayer.后面的玩家.PlayerID);
                List <int> removeIds = new List <int>();
                foreach (var tempPoker in tempPG)
                {
                    for (int i = 0; i < thisPlayer.MyPokerGroup.Count; i++)
                    {
                        var tempPoker2 = thisPlayer.MyPokerGroup[i];
                        if (tempPoker.pokerColor == tempPoker2.pokerColor && tempPoker.pokerNum == tempPoker2.pokerNum)
                        {
                            removeIds.Add(i);
                        }
                    }
                }
                foreach (var ID in removeIds)
                {
                    thisPlayer.MyPokerGroup.RemoveAt(ID);
                }
                if (thisPlayer.MyPokerGroup.Count == 0)
                {
                    foreach (var player in _players)
                    {
                        发出_本局结果(player.Value.PlayerID, thisPlayer.PlayerID);
                    }
                }
            }
        }
        private void 处理_能否进入(int playerid)
        {
            if (_currentStateHander.CanIJoinIt(_players.Count))
            {
                var tempPlayer = new DDZCharacter();
                tempPlayer.超时_进入超时 = GameLooper.Counter + 10;
                tempPlayer.PlayerID = playerid;
                tempPlayer.clientState = DDZClientStates.等待进入;
                _players.Add(playerid, tempPlayer);
                发出_能进入(playerid);

            }
            else
            {
                发出_不能进入(playerid);
            }
        }