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); } } }
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); } }
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); } }
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); } } } }