public void UpdateEvent() { if (currentEvent == null) { if (eventQueue.Count > 0) { currentEvent = eventQueue.Dequeue(); currentEvent.ResetEvent(); } else { Goodbye(); } } if (currentEvent != null) { if (!currentEvent.IsEventComplete()) { currentEvent.UpdateEvent(); } else { currentEvent = null; } } }
public override void UpdateEvent() { if (currentEvent == null) { while (index < children.Count && !children[index].IsEventAvailable()) { index++; } if (index < children.Count) { currentEvent = children[index]; } } if (currentEvent != null) { if (!currentEvent.IsEventComplete()) { currentEvent.UpdateEvent(); } else { currentEvent = null; index++; } } }
public override void ResetEvent() { foreach (NeverdawnEventBase e in children) { e.ResetEvent(); } currentEvent = null; index = 0; }
internal static NeverdawnEventBase LoadEvent(XmlNode node) { string eventType = node.Name; NeverdawnEventBase result = null; if (eventType.Equals(EVENT_TYPE_SEQUENCE)) { result = new NeverdawnSequence(node); } if (eventType.Equals(EVENT_TYPE_FIRST_MATCH)) { result = new NeverdawnFirstMatch(node); } if (eventType.Equals(EVENT_TYPE_LAST_MATCH)) { result = new NeverdawnLastMatch(node); } if (eventType.Equals(EVENT_TYPE_PHRASE)) { result = new NeverdawnPhrase(node); } if (eventType.Equals(EVENT_TYPE_INVESTIGATION)) { result = new NeverdawnInvestigateEvent(); } if (eventType.Equals(EVENT_TYPE_DISCOVERY)) { result = new NeverdawnDiscovery(node); } if (result != null) { result.id = XmlUtil.Get(node, "id", string.Empty); result.conditions = XmlUtil.GetArray(node, "if", ' '); result.inverseConditions = XmlUtil.GetArray(node, "not", ' '); result.targetId = XmlUtil.Get(node, "target", string.Empty); result.children = new List <NeverdawnEventBase>(); } return(result); }
public static NeverdawnEventBase LoadEvent(XmlNode node) { NeverdawnEventBase currentEvent = NeverdawnEventBase.LoadEvent(node); // Triggerable events if (currentEvent != null) { foreach (XmlNode childNode in node.ChildNodes) { NeverdawnEventBase childEvent = LoadEvent(childNode); if (childEvent != null) { currentEvent.children.Add(childEvent); } } } return(currentEvent); }
private void loadEvents() { events = new Dictionary <string, NeverdawnEventBase>(); XmlDocument doc = NeverdawnScene.sceneEventsXml; XmlNodeList list = doc.GetElementsByTagName("events"); if (list != null) { XmlNode eventsNode = list[0]; if (eventsNode != null) { foreach (XmlNode node in eventsNode.ChildNodes) { NeverdawnEventBase eventBase = NeverdawnUtility.LoadEvent(node); events.Add(eventBase.id, eventBase); } } } }
public override void UpdateEvent() { if (currentEvent == null) { currentEvent = children.FirstOrDefault(e => e.IsEventAvailable()); } if (currentEvent != null) { if (currentEvent.IsEventComplete()) { index = -1; } else { currentEvent.UpdateEvent(); } } else { index = -1; } }
private void questionSelected(TopicQuestion question) { if (question.trigger == null) { chatMessage.Discard(); } else { chatMessage = null; if (question.trigger.Equals(string.Empty)) { Topic topic = NeverdawnDatabase.GetTopic(question.topicId); selectedEvent = topic.defaultEvent; } else { selectedEvent = EventController.FindEvent(question.trigger); } selectedEvent.ResetEvent(); } }
public override void UpdateEvent() { if (mode == EventExecutionType.Sequence) { if (currentEvent == null) { while (index < events.Count && !events[index].IsEventAvailable()) { index++; } if (index < events.Count) { currentEvent = events[index]; } } if (currentEvent != null) { if (!currentEvent.IsEventComplete()) { currentEvent.UpdateEvent(); } else { currentEvent = null; index++; } } } else if (mode == EventExecutionType.Parallel) { foreach (NeverdawnEventBase e in events) { if (e.IsEventAvailable() && !e.IsEventComplete()) { e.UpdateEvent(); } } } else if (mode == EventExecutionType.FirstMatch) { if (currentEvent == null) { currentEvent = events.FirstOrDefault(e => e.IsEventAvailable()); } if (currentEvent != null) { if (currentEvent.IsEventComplete()) { index = -1; } else { currentEvent.UpdateEvent(); } } else { index = -1; } } }