Esempio n. 1
0
    public void _11_3_AutoReturnsUnUpdatedConditions()
    {
        int frame    = 100;
        var context0 = PlayerContext.Copy(dummyContext);

        var auto0 = new Auto <PlayerContext, Dictionary <string, PlayerContext> >(
            "RunRoutine0",
            frame,
            context0,
            new Timeline <PlayerContext, Dictionary <string, PlayerContext> >(
                "RunRoutine0TL",
                new Tack <PlayerContext, Dictionary <string, PlayerContext> >(
                    "RunRoutine0Tack_0",
                    0,
                    1,
                    AutoConditions.Act.P0,
                    () =>
        {
            var c      = new RoutineContexts <PlayerContext, Dictionary <string, PlayerContext> >();
            c.rContext = c._Infinity;
            return(c);
        }
                    )
                )
            );

        var conditions = auto0.Conditions();

        if (ConditionGateway.Contains(conditions, AutoConditions.Act.P0))
        {
            return;
        }

        Debug.LogError("failed to get conditions");
    }
Esempio n. 2
0
    /**
     *          特定のconditionが特定のフレーム数存在している
     *          二つのTackにまたがる場合
     */
    public void _2_3_ConditionContinuesIn10FrameBetween2Tack()
    {
        int frame   = 0;
        var context = PlayerContext.Copy(dummyContext);

        var auto = new Auto <PlayerContext, Dictionary <string, PlayerContext> >(
            "5フレーム、特定のconditionを維持する",
            frame,
            context,
            new Timeline <PlayerContext, Dictionary <string, PlayerContext> >(
                "5フレーム、特定のconditionを維持するTL",
                new Tack <PlayerContext, Dictionary <string, PlayerContext> >(
                    "5フレーム、特定のconditionを維持するTack",
                    0,
                    5,
                    AutoConditions.Act.TENFRAME_SPAN,
                    () =>
        {
            var c      = new RoutineContexts <PlayerContext, Dictionary <string, PlayerContext> >();
            c.rContext = c._Infinity;
            return(c);
        }
                    ),
                new Tack <PlayerContext, Dictionary <string, PlayerContext> >(
                    "さらに5フレーム、特定のconditionを維持するTack",
                    5,
                    5,
                    AutoConditions.Act.TENFRAME_SPAN,
                    () =>
        {
            var c      = new RoutineContexts <PlayerContext, Dictionary <string, PlayerContext> >();
            c.rContext = c._Infinity;
            return(c);
        }
                    )
                )
            );

        int count = 0;

        for (int i = 0; i < 10; i++)
        {
            auto.Update(frame, dummyContexts);
            var conditions = auto.Conditions();

            if (ConditionGateway.Contains(conditions, AutoConditions.Act.TENFRAME_SPAN))
            {
                count++;
            }
            frame = frame + 1;
        }

        if (count == 10)
        {
        }
        else
        {
            Debug.LogError("failed. not match count:" + count);
        }
    }
Esempio n. 3
0
    ConditionChange1
    <InitialParamType, UpdateParamType>
        (Auto <InitialParamType, UpdateParamType> baseAuto, int frame, InitialParamType fixedContext)
    {
        var conditions = baseAuto.Conditions();

        /*
         *      comment for branchName0
         */
        if (
            ConditionGateway.Contains(conditions, AutoConditions.Canc.DASH)
            )
        {
            var newAuto = new
                          ConditionChangeAuto0
                          <InitialParamType, UpdateParamType>(frame, fixedContext);
            return(newAuto);
        }

        var finallyAuto = new
                          ConditionChangeAuto1
                          <InitialParamType, UpdateParamType>(frame, fixedContext);

        finallyAuto.InheritTimelines(baseAuto.ExportTimelines(new Type[] {
            typeof(AutoConditions.Move)
        }));
        return(finallyAuto);
    }
Esempio n. 4
0
    PlayerWillMoveOrNot
    <InitialParamType, UpdateParamType>
        (Auto <InitialParamType, UpdateParamType> baseAuto, int frame, InitialParamType fixedContext)
    {
        var conditions = baseAuto.Conditions();

        /*
         *      移動開始
         */
        if (
            ConditionGateway.NotContains(conditions, AutoConditions.Act.SPAWN) &&
            ConditionGateway.Contains(conditions, AutoConditions.Act.DEFAULT) &&
            ConditionGateway.ContainsAll(conditions, AutoConditions.Act.DEFAULT) &&
            ConditionGateway.NotContainsAll(conditions, AutoConditions.Act.SPAWN)
            )
        {
            Debug.Log("歩行条件を満たした!");

            var newAuto = new
                          MoveAuto
                          <InitialParamType, UpdateParamType>(frame, fixedContext);

            // inheritがある場合、ここにinherit処理が付く。
            newAuto.InheritTimelines(baseAuto.ExportTimelines(new Type[] {
                typeof(AutoConditions.Move)
            }));

            return(newAuto);
        }

        return(baseAuto);
    }
Esempio n. 5
0
    public void _15_1_AutoWithSpace_Conditions_NextIs100Frame()
    {
        int frame    = 0;
        var context0 = PlayerContext.Copy(dummyContext);

        var auto0 = new Auto <PlayerContext, Dictionary <string, PlayerContext> >(
            "RunRoutine0",
            frame,
            context0,
            new Timeline <PlayerContext, Dictionary <string, PlayerContext> >(
                "RunRoutine0TL_0",
                new Tack <PlayerContext, Dictionary <string, PlayerContext> >(
                    "RunRoutine0Tack_0",
                    0,// from 0, 10frame -> 0 ~ 9
                    10,
                    AutoConditions.Act.P0
                    ),
                new Tack <PlayerContext, Dictionary <string, PlayerContext> >(
                    "RunRoutine0Tack_0",
                    100,// from 100, 100frame -> 100 ~ 199
                    100,
                    AutoConditions.Act.P0
                    )
                ),
            new Timeline <PlayerContext, Dictionary <string, PlayerContext> >(
                "RunRoutine0TL_1",
                new Tack <PlayerContext, Dictionary <string, PlayerContext> >(
                    "RunRoutine0Tack_1",
                    0,
                    5,
                    AutoConditions.Anim.DEFAULT,
                    () =>
        {
            var c      = new RoutineContexts <PlayerContext, Dictionary <string, PlayerContext> >();
            c.rContext = c._Infinity;
            return(c);
        }
                    )
                )
            );

        for (var i = 0; i <= 100; i++)
        {
            auto0.Update(frame, dummyContexts);
            frame++;
        }

        // frame is 100.
        auto0.Update(frame, dummyContexts);


        var cond0 = auto0.Conditions();

        if (ConditionGateway.Contains(cond0, AutoConditions.Act.P0))
        {
            return;
        }

        Debug.LogError("not match.");
    }
Esempio n. 6
0
    public bool IsEffective <InitialParamType, UpdateParamType> (Auto <InitialParamType, UpdateParamType> baseAuto)
    {
        var conditions = baseAuto.Conditions();

        /*
         *      comment for branchName0
         */
        if (
            ConditionGateway.Contains(conditions, AutoConditions.Act.SPAWN)
            )
        {
            return(true);
        }

        /*
         *      comment for branchName1
         */
        if (
            ConditionGateway.Contains(conditions, AutoConditions.Act.SPAWN)
            )
        {
            return(true);
        }

        // finally is ON.
        return(true);
    }
    public bool IsEffective <InitialParamType, UpdateParamType> (Auto <InitialParamType, UpdateParamType> baseAuto)
    {
        var conditions = baseAuto.Conditions();

        /*
         *      comment for branchName0
         */
        if (
            ConditionGateway.NotContains(conditions, AutoConditions.Act.SPAWN) &&
            ConditionGateway.Contains(conditions, AutoConditions.Act.DEFAULT) &&
            ConditionGateway.ContainsAll(conditions, AutoConditions.Act.DEFAULT) &&
            ConditionGateway.NotContainsAll(conditions, AutoConditions.Act.SPAWN)
            )
        {
            return(true);
        }

        /*
         *      comment for branchName1
         */
        if (
            ConditionGateway.Contains(conditions, AutoConditions.Act.SPAWN)
            )
        {
            return(true);
        }

        return(false);
    }
Esempio n. 8
0
    public void _6_2_ConditionWithConsumeOneTimelineByBreackTimeline()
    {
        int frame   = 0;
        var context = PlayerContext.Copy(dummyContext);

        var auto = new Auto <PlayerContext, Dictionary <string, PlayerContext> >(
            "6_2",
            frame,
            context,
            new Timeline <PlayerContext, Dictionary <string, PlayerContext> >(
                "6_2TL_0",
                new Tack <PlayerContext, Dictionary <string, PlayerContext> >(
                    "6_2R_0",
                    0,
                    100,
                    AutoConditions.Act.FIVEFRAME_SPAN,
                    () =>
        {
            var c      = new RoutineContexts <PlayerContext, Dictionary <string, PlayerContext> >();
            c.rContext = c._BreakTimeline;
            return(c);
        }
                    )
                ),
            new Timeline <PlayerContext, Dictionary <string, PlayerContext> >(
                "6_2TL_1",
                new Tack <PlayerContext, Dictionary <string, PlayerContext> >(
                    "6_2R_1",
                    0,
                    100,
                    AutoConditions.Move.WALK_READY,
                    () =>
        {
            var c      = new RoutineContexts <PlayerContext, Dictionary <string, PlayerContext> >();
            c.rContext = c._Infinity;
            return(c);
        }
                    )
                )
            );

        auto.Update(frame, dummyContexts);

        var conditions = auto.Conditions();

        // AutoConditions.Act.FIVEFRAME_SPAN Timeline is over.
        if (ConditionGateway.NotContains(conditions, AutoConditions.Act.FIVEFRAME_SPAN))
        {
            if (ConditionGateway.Contains(conditions, AutoConditions.Move.WALK_READY))
            {
                return;
            }
        }

        Debug.LogError("failed to break timeline");
    }
Esempio n. 9
0
    public static bool IsEffectiveChanger <InitialParamType, UpdateParamType>(Auto <InitialParamType, UpdateParamType> targetAuto)
    {
        var conditions = targetAuto.Conditions();

        if (
            ConditionGateway.Contains(conditions, AutoConditions.Act.P0)
            )
        {
            return(true);
        }

        return(false);
    }
Esempio n. 10
0
    public bool IsEffective <InitialParamType, UpdateParamType>(Auto <InitialParamType, UpdateParamType> baseAuto)
    {
        var conditions = baseAuto.Conditions();

        if (
            ConditionGateway.Contains(conditions, AutoConditions.Act.P0)
            )
        {
            return(true);
        }

        return(false);
    }
Esempio n. 11
0
    public static bool IsEffectiveChanger <InitialParamType, UpdateParamType>(Auto <InitialParamType, UpdateParamType> baseAuto)
    {
        var conditions = baseAuto.Conditions();

        /*
         *              comment for branchName1
         */
        if (
            ConditionGateway.Contains(conditions, AutoConditions.Act.P2)
            )
        {
            return(true);
        }

        return(false);
    }
Esempio n. 12
0
    TestRoute3
    <InitialParamType, UpdateParamType>
        (Auto <InitialParamType, UpdateParamType> baseAuto, int frame, InitialParamType fixedContext)
    {
        var conditions = baseAuto.Conditions();

        /*
         *      comment for branchName0
         */
        if (
            ConditionGateway.Contains(conditions, AutoConditions.Act.SPAWN)
            )
        {
            var newAuto = new
                          MoveAuto
                          <InitialParamType, UpdateParamType>(frame, fixedContext);
            newAuto.InheritTimelines(baseAuto.ExportTimelines(new Type[] {
                typeof(AutoConditions.Move)
            }));
            return(newAuto);
        }

        /*
         *      comment for branchName1
         */
        if (
            ConditionGateway.Contains(conditions, AutoConditions.Act.SPAWN)
            )
        {
            return(baseAuto);
        }

        var finallyAuto = new
                          MoveAuto
                          <InitialParamType, UpdateParamType>(frame, fixedContext);

        finallyAuto.InheritTimelines(baseAuto.ExportTimelines(new Type[] {
            typeof(AutoConditions.Move)
        }));
        return(finallyAuto);
    }
Esempio n. 13
0
    ChangerForTest42_2
    <InitialParamType, UpdateParamType>
        (Auto <InitialParamType, UpdateParamType> baseAuto, int frame, InitialParamType fixedContext)
    {
        var conditions = baseAuto.Conditions();

        /*
         *              comment for branchName0
         */
        if (
            ConditionGateway.Contains(conditions, AutoConditions.Anim.DEFAULT)
            )
        {
            var newAuto = new
                          AutoForTest42_1
                          <InitialParamType, UpdateParamType>(frame, fixedContext);
            return(newAuto);
        }

        return(baseAuto);
    }
Esempio n. 14
0
    ConditionChange0
    <InitialParamType, UpdateParamType>
        (Auto <InitialParamType, UpdateParamType> baseAuto, int frame, InitialParamType fixedContext)
    {
        var conditions = baseAuto.Conditions();

        /*
         *      comment for branchName0
         */
        if (
            ConditionGateway.Contains(conditions, AutoConditions.Act.P0)
            )
        {
            var newAuto = new
                          ConditionChangeAuto0
                          <InitialParamType, UpdateParamType>(frame, fixedContext);
            return(newAuto);
        }

        return(baseAuto);
    }
Esempio n. 15
0
    public void _6_3_ConditionShouldEmptyByBreakAllTack()
    {
        int frame   = 0;
        var context = PlayerContext.Copy(dummyContext);

        var auto = new Auto <PlayerContext, Dictionary <string, PlayerContext> >(
            "ContinuationWithBreakTack",
            frame,
            context,
            new Timeline <PlayerContext, Dictionary <string, PlayerContext> >(
                "ContinuationWithBreakTackTL",
                new Tack <PlayerContext, Dictionary <string, PlayerContext> >(
                    "ContinuationWithBreakTackRoutine",
                    0,
                    100,
                    AutoConditions.Act.FIVEFRAME_SPAN,
                    () =>
        {
            var c      = new RoutineContexts <PlayerContext, Dictionary <string, PlayerContext> >();
            c.rContext = c._BreakTack;
            return(c);
        }
                    )
                )
            );

        auto.Update(frame, dummyContexts);

        // breakTack is contained in routine. all tack & timelines are consumed but still on that tack. Auto returns condition of last frame.
        var conditions = auto.Conditions();

        if (ConditionGateway.Contains(conditions, AutoConditions.Act.FIVEFRAME_SPAN))
        {
            return;
        }

        Debug.LogError("failed to break tack.");
    }
Esempio n. 16
0
    public void _8_1_ConditionWithInheritTimelines()
    {
        int frame   = 0;
        var context = PlayerContext.Copy(dummyContext);

        var auto0 = new Auto <PlayerContext, Dictionary <string, PlayerContext> >(
            "8_1_0",
            frame,
            context,
            new Timeline <PlayerContext, Dictionary <string, PlayerContext> >(
                "8_1_0TL_0",
                new Tack <PlayerContext, Dictionary <string, PlayerContext> >(
                    "8_1_0R_0",
                    0,
                    5,
                    AutoConditions.Act.FIVEFRAME_SPAN,
                    () =>
        {
            var c      = new RoutineContexts <PlayerContext, Dictionary <string, PlayerContext> >();
            c.rContext = c._Infinity;
            return(c);
        }
                    )
                ),
            new Timeline <PlayerContext, Dictionary <string, PlayerContext> >(
                "8_1_0TL_1",
                new Tack <PlayerContext, Dictionary <string, PlayerContext> >(
                    "8_1_0R_1",
                    0,
                    5,
                    AutoConditions.Anim.DEFAULT,
                    () =>
        {
            var c      = new RoutineContexts <PlayerContext, Dictionary <string, PlayerContext> >();
            c.rContext = c._Infinity;
            return(c);
        }
                    )
                )
            );

        // rest 4 frames for tack.
        auto0.Update(frame, dummyContexts);
        frame++;

        var auto1 = new Auto <PlayerContext, Dictionary <string, PlayerContext> >(
            "8_1_1",
            frame,
            context,
            new Timeline <PlayerContext, Dictionary <string, PlayerContext> >(
                "8_1_1TL",
                new Tack <PlayerContext, Dictionary <string, PlayerContext> >(
                    "8_1_1R",
                    0,
                    5,
                    AutoConditions.Anim.SPAWN,
                    () =>
        {
            var c      = new RoutineContexts <PlayerContext, Dictionary <string, PlayerContext> >();
            c.rContext = c._Infinity;
            return(c);
        }
                    )
                )
            );

        var inheritTimelines = auto0.ExportTimelines(typeof(AutoConditions.Act), typeof(AutoConditions.Anim));

        auto1.InheritTimelines(inheritTimelines);

        var conditions = auto1.Conditions();

        if (ConditionGateway.Contains(conditions, AutoConditions.Anim.SPAWN))
        {
            if (ConditionGateway.NotContainsAll(conditions, AutoConditions.Act.FIVEFRAME_SPAN, AutoConditions.Anim.DEFAULT))
            {
                return;
            }
        }

        Debug.LogError("not match");
    }
Esempio n. 17
0
    public void _1_1_RunContainsSpecificConditionInTimelines()
    {
        int frame   = 0;
        var context = PlayerContext.Copy(dummyContext);

        var auto = new Auto <PlayerContext, Dictionary <string, PlayerContext> >(
            "spawn開始",
            frame,
            context,
            new Timeline <PlayerContext, Dictionary <string, PlayerContext> >(
                "Spawn処理",
                new Tack <PlayerContext, Dictionary <string, PlayerContext> >(
                    "spawning",
                    0,
                    AutomatineDefinitions.Tack.LIMIT_UNLIMITED,
                    AutoConditions.Act.SPAWN,
                    () =>
        {
            var c      = new RoutineContexts <PlayerContext, Dictionary <string, PlayerContext> >();
            c.rContext = c.Spawn;
            return(c);
        }
                    )
                ),
            new Timeline <PlayerContext, Dictionary <string, PlayerContext> >(
                "Spawn時のモーション",
                new Tack <PlayerContext, Dictionary <string, PlayerContext> >(
                    "まだ真面目にセットしてない、Spawn時のモーション",
                    0,
                    10,
                    AutoConditions.Anim.SPAWN,
                    () =>
        {
            var c      = new RoutineContexts <PlayerContext, Dictionary <string, PlayerContext> >();
            c.rContext = c.SpawnMotion;
            return(c);
        }
                    )
                )
            );

        var conditions = auto.Conditions();

        if (ConditionGateway.Contains(conditions, AutoConditions.Act.SPAWN))
        {
            // no problem
        }
        else
        {
            Debug.LogError("not contains act SPAWN");
        }

        if (ConditionGateway.Contains(conditions, AutoConditions.Anim.SPAWN))
        {
            // no problem
        }
        else
        {
            Debug.LogError("not contains anim SPAWN");
        }
    }