1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-09 05:37:25 +08:00
osu-lazer/osu.Desktop.VisualTests/Tests/TestCaseManiaPlayfield.cs

99 lines
3.7 KiB
C#
Raw Normal View History

2017-05-01 16:00:41 +08:00
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
2017-05-03 11:58:46 +08:00
using osu.Framework.Input;
using osu.Framework.Testing;
using osu.Framework.Graphics;
2017-05-03 11:37:47 +08:00
using osu.Game.Rulesets.Mania.UI;
using System;
using System.Collections.Generic;
using OpenTK;
2017-05-16 17:27:33 +08:00
using osu.Game.Rulesets.Mania.Objects.Drawables;
using osu.Game.Rulesets.Mania.Objects;
using osu.Game.Rulesets.Mania.Timing;
2017-05-01 16:00:41 +08:00
namespace osu.Desktop.VisualTests.Tests
{
internal class TestCaseManiaPlayfield : TestCase
{
public override string Description => @"Mania playfield";
protected override double TimePerAction => 200;
2017-05-01 16:00:41 +08:00
public override void Reset()
{
base.Reset();
Action<int, SpecialColumnPosition> createPlayfield = (cols, pos) =>
{
Clear();
Add(new ManiaPlayfield(cols, new List<TimingChange>())
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
SpecialColumnPosition = pos,
Scale = new Vector2(1, -1)
});
};
2017-05-16 17:27:33 +08:00
Action<int, SpecialColumnPosition> createPlayfieldWithNotes = (cols, pos) =>
2017-05-01 16:00:41 +08:00
{
2017-05-16 17:27:33 +08:00
Clear();
2017-05-16 17:27:33 +08:00
ManiaPlayfield playField;
2017-05-23 17:06:31 +08:00
Add(playField = new ManiaPlayfield(cols, new List<TimingChange> { new TimingChange { BeatLength = 200 } })
2017-05-16 17:27:33 +08:00
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
SpecialColumnPosition = pos,
Scale = new Vector2(1, -1)
});
for (int i = 0; i < cols; i++)
{
playField.Add(new DrawableNote(new Note
{
StartTime = Time.Current + 1000,
Column = i
}));
}
};
2017-05-16 17:27:33 +08:00
AddStep("1 column", () => createPlayfield(1, SpecialColumnPosition.Normal));
AddStep("4 columns", () => createPlayfield(4, SpecialColumnPosition.Normal));
AddStep("Left special style", () => createPlayfield(4, SpecialColumnPosition.Left));
AddStep("Right special style", () => createPlayfield(4, SpecialColumnPosition.Right));
AddStep("5 columns", () => createPlayfield(5, SpecialColumnPosition.Normal));
AddStep("8 columns", () => createPlayfield(8, SpecialColumnPosition.Normal));
AddStep("Left special style", () => createPlayfield(8, SpecialColumnPosition.Left));
AddStep("Right special style", () => createPlayfield(8, SpecialColumnPosition.Right));
2017-05-16 17:27:33 +08:00
AddStep("Normal special style", () => createPlayfield(4, SpecialColumnPosition.Normal));
2017-05-16 17:27:33 +08:00
AddStep("Notes", () => createPlayfieldWithNotes(4, SpecialColumnPosition.Normal));
AddWaitStep(10);
AddStep("Left special style", () => createPlayfieldWithNotes(4, SpecialColumnPosition.Left));
AddWaitStep(10);
AddStep("Right special style", () => createPlayfieldWithNotes(4, SpecialColumnPosition.Right));
AddWaitStep(10);
}
private void triggerKeyDown(Column column)
{
column.TriggerKeyDown(new InputState(), new KeyDownEventArgs
{
Key = column.Key,
Repeat = false
2017-05-01 16:00:41 +08:00
});
}
private void triggerKeyUp(Column column)
{
column.TriggerKeyUp(new InputState(), new KeyUpEventArgs
{
Key = column.Key
});
}
}
2017-05-01 16:00:41 +08:00
}