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); }
public void BeatTimer_PauseTimer() { var beatTimer = new BeatTimer(60); beatTimer.StartTimer(); beatTimer.OnQuarterBeat(); beatTimer.OnQuarterBeat(); beatTimer.PauseTimer(); Assert.IsTrue(beatTimer.IsPaused); beatTimer.OnQuarterBeat(); beatTimer.OnQuarterBeat(); beatTimer.OnQuarterBeat(); Assert.AreEqual(2 * 250, beatTimer.Time.Milliseconds); beatTimer = new BeatTimer(60); beatTimer.StartTimer(); beatTimer.OnQuarterBeat(); beatTimer.OnQuarterBeat(); beatTimer.PauseTimer(1111, -3); beatTimer.OnQuarterBeat(); Assert.AreEqual((2 - 3) * 250 + 1111, beatTimer.Time.Milliseconds); }
/// <summary> /// Offsets relative to the last beat /// </summary> /// <param name="millisecondsOffset"></param> /// <param name="quarterBeatsOffset"></param> public void StartLoad(int millisecondsOffset = 0, int quarterBeatsOffset = 0) { var beatTimeOffset = new BeatTime(_beatTimer.Bpm, quarterBeatsOffset, millisecondsOffset); DoAfterUpdate(() => { if (!IsRunning || IsGameTimePaused) { return; } _speedrunStopwatch.Pause((int)beatTimeOffset.Milliseconds); _beatTimer.PauseTimer(millisecondsOffset, quarterBeatsOffset); }); }