Пример #1
0
 public static void OnEnter(ref int frame, Resettable obj)
 {
 #if !AL_THREAD_SAFE
     RoR.OnResume(ref frame, obj.Reset);
     ReCon.instance.Add(obj);
 #endif
 }
Пример #2
0
 public Gate? this[int duration] {
     get{
         RoR.OnResume(ref frame, Reset);
         return((++elapsed > duration) ? done(log && $"[0]")
            : cont(log && $"[{duration-elapsed}]"));
     }
 }
Пример #3
0
    [Test] public void Exit_match_frame()
    {
        int φ = 10;

        RoR.Enter("Nemo", 8, leniency: 1);
        Assert.Throws <InvOp>(() => RoR.Exit("Nemo", ref φ));
    }
Пример #4
0
    [Test] public void Exit_match_context()
    {
        int φ = 10;

        RoR.Enter("Nemo", φ);
        Assert.Throws <InvOp>(() => RoR.Exit("Foo", ref φ));
    }
Пример #5
0
    // disabled mode -----------------------------------------------

    [Test] public void Enter_disabled()
    {
        RoR.enabled = false;
        RoR.Enter(this, 0, leniency: 1);
        o(RoR.owner, null);
        o(RoR.frame, 0);
    }
Пример #6
0
 public Gate? this[float duration] {
     get{
         RoR.OnResume(ref frame, Reset);
         return(((elapsed += UnityEngine.Time.deltaTime) >= duration)
            ? done(log && $"[0.0]")
                    : cont(log && $"[{duration-elapsed:0.0}]"));
     }
 }
Пример #7
0
    [Test] public void Exit()
    {
        int φ = 10;

        RoR.Enter(this, φ, leniency: 1);
        RoR.Exit(this, ref φ);
        o(RoR.owner, null);
        o(φ, 11);
    }
Пример #8
0
    [Test] public void Exit_disabled()
    {
        int φ = 10;

        RoR.enabled = false;
        RoR.Exit(this, ref φ);
        o(RoR.owner, null);
        o(RoR.frame, 0);
    }
Пример #9
0
    [Test] public void OnResume_disabled()
    {
        RoR.enabled = false;
        int frame = 12;

        RoR.OnResume(ref frame, null);
        o(RoR.owner, null);
        o(RoR.frame, 0);
        o(frame, 12);
    }
Пример #10
0
    [Test] public void OnResume_reset()
    {
        int  φ    = 15;
        int  γ    = 10;
        bool flag = true;

        RoR.Enter("Nemo", φ);
        RoR.OnResume(ref γ,
                     () => { flag = false; return(status.@void()); });
        o(flag, false);
    }
Пример #11
0
    [Test] public void OnResume_continue()
    {
        int  φ    = 10;
        int  γ    = 9;
        bool flag = true;

        RoR.Enter("Nemo", φ, leniency: 1);
        RoR.OnResume(ref γ,
                     () => { flag = false; return(action.done()); });
        o(flag, true);
    }
Пример #12
0
    [Test] public void OnResume_continue()
    {
        int  φ    = 10;
        int  γ    = 9;
        bool flag = true;

        RoR.Enter("Nemo", φ);
        RoR.OnResume(ref γ,
                     () => { flag = false; return(status.@void()); });
        o(flag, true);
    }
Пример #13
0
    [Test] public void OnResume_reset([Values(0, 1)] int offset,
                                      [Range(1, 5)] int leniency)
    {
        int  φ    = 15;
        int  γ    = φ - (leniency + offset);
        bool flag = true;

        RoR.Enter("Nemo", φ, leniency);
        RoR.OnResume(ref γ,
                     () => { flag = false; return(action.done()); });
        o(flag, offset == 0 ? true : false);
    }
Пример #14
0
        public status Step()
        {
            status s = fail();

        #if !AL_OPTIMIZE
            status.log = enableLogging;
        #endif
            if (command != DoSuspend && command != DoPause)
            {
                if (root)
                {
                    RoR.Enter(this, frame, leniency);
                    try{
                        s = root;
                    }catch (Exception) {
                        RoR.Exit(this, ref frame);
                        throw;
                    }
                    RoR.Exit(this, ref frame);
                }
                else
                {
                    throw new Exception($"Rootless: {gameObject.name}");
                }
                if (!s.running)
                {
                    enabled = shouldReenable;
                }
            #if !AL_OPTIMIZE
                if (enableLogging)
                {
                    Log(s);
                }
            #endif
            }
            if (command != null)
            {
                command(); command = null;
            }
            return(s);
        }
Пример #15
0
    // enabled mode ------------------------------------------------

    [Test] public void Enter()
    {
        RoR.Enter(this, 10, leniency: 1);
        o(RoR.owner, this);
        o(RoR.frame, 10);
    }
Пример #16
0
 public Gate?this[bool cond] {
     get{
         RoR.OnResume(ref frame, Reset);
         return((passing |= cond) ? done() : fail());
     }
 }
Пример #17
0
 public Gate?this[bool @in, bool @out] {
     get{
         RoR.OnResume(ref frame, Reset);
         return((passing = passing ? !@out : @in) ? done() : fail());
     }
 }
Пример #18
0
 [Test] public void Enter_no_reassign()
 {
     RoR.owner = "Nemo";
     Assert.Throws <InvOp>(() => RoR.Enter("Foo", 0, leniency: 1));
 }
Пример #19
0
 [Test] public void Enter_reject_null_context()
 => Assert.Throws <InvOp>(() => RoR.Enter(null, 0, leniency: 1));
Пример #20
0
    [Test] public void OnResume_reject_null_context()
    {
        int γ = 10;

        Assert.Throws <InvOp>(() => RoR.OnResume(ref γ, null));
    }