/// <summary> /// 转换出牌 /// </summary> /// <param name="room"></param> private void Turn(FightRoom room) { int nextUId = room.Turn(); //如果下一个玩家掉线 if (room.IsOffline(nextUId)) { //room.roundModel.BiggestUId = nextUId; //下一个也掉线了 递归 Console.WriteLine("下一个玩家掉线 " + nextUId); Turn(room); //TODO 掉线人物AI } else { //给客户端广播开始计时 td.Change(nextUId, 20 * 10000000, DateTime.Now.Ticks); //玩家不掉线就给他发消息让他出牌 Brocast(room, OpCode.FIGHT, FightCode.TURN_DEAL_BRO, nextUId); //添加定时任务 TimeOutManager.Instance.AddTimeEvent(20 * 10000000, nextUId, TimeOut); Brocast(room, OpCode.FIGHT, FightCode.START_TIMING_BRO, td); } }
/// <summary> /// 轮换下注 /// </summary> /// <param name="client"></param> private void Turn(ClientPeer client, int turnUserId = -1) { // 清空计时器任务 TimerManager.Instance.Clear(); if (fightCache.IsFighting(client.Id) == false) { return; } FightRoom room = fightCache.GetFightRoomByUserId(client.Id); int nextID = room.Turn(); if (room.IsGiveUpCard(nextID) || room.IsLeaveRoom(nextID) || (turnUserId != -1 && nextID != turnUserId)) { // 如果下一位玩家离开或弃牌了,就继续轮换下注,直到改玩家不离开也不弃牌为止 Turn(client, turnUserId); } else { timerClient = DatabaseManager.GetClientPeerByUserId(nextID); // 添加计时器任务 TimerManager.Instance.AddTimerEvent(60, TimerDelegate); Console.WriteLine("当前下注者" + client.UserName); room.Broadcast(OpCode.Fight, FightCode.StartStakes_BRO, nextID); } }
/// <summary> /// 转换出牌 /// </summary> private void turn(FightRoom fightRoom) { int nextuid = fightRoom.Turn(); if (fightRoom.IsOffline(nextuid)) { //如果下一个玩家离线 //递归找到一个在线的玩家 turn(fightRoom); } else { //通知房间内的房间下一个该出牌的玩家 //fightRoom.Broadcast(OpCode.FIGHT, FightCode.TURN_DEAL_SBOD, nextuid); } }
/// <summary> /// 转换出牌 /// </summary> /// <param name="room"></param> private void turn(FightRoom room) { int nextUId = room.Turn(); if (room.IsOffline(nextUId) == true) { //如果下一个玩家掉线了 递归直到不掉线的玩家出牌为止 turn(room); } else { //玩家不掉线就给他发信息 // ClientPeer nextClient = userCache.GetClientPeer(nextUId); // nextClient.Send(OpCode.FIGHT, FightCode.TURN_DEAL_BRO, nextUId); brocast(room, OpCode.FIGHT, FightCode.TURN_DEAL_BRO, nextUId); } }
/// <summary> /// 转换出牌 /// </summary> /// <param name="room"></param> private void Turn(FightRoom room) { int nextUid = room.Turn(); //如果掉线了 if (room.isOffline(nextUid)) { //或者执行出牌AI TODO....... Turn(room); } else { //玩家没掉线 发消息 出牌 ClientPeer client = user.GetClientById(nextUid); client.Send(OpCode.FIGHT, FightCode.TURN_DEAL_BRO, nextUid); } }
//change deal player private void Turn(FightRoom room) { int nextUserId = room.Turn(); Broadcast(room, OpCode.FIGHT, FightCode.TURN_DEAL_BROADCAST, nextUserId); }