Пример #1
0
        protected override void LoadLink(XndNode xndNode)
        {
            mIsLoadingLinks = true;
            mLinkPairs.Clear();
            var att = xndNode.FindAttrib("TransitionLinks");

            att.BeginRead();
            switch (att.Version)
            {
            case 0:
            {
                int count = 0;
                att.Read(out count);
                for (int i = 0; i < count; i++)
                {
                    var pair = new LinkPair();
                    att.Read(out pair.LoadedLinkFrom);
                    att.Read(out pair.LoadedLinkTo);
                    mLinkPairs.Add(pair);
                }
            }
            break;
            }
            att.EndRead();

            mIsLoadingLinks = false;
        }
Пример #2
0
    public void GenerateLink()
    {
        var inputField = GetComponentInChildren <InputField>();

        currentLinkPair    = LinkPresets.Presets[Random.Range(0, LinkPresets.Presets.Count)];
        inputField.text    = Random.Range(0, 2) == 0 ? currentLinkPair.Correct : currentLinkPair.Incorrect;
        ResultOutput.text  = "...";
        ResultOutput.color = Color.gray;
    }
Пример #3
0
        private void button4_Click(object sender, EventArgs e)
        {
            var    links      = new Dictionary <string, Link>();
            var    states     = new HashSet <string>();
            string initState  = "";
            string finalState = "";

            for (int i = 0; i < txtFSMTable.Lines.Count(); i++)
            {
                string   line          = txtFSMTable.Lines[i];
                string[] StateAndLinks = line.Split(':');
                string   StateName     = StateAndLinks[0].Trim(' ');
                states.Add(StateName);
                if (i == 0)
                {
                    initState = StateName;
                }
                if (i == txtFSMTable.Lines.Count() - 1)
                {
                    finalState = StateName;
                }
                links.Add(StateName, new Link());

                if (StateAndLinks[1] != "") // Парсим переходы к другим состояниям
                {
                    foreach (string LinkPair in StateAndLinks[1].Split(','))
                    {
                        string[] SymAndDestState = LinkPair.Split('-');
                        string   Symbol          = SymAndDestState[0].Trim(' ').Substring(1); //.Substring(1);
                        string   DestState       = SymAndDestState[1].Trim(' ');
                        states.Add(DestState);
                        links[StateName].Add(Symbol, DestState);
                    }
                }
            }
            parser = new fsm.Parser(states, links, initState, finalState);
            var dataGraph = new GraphExample();

            foreach (string vs in states)
            {
                var dataVertex = new DataVertex(vs);
                dataGraph.AddVertex(dataVertex);
            }
            var      vlist = dataGraph.Vertices.ToList();
            DataEdge edge;

            //Then create two edges optionaly defining Text property to show who are connected
            foreach (string state in states)
            {
                if (links.ContainsKey(state))
                {
                    foreach (KeyValuePair <string, string> link in links[state])
                    {
                        var vA = vlist.Find(x => x.Text.Equals(state));
                        var vB = vlist.Find(x => x.Text.Equals(link.Value));
                        edge = new DataEdge(vA, vB)
                        {
                            Text = link.Key
                        };
                        dataGraph.AddEdge(edge);
                    }
                }
            }
            _gArea.LogicCore.Graph = dataGraph;
            _gArea.GenerateGraph(true);
            _gArea.RelayoutGraph();
            _gArea.SetVerticesDrag(true, true);
            _zoomctrl.ZoomToFill();
        }