예제 #1
0
        public void BeatTimer_ResumeTimer()
        {
            var beatTimer = new BeatTimer(60);

            beatTimer.StartTimer();
            beatTimer.OnQuarterBeat();
            beatTimer.OnQuarterBeat();
            beatTimer.PauseTimer();
            beatTimer.OnQuarterBeat();
            beatTimer.OnQuarterBeat();
            beatTimer.ResumeTimer();
            beatTimer.OnQuarterBeat();

            Assert.AreEqual(3 * 250, beatTimer.Time.Milliseconds);


            beatTimer = new BeatTimer(60);

            beatTimer.StartTimer();
            beatTimer.OnQuarterBeat();
            beatTimer.OnQuarterBeat();
            beatTimer.PauseTimer(1111, -3);
            beatTimer.OnQuarterBeat();
            beatTimer.ResumeTimer(42, 8);

            Assert.AreEqual((2 - 3 - 8) * 250 + 1111 - 42, beatTimer.Time.Milliseconds);
        }
예제 #2
0
        public void EndLoad(int millisecondsOffset = 0, int quarterBeatsOffset = 0)
        {
            var beatTimeOffset = new BeatTime(_beatTimer.Bpm, quarterBeatsOffset, millisecondsOffset);

            DoAfterUpdate(() =>
            {
                if (!IsRunning || !IsGameTimePaused)
                {
                    return;
                }

                _speedrunStopwatch.Resume((int)beatTimeOffset.Milliseconds);
                _beatTimer.ResumeTimer(millisecondsOffset, quarterBeatsOffset);
            });
        }