Exemple #1
0
        /// <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);
            }
        }
Exemple #2
0
    /// <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);
    }