public bool OptionsMatch(KettleSubOption option1, KettleSubOption option2) { if ((option1 == null) != (option2 == null)) { return(false); } if (option1 != null) { if (option1.Id != option2.Id) { return(false); } if ((option1.Targets == null || option1.Targets.Count == 0) != (option2.Targets == null || option2.Targets.Count == 0)) { return(false); } if (option1.Targets != null) { foreach (int target in option1.Targets) { if (!option2.Targets.Contains(target)) { return(false); } } } } return(true); }
public void OnOptionsBlock(KettleOptionsBlock optionsBlock) { Console.WriteLine("AI OnOptionsBlock called."); int kettleOptionIndex = Rand.Next(0, optionsBlock.Options.Count); KettleOption kettleOption = optionsBlock.Options[kettleOptionIndex]; var kettleSendOption = new KettleSendOption() { Id = optionsBlock.Id, }; if (kettleOption.MainOption != null) { kettleSendOption.MainOption = kettleOptionIndex; } if (kettleOption.SubOptions != null && kettleOption.SubOptions.Any()) { int kettleSubOptionIndex = Rand.Next(0, kettleOption.SubOptions.Count); KettleSubOption subOption = kettleOption.SubOptions[kettleSubOptionIndex]; kettleSendOption.SubOption = kettleSubOptionIndex; if (subOption.Targets != null && subOption.Targets.Any()) { kettleSendOption.Target = subOption.Targets[Rand.Next(0, subOption.Targets.Count)]; } } else { if (kettleOption.MainOption != null && kettleOption.MainOption.Targets != null && kettleOption.MainOption.Targets.Any()) { kettleSendOption.Target = kettleOption.MainOption.Targets[Rand.Next(0, kettleOption.MainOption.Targets.Count)]; } } kettleSendOption.Position = 0; Adapter.SendMessage(kettleSendOption); }