public static BlockState xmlEle2BlockState(XmlElement xblock) { BlockState resState = new BlockState(); resState.name = xblock.GetAttribute("name"); XmlNodeList stateList = xblock.SelectNodes("state"); foreach (XmlElement xstate in stateList) { string name = xstate.GetAttribute("name"); string input = ""; foreach (XmlElement xele in xstate.ChildNodes) { if ("input".Equals(xele.Name)) { input = xele.InnerText; } } UniState newState = resState.addState(name, input); if (newState != null) { s_Instance.stateDict.Add(resState.name + "." + name, newState); } } return(resState); }
public void StateOver(UniState _state) { if (block != null) { block.StateOver(); activeState = null; } }
public void StateActive(UniState _state) { if (block != null && activeState == null) { activeState = _state; block.StateActive(); } }
public UniState addState(string name, string input) { UniState uniState = new UniState(name, input, this); stateList.Add(uniState); if (uniState.name.Equals(StateManager.BASE_STATE_NAME)) { activeState = uniState; uniState.Active(); } return(uniState); }
public bool addPreState(UniState state) { foreach (UniState _state in preStateList) { if (_state == state) { return(false); } } preStateList.Add(state); state.addForwardState(this); return(true); }
public static void xmlEle2Link(XmlElement xedge) { string from = xedge.SelectSingleNode("from").InnerText; string[] toList = xedge.SelectSingleNode("to").InnerText.Split(';'); UniState fromState = null; if (s_Instance.stateDict.ContainsKey(from)) { fromState = s_Instance.stateDict[from]; } if (fromState == null) { return; } foreach (string _to in toList) { if (s_Instance.stateDict.ContainsKey(_to)) { fromState.addForwardState(s_Instance.stateDict[_to]); } } }
public void refresh() { // index = 0; activeState = null; stateList.Clear(); }
public static void xmlEle2BlockLinks(XmlElement xblock) { BlockState blockState = getBlockState(xblock.GetAttribute("name")); XmlNodeList stateList = xblock.SelectNodes("state"); foreach (XmlElement xstate in stateList) { UniState state = null; foreach (UniState _state in blockState.stateList) { if (_state.name.Equals(xstate.GetAttribute("name"))) { state = _state; } } foreach (XmlElement xele in xstate.ChildNodes) { if ("previous".Equals(xele.Name)) { string[] preList = xele.InnerText.Split(';'); foreach (string pre in preList) { string key = pre; if (string.IsNullOrEmpty(key)) { continue; } if (!key.Contains(".")) { key = xblock.GetAttribute("name") + "." + key; } if (s_Instance.stateDict.ContainsKey(key)) { state.addPreState(s_Instance.stateDict[key]); } } } if ("forward".Equals(xele.Name)) { string[] forList = xele.InnerText.Split(';'); foreach (string forw in forList) { string key = forw; if (string.IsNullOrEmpty(key)) { continue; } if (!key.Contains(".")) { key = xblock.GetAttribute("name") + "." + key; } if (s_Instance.stateDict.ContainsKey(key)) { state.addForwardState(s_Instance.stateDict[key]); } } } } } }