/// <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()); } }
/// <summary> /// 重置各种运行状态变量 /// </summary> protected void Reset() { GuessStates = ShengXiaoGuessStates.NoMortgage; //清空竞猜记录 lock (GuessItemListDict) { GuessItemListDict.Clear(); } StateStartTicks = TimeUtil.NOW(); IsBossKilled = false; ThisTimeCountDownSecs = 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(); } }