2019-01-24 08:43:03 +00:00
|
|
|
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
|
|
|
// See the LICENCE file in the repository root for full licence text.
|
2018-04-13 09:19:50 +00:00
|
|
|
|
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
using osu.Framework.Allocation;
|
|
|
|
|
using osu.Framework.Graphics;
|
2019-09-09 03:48:34 +00:00
|
|
|
|
using osu.Framework.Testing.Input;
|
2018-04-13 09:19:50 +00:00
|
|
|
|
using osu.Game.Rulesets.Osu.UI.Cursor;
|
2019-09-09 03:48:34 +00:00
|
|
|
|
using osuTK;
|
2018-04-13 09:19:50 +00:00
|
|
|
|
|
|
|
|
|
namespace osu.Game.Rulesets.Osu.Tests
|
|
|
|
|
{
|
|
|
|
|
[TestFixture]
|
2019-08-30 04:58:17 +00:00
|
|
|
|
public class TestSceneGameplayCursor : SkinnableTestScene
|
2018-04-13 09:19:50 +00:00
|
|
|
|
{
|
2019-09-09 08:03:14 +00:00
|
|
|
|
public override IReadOnlyList<Type> RequiredTypes => new[]
|
|
|
|
|
{
|
|
|
|
|
typeof(OsuCursorContainer),
|
|
|
|
|
typeof(CursorTrail)
|
|
|
|
|
};
|
2018-04-13 09:19:50 +00:00
|
|
|
|
|
|
|
|
|
[BackgroundDependencyLoader]
|
|
|
|
|
private void load()
|
|
|
|
|
{
|
2019-09-09 03:48:34 +00:00
|
|
|
|
SetContents(() => new MovingCursorInputManager
|
2019-08-30 04:58:17 +00:00
|
|
|
|
{
|
2019-09-09 04:01:40 +00:00
|
|
|
|
Child = new ClickingCursorContainer
|
2019-09-09 03:48:34 +00:00
|
|
|
|
{
|
|
|
|
|
RelativeSizeAxes = Axes.Both,
|
|
|
|
|
Masking = true,
|
|
|
|
|
}
|
2019-08-30 04:58:17 +00:00
|
|
|
|
});
|
2018-04-13 09:19:50 +00:00
|
|
|
|
}
|
2019-09-09 03:48:34 +00:00
|
|
|
|
|
2019-09-09 04:01:40 +00:00
|
|
|
|
private class ClickingCursorContainer : OsuCursorContainer
|
|
|
|
|
{
|
|
|
|
|
protected override void Update()
|
|
|
|
|
{
|
|
|
|
|
base.Update();
|
|
|
|
|
|
|
|
|
|
double currentTime = Time.Current;
|
|
|
|
|
|
|
|
|
|
if (((int)(currentTime / 1000)) % 2 == 0)
|
|
|
|
|
OnPressed(OsuAction.LeftButton);
|
|
|
|
|
else
|
|
|
|
|
OnReleased(OsuAction.LeftButton);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2019-09-09 03:48:34 +00:00
|
|
|
|
private class MovingCursorInputManager : ManualInputManager
|
|
|
|
|
{
|
|
|
|
|
public MovingCursorInputManager()
|
|
|
|
|
{
|
|
|
|
|
UseParentInput = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void Update()
|
|
|
|
|
{
|
|
|
|
|
base.Update();
|
|
|
|
|
|
|
|
|
|
const double spin_duration = 5000;
|
|
|
|
|
double currentTime = Time.Current;
|
|
|
|
|
|
|
|
|
|
double angle = (currentTime % spin_duration) / spin_duration * 2 * Math.PI;
|
|
|
|
|
Vector2 rPos = new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle));
|
|
|
|
|
|
|
|
|
|
MoveMouseTo(ToScreenSpace(DrawSize / 2 + DrawSize / 3 * rPos));
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-04-13 09:19:50 +00:00
|
|
|
|
}
|
|
|
|
|
}
|