public int CompareTo(object obj) { TriggerToBeInvoked trig = (TriggerToBeInvoked)obj; if (this.Trigger.Sequence > trig.Trigger.Sequence) { return(1); } else if (this.Trigger.Sequence < trig.Trigger.Sequence) { return(-1); } else { return(0); } }
private TriggerToBeInvoked SearchForTriggerInCommandQueue(GenericTrigger trigger) { TriggerToBeInvoked triggerToBeInvoked = null; for (int listIndex = 0; listIndex < commandQueue.Count - trigger.TriggerCommands.Count + 1; listIndex++) { int count = 0; while (count < trigger.TriggerCommands.Count && trigger.SenderType == DetermineSenderType(commandQueue[listIndex + count].Sender) && commandQueue[listIndex + count].Sender.ToString().Contains(trigger.Sender) && trigger.TriggerCommands[count].Equals(commandQueue[listIndex + count].Command)) { count++; if (count == trigger.TriggerCommands.Count) { if (!commandQueue[listIndex].ProcessedTriggers.Contains(trigger)) { List <object> paramList = new List <object>(); for (int i = listIndex; i < listIndex + trigger.TriggerCommands.Count; i++) { if (commandQueue[i].Parameters != null) { paramList.AddRange(commandQueue[i].Parameters); } } triggerToBeInvoked = new TriggerToBeInvoked(); triggerToBeInvoked.Trigger = trigger; if (paramList.Count > 0) { triggerToBeInvoked.TriggerParameters = paramList.ToArray(); } MarkCommandsAsProcessed(trigger, listIndex, listIndex + trigger.TriggerCommands.Count - 1); } } } } return(triggerToBeInvoked); }
private void InvokeTriggerIfFound() { List <TriggerToBeInvoked> triggersToBeInvoked = new List <TriggerToBeInvoked>(); List <GenericTrigger> listOfTriggers = Zones.GetListOfTriggers(); foreach (GenericTrigger trigger in listOfTriggers) { try { TriggerToBeInvoked triggerToInvoke = SearchForTriggerInCommandQueue(trigger); if (triggerToInvoke != null) { triggersToBeInvoked.Add(triggerToInvoke); } } catch (Exception e) { if (MessagesOccurred != null) { MessagesOccurred(this, e.Message); } } } triggersToBeInvoked.Sort(); InvokeTriggers(triggersToBeInvoked); }