コード例 #1
0
ファイル: EffectBuilder.cs プロジェクト: rycoll/1KBWC
    public string PrintNode(EffectBuilderItem node)
    {
        string print = "";

        if (node.effectData != null)
        {
            print += node.effectData.instruction.ToString() + " ";
        }
        if (node.enteredValue != null && node.enteredValue.Count > 0)
        {
            print += "( ";
            for (int i = 0; i < node.enteredValue.Count; i++)
            {
                print += node.enteredValue[i] + " ";
            }
            print += ") ";
        }
        if (node.children != null && node.children.Count > 0)
        {
            print += "[ ";
            foreach (EffectBuilderItem child in node.children)
            {
                print += PrintNode(child);
            }
            print += "] ";
        }
        return(print);
    }
コード例 #2
0
    public void Next()
    {
        if (builder == null)
        {
            builder = new EffectBuilder(currentCompilerNode);
        }

        FieldData nextFieldData = currentCompilerNode.GetNextFieldData();

        if (nextFieldData == null)
        {
            if (currentCompilerNode.parent == null)
            {
                Last();
                return;
            }
            else
            {
                currentCompilerNode = currentCompilerNode.parent;
                Next();
                return;
            }
        }

        currentFieldData = nextFieldData;

        // handling for auxiliary bytes
        if (Array.IndexOf(currentFieldData.attributes, "auxiliary") != -1)
        {
            string      typeString  = currentFieldData.returnType.ToString();
            Instruction instruction = EffectData.GetEffectDataByName(typeString).instruction;
            currentCompilerNode.Add(
                new EffectBuilderItem(new List <byte> {
                (byte)instruction
            })
                );
            Next();
            return;
        }

        SetState();
    }
コード例 #3
0
    public void SubmitSelection()
    {
        string selection = dropdown.options[dropdown.value].text;

        EffectData        data    = EffectData.GetEffectDataByName(selection);
        EffectBuilderItem newNode = data != null
            ? new EffectBuilderItem(data)
            : null;

        // handling for enums
        if (currentCompilerNode != null)
        {
            string typeString = currentFieldData.returnType.ToString();
            if (typeString.StartsWith("ENUM"))
            {
                EnumRepesentation enumRepesentation            = EnumRepesentation.EnumLookup(typeString);
                Instruction       enumInstruction              = enumRepesentation.getInstruction();
                EffectData        effectDataForEnumInstruction = EffectData.GetEffectDataByInstruction(enumInstruction);
                EffectBuilderItem compilerNode = new EffectBuilderItem(effectDataForEnumInstruction);
                currentCompilerNode.Add(compilerNode);
                byte enumValue = (byte)enumRepesentation.getIndex(selection);
                compilerNode.Add(new EffectBuilderItem(new List <byte> {
                    enumValue
                }));
                Next();
                return;
            }
            else if (newNode != null)
            {
                currentCompilerNode.Add(newNode);
            }
        }

        if (newNode != null)
        {
            currentCompilerNode = newNode;
        }
        Next();
    }
コード例 #4
0
ファイル: EffectBuilderItem.cs プロジェクト: rycoll/1KBWC
 public void Add(EffectBuilderItem child)
 {
     children.Add(child);
     child.parent = this;
 }
コード例 #5
0
 public void Clear()
 {
     builder             = null;
     currentCompilerNode = null;
     currentFieldData    = null;
 }
コード例 #6
0
ファイル: EffectBuilder.cs プロジェクト: rycoll/1KBWC
 public EffectBuilder(EffectBuilderItem root)
 {
     rootNode = root;
 }