Esempio n. 1
0
        /// <summary>
        /// 处理无人下注的情形
        /// </summary>
        protected void ProcessNoGuess()
        {
            //有人下注了,则修改竞猜状态
            if (GuessItemListDict.Count > 0)
            {
                //开始竞猜下注倒计时
                GuessStates = ShengXiaoGuessStates.MortgageCountDown;

                StateStartTicks = TimeUtil.NOW();

                ThisTimeCountDownSecs = WaitingEnterSecs;
                //通知客户端
                //发送广播消息, 开始击杀boss倒计时
                GameManager.ClientMgr.NotifyAllShengXiaoGuessStateMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, (int)GuessStates, WaitingEnterSecs, 0, GetPreGuessResult());
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 重置各种运行状态变量
        /// </summary>
        protected void Reset()
        {
            GuessStates = ShengXiaoGuessStates.NoMortgage;

            //清空竞猜记录
            lock (GuessItemListDict)
            {
                GuessItemListDict.Clear();
            }

            StateStartTicks = TimeUtil.NOW();

            IsBossKilled = false;

            ThisTimeCountDownSecs = 0;
        }
Esempio n. 3
0
        /// <summary>
        /// 处理竞猜过程
        /// </summary>
        protected void ProcessGuessing()
        {
            if (GuessStates == ShengXiaoGuessStates.MortgageCountDown) //等待别的玩家下注倒计时
            {
                //判断如果超过了最大等待时间, 在准备刷新boss
                long ticks = TimeUtil.NOW();
                if (ticks >= (StateStartTicks + (WaitingEnterSecs * 1000)))
                {
                    GuessStates = ShengXiaoGuessStates.BossCountDown;

                    //刷boss出来打
                    //重新刷新副本中的怪物
                    GameManager.MonsterZoneMgr.ReloadNormalMapMonsters(MapCode, 1);

                    StateStartTicks = TimeUtil.NOW();

                    ThisTimeCountDownSecs = WaitingKillBossSecs;

                    //发送广播消息, 开始击杀boss倒计时
                    GameManager.ClientMgr.NotifyAllShengXiaoGuessStateMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, (int)GuessStates, (int)ThisTimeCountDownSecs, 0, GetPreGuessResult());
                }
            }
            else if (GuessStates == ShengXiaoGuessStates.BossCountDown)//击杀boss倒计时
            {
                //判断如果超过了最大等待时间, 且boss还没死,强行杀死boss
                if (WaitingKillBossSecs > 0)
                {
                    //long ticks = TimeUtil.NOW();
                    //if (ticks >= (StateStartTicks + (WaitingKillBossSecs * 1000)))
                    //{
                    //    //强行杀死boss

                    //    IsBossKilled = true;
                    //}
                }

                if (IsBossKilled)
                {
                    GuessStates = ShengXiaoGuessStates.EndKillBoss;
                }
            }
            else if (GuessStates == ShengXiaoGuessStates.EndKillBoss)
            {
                //生成随机生肖
                int resultShengXiaoMask = GenerateRandomShengXiao();

                AddGuessResultHistory(resultShengXiaoMask);

                //发送广播消息, 通知所有玩家竞猜结果
                GameManager.ClientMgr.NotifyAllShengXiaoGuessStateMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, (int)GuessStates, resultShengXiaoMask, 0, GetPreGuessResult());

                //处理奖励
                ProcessAwards(resultShengXiaoMask);

                //更新为没有下注状态,等待第一个玩家下注
                GuessStates = ShengXiaoGuessStates.NoMortgage;

                //发送广播消息
                GameManager.ClientMgr.NotifyAllShengXiaoGuessStateMsg(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, (int)GuessStates, 0, 0, GetPreGuessResult());

                //重置各种信息
                Reset();
            }
        }