Allow "show bots" pCampbot console command to quickly report status by not locking entire bot list for almost 100% of connection time.

bullet-2.82
Justin Clark-Casey (justincc) 2014-08-05 01:06:22 +01:00
parent d6890d78ad
commit e57e9e95d4
1 changed files with 22 additions and 20 deletions

View File

@ -333,33 +333,35 @@ namespace pCampBot
m_log.DebugFormat("[BOT MANAGER]: BotsSendAgentUpdates is {0}", InitBotSendAgentUpdates); m_log.DebugFormat("[BOT MANAGER]: BotsSendAgentUpdates is {0}", InitBotSendAgentUpdates);
m_log.DebugFormat("[BOT MANAGER]: InitBotRequestObjectTextures is {0}", InitBotRequestObjectTextures); m_log.DebugFormat("[BOT MANAGER]: InitBotRequestObjectTextures is {0}", InitBotRequestObjectTextures);
int connectedBots = 0; List<Bot> botsToConnect = new List<Bot>();
for (int i = 0; i < m_bots.Count; i++) lock (m_bots)
{ {
lock (m_bots) foreach (Bot bot in m_bots)
{ {
if (DisconnectingBots) if (bot.ConnectionState == ConnectionState.Disconnected)
{ botsToConnect.Add(bot);
MainConsole.Instance.Output(
"[BOT MANAGER]: Aborting bot connection due to user-initiated disconnection"); if (botsToConnect.Count >= botCount)
break; break;
}
if (m_bots[i].ConnectionState == ConnectionState.Disconnected)
{
m_bots[i].Connect();
connectedBots++;
if (connectedBots >= botCount)
break;
// Stagger logins
Thread.Sleep(LoginDelay);
}
} }
} }
foreach (Bot bot in botsToConnect)
{
if (DisconnectingBots)
{
MainConsole.Instance.Output(
"[BOT MANAGER]: Aborting bot connection due to user-initiated disconnection");
break;
}
bot.Connect();
// Stagger logins
Thread.Sleep(LoginDelay);
}
ConnectingBots = false; ConnectingBots = false;
} }