예제 #1
0
        public static IEnumerator TestPracticeSelector1()
        {
            bool cb = false;

            //Running Static Analysis 1
            new InstanceRequest(() => cb = true, FixedDfc(FixedDifficulty.Lunatic),
                                boss: new BossPracticeRequest(AllPBosses[0],
                                                              new SMAnalysis.Phase(null !, PhaseType.NONSPELL, 3, new LocalizedString("_")))).Run();
            IsFalse(cb);
            yield return(WaitForLoad());

            for (int ii = 0; ii < 10; ++ii)
            {
                yield return(null);
            }
            var m = BehaviorEntity.GetExecForID("mokou");

            AreEqual(0, PublicDataHoisting.GetF("v1", 1));
            AreEqual(0, PublicDataHoisting.GetF("v1", 2));
            //Go to third phase and then callback
            AreEqual(7, PublicDataHoisting.GetF("v1", 3));
            AreEqual(0, PublicDataHoisting.GetF("v1", 4));
            AreEqual(0, m.NumRunningSMs);
            IsFalse(cb);
            //2 second delay
            for (int ii = 0; ii < ETime.ENGINEFPS * InstanceRequest.WaitBeforeReturn; ++ii)
            {
                yield return(null);
            }
            IsTrue(cb);
            AreEqual("TestPractice", SceneManager.GetActiveScene().name);
        }
예제 #2
0
        public static void TestHoistClear()
        {
            var v     = new Movement("nroffset ss0 px rand -200 200".Into <VTP>());
            var bpi11 = new ParametricInfo(Vector2.zero, 0, 24);

            v.UpdateDeltaAssignAcc(ref bpi11, out var d11, 0.1f);
            var bpi2 = new ParametricInfo(Vector2.zero, 0, 2443455);

            v.UpdateDeltaAssignAcc(ref bpi2, out var d2, 0.1f);
            var bpi12 = new ParametricInfo(Vector2.zero, 0, 24, ctx: bpi11.ctx);

            v.UpdateDeltaAssignAcc(ref bpi12, out var d12, 0.1f);
            //Due to ss0 this is the same
            AreEqual(d11, d12);
            AreNotEqual(d11, d2);
            PublicDataHoisting.ClearValues();
            var bpi31 = new ParametricInfo(Vector2.zero, 0, 24);

            v.UpdateDeltaAssignAcc(ref bpi31, out var d31, 0.1f);
            var bpi4 = new ParametricInfo(Vector2.zero, 0, 2443455);

            v.UpdateDeltaAssignAcc(ref bpi4, out var d4, 0.1f);
            var bpi32 = new ParametricInfo(Vector2.zero, 0, 24, ctx: bpi31.ctx);

            v.UpdateDeltaAssignAcc(ref bpi32, out var d32, 0.1f);
            AreEqual(d31, d32);
            AreNotEqual(d31, d4);
            //Due to hoist clear, ss0 must resample
            AreNotEqual(d11, d31);
            AreNotEqual(d2, d4);
        }
예제 #3
0
        public static void LocalReset()
        {
            //AudioTrackService.ClearAllAudio();
            SFXService.ClearConstructed();
            Events.Event0.DestroyAll();
            ETime.Slowdown.RevokeAll(MultiOp.Priority.CLEAR_SCENE);
            ETime.Timer.DestroyAll();
            BehaviorEntity.DestroyAllSummons();
            PublicDataHoisting.DestroyAll();
            FiringCtx.ClearNames();
            ReflWrap.ClearWrappers();
            StateMachineManager.ClearCachedSMs();
            BulletManager.ClearPoolControls();
            BulletManager.ClearEmpty();
            BulletManager.ClearAllBullets();
            BulletManager.DestroyCopiedPools();
            InstanceData.CampaignDataUpdated.Proc();
#if UNITY_EDITOR || ALLOW_RELOAD
            Events.LocalReset.Proc();
#endif
            //Ordered last so cancellations from HardCancel will occur under old data
            Instance = new InstanceData(InstanceMode.NULL);
            Debug.Log($"Reloading level: {Difficulty.Describe()} is the current difficulty");
            UIManager.UpdateTags();
        }
예제 #4
0
 public static void ClearForScene()
 {
     AudioTrackService.ClearAllAudio(false);
     SFXService.ClearConstructed();
     BulletManager.ClearPoolControls();
     Events.Event0.DestroyAll();
     ETime.Slowdown.RevokeAll(MultiOp.Priority.CLEAR_SCENE);
     ETime.Timer.DestroyAll();
     BulletManager.OrphanAll();
     PublicDataHoisting.DestroyAll();
     FiringCtx.ClearNames();
     //SMs may have links to data hoisting, so we destroy both of them on phase end.
     ReflWrap.ClearWrappers();
     StateMachineManager.ClearCachedSMs();
     BehaviorEntity.ClearPointers();
     AyaPhoto.ClearTextures();
 }
예제 #5
0
 public static IEnumerator TestStaticAnalysis1_1()
 {
     TestHarness.OnSOF(() => {
         var m = BehaviorEntity.GetExecForID("mokou");
         TestHarness.RunBehaviorScript("Static Analysis 1", "mokou");
         //Case 1: setup goes to phase 2, which goes to 3 and then 4.
         TestHarness.Check(2, () => {
             AreEqual(0, PublicDataHoisting.GetF("v1", 1));
             AreEqual(6, PublicDataHoisting.GetF("v1", 2));
             AreEqual(7, PublicDataHoisting.GetF("v1", 3));
             AreEqual(8, PublicDataHoisting.GetF("v1", 4));
             AreEqual(0, m.NumRunningSMs);
         });
     });
     while (TestHarness.Running)
     {
         yield return(null);
     }
 }
예제 #6
0
 public static IEnumerator TestStaticAnalysis1_3()
 {
     TestHarness.OnSOF(() => {
         var m = BehaviorEntity.GetExecForID("mokou");
         m.phaseController.Override(3, null, false);
         TestHarness.RunBehaviorScript("Static Analysis 1", "mokou");
         //Case 3: setup is overriden, phase 3 is run; without a callback, goes to phase 4.
         TestHarness.Check(2, () => {
             AreEqual(0, PublicDataHoisting.GetF("v1", 1));
             AreEqual(0, PublicDataHoisting.GetF("v1", 2));
             AreEqual(7, PublicDataHoisting.GetF("v1", 3));
             AreEqual(8, PublicDataHoisting.GetF("v1", 4));
             AreEqual(0, m.NumRunningSMs);
         });
     });
     while (TestHarness.Running)
     {
         yield return(null);
     }
 }
예제 #7
0
 public static IEnumerator TestStaticAnalysis1_2()
 {
     TestHarness.OnSOF(() => {
         var m   = BehaviorEntity.GetExecForID("mokou");
         bool cb = false;
         m.phaseController.Override(3, () => cb = true, false);
         TestHarness.RunBehaviorScript("Static Analysis 1", "mokou");
         //Case 2: setup is overriden, phase 3 is run.
         TestHarness.Check(0, () => IsTrue(!cb));
         TestHarness.Check(2, () => {
             AreEqual(0, PublicDataHoisting.GetF("v1", 1));
             AreEqual(0, PublicDataHoisting.GetF("v1", 2));
             AreEqual(7, PublicDataHoisting.GetF("v1", 3));
             AreEqual(0, PublicDataHoisting.GetF("v1", 4));
             IsTrue(cb);
             AreEqual(0, m.NumRunningSMs);
         });
     });
     while (TestHarness.Running)
     {
         yield return(null);
     }
 }