public void TestSharedClockState() { AddStep("seek to 00:01:00", () => EditorClock.Seek(60_000)); AddStep("click test gameplay button", () => { var button = Editor.ChildrenOfType <TestGameplayButton>().Single(); InputManager.MoveMouseTo(button); InputManager.Click(MouseButton.Left); }); EditorPlayer editorPlayer = null; AddUntilStep("player pushed", () => (editorPlayer = Stack.CurrentScreen as EditorPlayer) != null); GameplayClockContainer gameplayClockContainer = null; AddStep("fetch gameplay clock", () => gameplayClockContainer = editorPlayer.ChildrenOfType <GameplayClockContainer>().First()); AddUntilStep("gameplay clock running", () => gameplayClockContainer.IsRunning); AddAssert("gameplay time past 00:01:00", () => gameplayClockContainer.CurrentTime >= 60_000); double timeAtPlayerExit = 0; AddWaitStep("wait some", 5); AddStep("store time before exit", () => timeAtPlayerExit = gameplayClockContainer.CurrentTime); AddStep("exit player", () => editorPlayer.Exit()); AddUntilStep("current screen is editor", () => Stack.CurrentScreen is Editor); AddAssert("time is past player exit", () => EditorClock.CurrentTime >= timeAtPlayerExit); }
public void TestGameplayTestWhenTrackRunning() { AddStep("start track", () => EditorClock.Start()); AddAssert("sample playback enabled", () => !Editor.SamplePlaybackDisabled.Value); AddStep("click test gameplay button", () => { var button = Editor.ChildrenOfType <TestGameplayButton>().Single(); InputManager.MoveMouseTo(button); InputManager.Click(MouseButton.Left); }); EditorPlayer editorPlayer = null; AddUntilStep("player pushed", () => (editorPlayer = Stack.CurrentScreen as EditorPlayer) != null); AddAssert("editor track stopped", () => !EditorClock.IsRunning); AddAssert("sample playback disabled", () => Editor.SamplePlaybackDisabled.Value); AddStep("exit player", () => editorPlayer.Exit()); AddUntilStep("current screen is editor", () => Stack.CurrentScreen is Editor); AddUntilStep("background has correct params", () => { // the test gameplay player's beatmap may be the "same" beatmap as the one being edited, *but* the `BeatmapInfo` references may differ // due to the beatmap refetch logic ran on editor suspend. // this test cares about checking the background belonging to the editor specifically, so check that using reference equality // (as `.Equals()` cannot discern between the two, as they technically share the same database GUID). var background = this.ChildrenOfType <BackgroundScreenBeatmap>().Single(b => ReferenceEquals(b.Beatmap.BeatmapInfo, EditorBeatmap.BeatmapInfo)); return(background.Colour == Color4.DarkGray && background.BlurAmount.Value == 0); }); AddStep("start track", () => EditorClock.Start()); AddAssert("sample playback re-enabled", () => !Editor.SamplePlaybackDisabled.Value); }
public void TestSaveChangesBeforeGameplayTest() { AddStep("delete all but first object", () => EditorBeatmap.RemoveRange(EditorBeatmap.HitObjects.Skip(1).ToList())); // bit of a hack to ensure this test can be ran multiple times without running into UNIQUE constraint failures AddStep("set unique difficulty name", () => EditorBeatmap.BeatmapInfo.DifficultyName = Guid.NewGuid().ToString()); AddStep("click test gameplay button", () => { var button = Editor.ChildrenOfType <TestGameplayButton>().Single(); InputManager.MoveMouseTo(button); InputManager.Click(MouseButton.Left); }); AddUntilStep("save prompt shown", () => DialogOverlay.CurrentDialog is SaveBeforeGameplayTestDialog); AddStep("save changes", () => DialogOverlay.CurrentDialog.PerformOkAction()); EditorPlayer editorPlayer = null; AddUntilStep("player pushed", () => (editorPlayer = Stack.CurrentScreen as EditorPlayer) != null); AddAssert("beatmap has 1 object", () => editorPlayer.Beatmap.Value.Beatmap.HitObjects.Count == 1); AddUntilStep("wait for return to editor", () => Stack.CurrentScreen is Editor); AddAssert("track stopped", () => !Beatmap.Value.Track.IsRunning); }
public void TestGameplayTestWhenTrackRunning() { AddStep("start track", () => EditorClock.Start()); AddAssert("sample playback enabled", () => !Editor.SamplePlaybackDisabled.Value); AddStep("click test gameplay button", () => { var button = Editor.ChildrenOfType <TestGameplayButton>().Single(); InputManager.MoveMouseTo(button); InputManager.Click(MouseButton.Left); }); EditorPlayer editorPlayer = null; AddUntilStep("player pushed", () => (editorPlayer = Stack.CurrentScreen as EditorPlayer) != null); AddAssert("editor track stopped", () => !EditorClock.IsRunning); AddAssert("sample playback disabled", () => Editor.SamplePlaybackDisabled.Value); AddStep("exit player", () => editorPlayer.Exit()); AddUntilStep("current screen is editor", () => Stack.CurrentScreen is Editor); AddUntilStep("background has correct params", () => { var background = this.ChildrenOfType <BackgroundScreenBeatmap>().Single(); return(background.Colour == Color4.DarkGray && background.BlurAmount.Value == 0); }); AddStep("start track", () => EditorClock.Start()); AddAssert("sample playback re-enabled", () => !Editor.SamplePlaybackDisabled.Value); }
public void TestBasicGameplayTest() { AddStep("click test gameplay button", () => { var button = Editor.ChildrenOfType <TestGameplayButton>().Single(); InputManager.MoveMouseTo(button); InputManager.Click(MouseButton.Left); }); EditorPlayer editorPlayer = null; AddUntilStep("player pushed", () => (editorPlayer = Stack.CurrentScreen as EditorPlayer) != null); AddStep("exit player", () => editorPlayer.Exit()); AddUntilStep("current screen is editor", () => Stack.CurrentScreen is Editor); }
public override void Update() { base.Update(); if (_mouseFollow != null) { Transform2 transform = _mouseFollow.GetTransform(); transform.Position = Controller.GetMouseWorld(); _mouseFollow.SetTransform(transform); } if (_input.KeyPress(Key.Delete) || _input.KeyPress(Key.Escape) || _input.MousePress(MouseButton.Right)) { Controller.SetTool(null); } else if (_input.MousePress(MouseButton.Left)) { EditorPlayer editorActor = new EditorPlayer(Controller.Level); Transform2.SetPosition(editorActor, Controller.GetMouseWorld()); Controller.SetTool(null); } }
public void TestBasicGameplayTest() { AddStep("click test gameplay button", () => { var button = Editor.ChildrenOfType <TestGameplayButton>().Single(); InputManager.MoveMouseTo(button); InputManager.Click(MouseButton.Left); }); EditorPlayer editorPlayer = null; AddUntilStep("player pushed", () => (editorPlayer = Stack.CurrentScreen as EditorPlayer) != null); AddStep("exit player", () => editorPlayer.Exit()); AddUntilStep("current screen is editor", () => Stack.CurrentScreen is Editor); AddUntilStep("background has correct params", () => { var background = this.ChildrenOfType <BackgroundScreenBeatmap>().Single(); return(background.Colour == Color4.DarkGray && background.BlurAmount.Value == 0); }); }