public TransitionElement(Transition trans) { A = 2 * trans.To.Index; B = 2 * trans.Parent.Index + 1; if (trans.Parent.Index < trans.To.Index) { A = 2 * trans.Parent.Index + 1; B = 2 * trans.To.Index; } if (trans.Parent.Index > trans.To.Index) { A = 2 * trans.To.Index + 1; B = 2 * trans.Parent.Index; } Transition = trans; }
private static void ProcessTransitions(Dialog dialog, XmlNode dialogNode) { State state; Transition transition; int transitionIndex = 0; XmlNode dialogChildNode, transitionNode; int i, j; for (i = 0; i < dialogNode.ChildNodes.Count; i++) { dialogChildNode = dialogNode.ChildNodes[i]; if (dialogChildNode.NodeType != XmlNodeType.Comment) { if (dialogChildNode.Name == "state") { state = dialog.States[dialogChildNode.Attributes["key"].Value]; transitionIndex = 0; for (j = 0; j < dialogChildNode.ChildNodes.Count; j++) { transitionNode = dialogChildNode.ChildNodes[j]; if (transitionNode.NodeType != XmlNodeType.Comment) { transition = new Transition(); transition.Parent = state; transition.Index = transitionIndex; transitionIndex++; if (transitionNode.Attributes["key"] == null || transitionNode.Attributes["key"].Value.Length == 0) throw new ConfigurationErrorsException(string.Format(CultureInfo.CurrentCulture, Resources.TransitionAttributeMissing, "key")); transition.Key = transitionNode.Attributes["key"].Value; if (transitionNode.Attributes["to"] == null || transitionNode.Attributes["to"].Value.Length == 0) throw new ConfigurationErrorsException(string.Format(CultureInfo.CurrentCulture, Resources.TransitionAttributeMissing, "to")); transition.To = dialog.States[transitionNode.Attributes["to"].Value]; if (transition.To == null) throw new ConfigurationErrorsException(string.Format(CultureInfo.CurrentCulture, Resources.InvalidTransitionToKey, state.Key, transitionNode.Attributes["to"].Value)); if (state.Transitions[transitionNode.Attributes["key"].Value] != null) throw new ConfigurationErrorsException(string.Format(CultureInfo.CurrentCulture, Resources.DuplicateTransitionKey, transitionNode.Attributes["key"].Value, state.Key)); state.Transitions[transitionNode.Attributes["key"].Value] = transition; } } } } } }