Esempio n. 1
0
    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);
    }
Esempio n. 2
0
 public void StateOver(UniState _state)
 {
     if (block != null)
     {
         block.StateOver();
         activeState = null;
     }
 }
Esempio n. 3
0
 public void StateActive(UniState _state)
 {
     if (block != null && activeState == null)
     {
         activeState = _state;
         block.StateActive();
     }
 }
Esempio n. 4
0
    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);
    }
Esempio n. 5
0
 public bool addPreState(UniState state)
 {
     foreach (UniState _state in preStateList)
     {
         if (_state == state)
         {
             return(false);
         }
     }
     preStateList.Add(state);
     state.addForwardState(this);
     return(true);
 }
Esempio n. 6
0
    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]);
            }
        }
    }
Esempio n. 7
0
    public void refresh()
    {
//		index = 0;
        activeState = null;
        stateList.Clear();
    }
Esempio n. 8
0
    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]);
                        }
                    }
                }
            }
        }
    }