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
	
	 Justin Clark-Casey (justincc)
						Justin Clark-Casey (justincc)