Make pCampbot "add behaviour" and "remove behaviour" console commands work for all bots if no bot number is given
parent
cfdb2700bc
commit
514c58bc96
|
@ -195,15 +195,17 @@ namespace pCampBot
|
||||||
HandleDisconnect);
|
HandleDisconnect);
|
||||||
|
|
||||||
m_console.Commands.AddCommand(
|
m_console.Commands.AddCommand(
|
||||||
"bot", false, "add behaviour", "add behaviour <abbreviated-name> <bot-number>",
|
"bot", false, "add behaviour", "add behaviour <abbreviated-name> [<bot-number>]",
|
||||||
"Add a behaviour to a bot",
|
"Add a behaviour to a bot",
|
||||||
"Can be performed on connected or disconnected bots.",
|
"If no bot number is specified then behaviour is added to all bots.\n"
|
||||||
|
+ "Can be performed on connected or disconnected bots.",
|
||||||
HandleAddBehaviour);
|
HandleAddBehaviour);
|
||||||
|
|
||||||
m_console.Commands.AddCommand(
|
m_console.Commands.AddCommand(
|
||||||
"bot", false, "remove behaviour", "remove behaviour <abbreviated-name> <bot-number>",
|
"bot", false, "remove behaviour", "remove behaviour <abbreviated-name> [<bot-number>]",
|
||||||
"Remove a behaviour from a bot",
|
"Remove a behaviour from a bot",
|
||||||
"Can be performed on connected or disconnected bots.",
|
"If no bot number is specified then behaviour is added to all bots.\n"
|
||||||
|
+ "Can be performed on connected or disconnected bots.",
|
||||||
HandleRemoveBehaviour);
|
HandleRemoveBehaviour);
|
||||||
|
|
||||||
m_console.Commands.AddCommand(
|
m_console.Commands.AddCommand(
|
||||||
|
@ -224,7 +226,7 @@ namespace pCampBot
|
||||||
"bot", false, "show bots", "show bots", "Shows the status of all bots", HandleShowBotsStatus);
|
"bot", false, "show bots", "show bots", "Shows the status of all bots", HandleShowBotsStatus);
|
||||||
|
|
||||||
m_console.Commands.AddCommand(
|
m_console.Commands.AddCommand(
|
||||||
"bot", false, "show bot", "show bot <n>",
|
"bot", false, "show bot", "show bot <bot-number>",
|
||||||
"Shows the detailed status and settings of a particular bot.", HandleShowBotStatus);
|
"Shows the detailed status and settings of a particular bot.", HandleShowBotStatus);
|
||||||
|
|
||||||
m_bots = new List<Bot>();
|
m_bots = new List<Bot>();
|
||||||
|
@ -489,83 +491,114 @@ namespace pCampBot
|
||||||
|
|
||||||
private void HandleAddBehaviour(string module, string[] cmd)
|
private void HandleAddBehaviour(string module, string[] cmd)
|
||||||
{
|
{
|
||||||
if (cmd.Length != 4)
|
if (cmd.Length < 3 || cmd.Length > 4)
|
||||||
{
|
{
|
||||||
MainConsole.Instance.OutputFormat("Usage: add behaviour <abbreviated-behaviour> <bot-number>");
|
MainConsole.Instance.OutputFormat("Usage: add behaviour <abbreviated-behaviour> [<bot-number>]");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
string rawBehaviours = cmd[2];
|
string rawBehaviours = cmd[2];
|
||||||
int botNumber;
|
|
||||||
|
|
||||||
if (!ConsoleUtil.TryParseConsoleNaturalInt(MainConsole.Instance, cmd[3], out botNumber))
|
List<Bot> botsToEffect = new List<Bot>();
|
||||||
return;
|
|
||||||
|
|
||||||
Bot bot = GetBotFromNumber(botNumber);
|
if (cmd.Length == 3)
|
||||||
|
|
||||||
if (bot == null)
|
|
||||||
{
|
{
|
||||||
MainConsole.Instance.OutputFormat("Error: No bot found with number {0}", botNumber);
|
lock (m_bots)
|
||||||
return;
|
botsToEffect.AddRange(m_bots);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int botNumber;
|
||||||
|
if (!ConsoleUtil.TryParseConsoleNaturalInt(MainConsole.Instance, cmd[3], out botNumber))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Bot bot = GetBotFromNumber(botNumber);
|
||||||
|
|
||||||
|
if (bot == null)
|
||||||
|
{
|
||||||
|
MainConsole.Instance.OutputFormat("Error: No bot found with number {0}", botNumber);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
botsToEffect.Add(bot);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
HashSet<string> rawAbbreviatedSwitchesToAdd = new HashSet<string>();
|
HashSet<string> rawAbbreviatedSwitchesToAdd = new HashSet<string>();
|
||||||
Array.ForEach<string>(rawBehaviours.Split(new char[] { ',' }), b => rawAbbreviatedSwitchesToAdd.Add(b));
|
Array.ForEach<string>(rawBehaviours.Split(new char[] { ',' }), b => rawAbbreviatedSwitchesToAdd.Add(b));
|
||||||
|
|
||||||
List<IBehaviour> behavioursAdded = new List<IBehaviour>();
|
foreach (Bot bot in botsToEffect)
|
||||||
|
|
||||||
foreach (IBehaviour behaviour in CreateBehavioursFromAbbreviatedNames(rawAbbreviatedSwitchesToAdd))
|
|
||||||
{
|
{
|
||||||
if (bot.AddBehaviour(behaviour))
|
List<IBehaviour> behavioursAdded = new List<IBehaviour>();
|
||||||
behavioursAdded.Add(behaviour);
|
|
||||||
}
|
|
||||||
|
|
||||||
MainConsole.Instance.OutputFormat(
|
foreach (IBehaviour behaviour in CreateBehavioursFromAbbreviatedNames(rawAbbreviatedSwitchesToAdd))
|
||||||
"Added behaviours {0} to bot {1}",
|
{
|
||||||
string.Join(", ", behavioursAdded.ConvertAll<string>(b => b.Name).ToArray()), bot.Name);
|
if (bot.AddBehaviour(behaviour))
|
||||||
|
behavioursAdded.Add(behaviour);
|
||||||
|
}
|
||||||
|
|
||||||
|
MainConsole.Instance.OutputFormat(
|
||||||
|
"Added behaviours {0} to bot {1}",
|
||||||
|
string.Join(", ", behavioursAdded.ConvertAll<string>(b => b.Name).ToArray()), bot.Name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleRemoveBehaviour(string module, string[] cmd)
|
private void HandleRemoveBehaviour(string module, string[] cmd)
|
||||||
{
|
{
|
||||||
if (cmd.Length != 4)
|
if (cmd.Length < 3 || cmd.Length > 4)
|
||||||
{
|
{
|
||||||
MainConsole.Instance.OutputFormat("Usage: remove behaviour <abbreviated-behaviour> <bot-number>");
|
MainConsole.Instance.OutputFormat("Usage: remove behaviour <abbreviated-behaviour> [<bot-number>]");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
string rawBehaviours = cmd[2];
|
string rawBehaviours = cmd[2];
|
||||||
int botNumber;
|
|
||||||
|
|
||||||
if (!ConsoleUtil.TryParseConsoleNaturalInt(MainConsole.Instance, cmd[3], out botNumber))
|
List<Bot> botsToEffect = new List<Bot>();
|
||||||
return;
|
|
||||||
|
|
||||||
Bot bot = GetBotFromNumber(botNumber);
|
if (cmd.Length == 3)
|
||||||
|
|
||||||
if (bot == null)
|
|
||||||
{
|
{
|
||||||
MainConsole.Instance.OutputFormat("Error: No bot found with number {0}", botNumber);
|
lock (m_bots)
|
||||||
return;
|
botsToEffect.AddRange(m_bots);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int botNumber;
|
||||||
|
if (!ConsoleUtil.TryParseConsoleNaturalInt(MainConsole.Instance, cmd[3], out botNumber))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Bot bot = GetBotFromNumber(botNumber);
|
||||||
|
|
||||||
|
if (bot == null)
|
||||||
|
{
|
||||||
|
MainConsole.Instance.OutputFormat("Error: No bot found with number {0}", botNumber);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
botsToEffect.Add(bot);
|
||||||
}
|
}
|
||||||
|
|
||||||
HashSet<string> abbreviatedBehavioursToRemove = new HashSet<string>();
|
HashSet<string> abbreviatedBehavioursToRemove = new HashSet<string>();
|
||||||
List<IBehaviour> behavioursRemoved = new List<IBehaviour>();
|
|
||||||
|
|
||||||
Array.ForEach<string>(rawBehaviours.Split(new char[] { ',' }), b => abbreviatedBehavioursToRemove.Add(b));
|
Array.ForEach<string>(rawBehaviours.Split(new char[] { ',' }), b => abbreviatedBehavioursToRemove.Add(b));
|
||||||
|
|
||||||
foreach (string b in abbreviatedBehavioursToRemove)
|
foreach (Bot bot in botsToEffect)
|
||||||
{
|
{
|
||||||
IBehaviour behaviour;
|
List<IBehaviour> behavioursRemoved = new List<IBehaviour>();
|
||||||
|
|
||||||
if (bot.TryGetBehaviour(b, out behaviour))
|
foreach (string b in abbreviatedBehavioursToRemove)
|
||||||
{
|
{
|
||||||
bot.RemoveBehaviour(b);
|
IBehaviour behaviour;
|
||||||
behavioursRemoved.Add(behaviour);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MainConsole.Instance.OutputFormat(
|
if (bot.TryGetBehaviour(b, out behaviour))
|
||||||
"Removed behaviours {0} to bot {1}",
|
{
|
||||||
string.Join(", ", behavioursRemoved.ConvertAll<string>(b => b.Name).ToArray()), bot.Name);
|
bot.RemoveBehaviour(b);
|
||||||
|
behavioursRemoved.Add(behaviour);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MainConsole.Instance.OutputFormat(
|
||||||
|
"Removed behaviours {0} to bot {1}",
|
||||||
|
string.Join(", ", behavioursRemoved.ConvertAll<string>(b => b.Name).ToArray()), bot.Name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleDisconnect(string module, string[] cmd)
|
private void HandleDisconnect(string module, string[] cmd)
|
||||||
|
|
Loading…
Reference in New Issue