示例#1
0
    public static void AutoLinkCSVLine(Fungus.FlowchartExtend sourceObject)
    {
        if (sourceObject == null)
        {
            return;
        }

        List <AdvCSVLine> csvLineData   = sourceObject.csvLines;
        List <AdvCSVLine> csvLineBlocks = new List <AdvCSVLine>();

        //Get base CSV info
        foreach (var item in csvLineData)
        {
            if (item.Command.StartsWith("*"))
            {
                csvLineBlocks.Add(item);
            }
        }

        //Start auto link
        List <Fungus.Command> comps = new List <Fungus.Command>(sourceObject.GetComponents <Fungus.Command>());

        for (int i = 0; i < csvLineData.Count; i++)
        {
            for (int j = comps.Count - 1; j >= 0; j--)
            {
                ICommand icmd = comps[j] as ICommand;
                if (icmd != null && csvLineData[i].keys == icmd.CSVCommandKey)
                {
                    //if(csvLineData[i].generatedCommand == null) Debug.Log($"Find unlink CSVLine ,will be linked :{csvLineData[i].keys}");
                    csvLineData[i].generatedCommand = comps[j];
                    comps.RemoveAt(j);
                    break;
                }
            }
        }

        foreach (var item in csvLineBlocks)
        {
            if (item.generateBlock == null)
            {
                Fungus.Block _block = sourceObject.FindBlock(item.Command);
                if (_block != null)
                {
                    item.generateBlock = _block;
                }
            }
        }
    }
示例#2
0
    public static void RebuildCSVLine(Fungus.FlowchartExtend sourceObject)
    {
        List <AdvCSVLine> lines = new List <AdvCSVLine>();

        //Commands
        List <Fungus.Command> comps = new List <Fungus.Command>(sourceObject.GetComponents <Fungus.Command>());

        for (int i = comps.Count - 1; i >= 0; i--)
        {
            ICommand icmd = comps[i] as ICommand;
            if (icmd != null && !string.IsNullOrEmpty(icmd.CSVCommandKey))
            {
                AdvCSVLine newLine = new AdvCSVLine()
                {
                    keys = icmd.CSVCommandKey, Command = ParseClassToCSVCMD(comps[i])
                };
                lines.Add(newLine);
            }
        }

        sourceObject.csvLines.RemoveAll((x) => !x.Command.StartsWith("*"));
        sourceObject.csvLines.AddRange(lines);
    }