コード例 #1
0
        public override Task.EnumReturn run(EntityContext context)
        {
            if (children.Count == 0)
            {
                // uncommented because its old code, and we want to still have the information errorMessage = "this.Childrens does have a length of 0!";
                // uncommented because its old code, and we want to still have the information errorDepth = 0;
                return(Task.EnumReturn.FAILURE);
            }

            for (;;)
            {
                if (currentIndex >= children.Count)
                {
                    currentIndex = 0;

                    if (!privateInfinite)
                    {
                        return(Task.EnumReturn.SUCCESS);
                    }
                }

                Task.EnumReturn calleeReturn = children[(int)currentIndex].run(context);
                switch (calleeReturn)
                {
                case Task.EnumReturn.SUCCESS: break;

                case Task.EnumReturn.FAILURE: return(Task.EnumReturn.FAILURE);

                case Task.EnumReturn.RUNNING: return(Task.EnumReturn.RUNNING);
                }

                currentIndex++;
            }
        }
コード例 #2
0
ファイル: Repeater.cs プロジェクト: chargen/AGI-X0
        public override Task.EnumReturn run(EntityContext context)
        {
            Task.EnumReturn calleeReturn = children.run(context);

            if (calleeReturn == Task.EnumReturn.FAILURE && repeatUntilFail)
            {
                return(Task.EnumReturn.SUCCESS);
            }

            if (calleeReturn != Task.EnumReturn.RUNNING && !runsInfinitly)
            {
                remainingCounter--;

                if (remainingCounter <= 0)
                {
                    return(calleeReturn);
                }
            }

            return(EnumReturn.FAILURE);
        }