Exemple #1
0
    private void MoveToNextComposites()
    {
        List <SkillComposite> nextComposites = new List <SkillComposite>();
        List <bool>           nextStates     = new List <bool>();

        for (int i = 0; i < this.composites.Count; i++)
        {
            SkillComposite composite        = this.composites[i];
            bool           isDoneProcessing = this.states[i];

            if (isDoneProcessing)
            {
                composite.OnDoneProcessing();

                foreach (SkillComposite child in composite.Children)
                {
                    nextComposites.Add(child);
                    nextStates.Add(false);
                }
                continue;
            }

            nextComposites.Add(composite);
            nextStates.Add(isDoneProcessing);
        }

        this.composites = nextComposites;
        this.states     = nextStates;
    }
Exemple #2
0
    private SkillComposite BuildSkill(SkillInput input)
    {
        SkillComposite composite = new SkillComposite(new DoubleWordProcess("foo"));

        Func <SkillProcess, DisplayWordProcess> onDoubleWord_DisplayWord = (parentProcess) => {
            DoubleWordProcess comp = (DoubleWordProcess)parentProcess;
            return(new DisplayWordProcess(comp.OutputWord));
        };

        Func <SkillProcess, DoubleWordProcess> onDoubleWord_DoubleWord = (parentProcess) => {
            DoubleWordProcess comp = (DoubleWordProcess)parentProcess;
            return(new DoubleWordProcess(comp.OutputWord));
        };

        composite
        .In(parentProcess => new SplitStringProcess("abc#def.ghi.jkl#mno", '.'))
        .InSeveral(parentProcess => {
            SplitStringProcess parent = (SplitStringProcess)parentProcess;
            return(parent.words.Select(word => new SplitStringProcess(word, '#')));
        })
        .DoSeveral(parentProcess => {
            SplitStringProcess parent = (SplitStringProcess)parentProcess;
            return(parent.words.Select(word => new DisplayWordProcess(word)));
        })
        .Out()
        .Out()
        ;

        return(composite);
    }
Exemple #3
0
    public void Init(SkillInput input)
    {
        SkillComposite composite = this.buildSkillCbk(input);

        this.composites = new List <SkillComposite>()
        {
            composite
        };
        this.states = new List <bool>()
        {
            false
        };
    }
    private int CreateChild(SkillComposite original = null)
    {
        SkillComposite child = new SkillComposite();

        this.children.Add(child);

        child.parent = this;
        if (original != null)
        {
            child.onDoneProcessing += original.onDoneProcessing;
            foreach (SkillComposite grandChild in original.children)
            {
                child.CreateChild(grandChild);
            }
        }

        return(this.children.Count - 1);
    }
    private SkillComposite AddChildren(Func <SkillProcess, IEnumerable <SkillProcess> > childrenInit)
    {
        int childIndex = this.CreateChild();

        this.onDoneProcessing += (thisComposite) => {
            IEnumerable <SkillProcess> processes = childrenInit(thisComposite.process);

            SkillComposite orginalChild = thisComposite.children[childIndex];
            thisComposite.children.RemoveAt(childIndex);

            foreach (SkillProcess process in processes)
            {
                int newChildIndex = thisComposite.CreateChild(orginalChild);
                thisComposite.children[newChildIndex].process = process;
            }
        };

        return(this.children[childIndex]);
    }
Exemple #6
0
    private SkillComposite BuildSkill(SkillInput input)
    {
        SkillComposite composite = new SkillComposite(new AddSkillEffectProcess(input, this.CreateLoggingEffect, "LoggingEffect", 3));

        return(composite);
    }
Exemple #7
0
    private SkillComposite CreateLoggingEffect(SkillInput skillInput)
    {
        SkillComposite composite = new SkillComposite(new DisplayWordProcess("logging effect" + skillInput.Caster.Name));

        return(composite);
    }
Exemple #8
0
    private SkillComposite BuildSkill(SkillInput input)
    {
        SkillComposite composite = new SkillComposite(new EndPassProcess());

        return(composite);
    }
Exemple #9
0
    private SkillComposite BuildSkill(SkillInput input)
    {
        SkillComposite composite = new SkillComposite(new OnTakeDamageReactionProcess(input.TargetActor, null, new LoggingSkill()));

        return(composite);
    }
    private SkillComposite BuildSkill(SkillInput input)
    {
        SkillComposite composite = new SkillComposite(new MoveProcess(input.Caster, input.TargetTile, new ManhattanTopology(), new WalkableFilter()));

        return(composite);
    }
    public SkillComposite InSeveral(Func <SkillProcess, IEnumerable <SkillProcess> > childrenInit)
    {
        SkillComposite child = this.AddChildren(childrenInit);

        return(child);
    }
    public SkillComposite In(Func <SkillProcess, SkillProcess> childInit)
    {
        SkillComposite child = this.AddChild(childInit);

        return(child);
    }
    private SkillComposite BuildSkill(SkillInput input)
    {
        SkillComposite composite = new SkillComposite(new AddTurnBreakProcess(input.TargetActor));

        return(composite);
    }