/// <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="timeDto"></param> private void startTimingBro(TimeDto timeDto) { //计算经服务器延迟之后还有多长时间 long time = timeDto.time - (DateTime.Now.Ticks - timeDto.timeStamp); Debug.Log(time); timeDto.Change(timeDto.Id, time, timeDto.timeStamp); Dispatch(AreaCode.UI, UIEvent.SHOW_TIMER_PANEL, timeDto); }