mirror of
https://github.com/ppy/osu.git
synced 2025-03-03 23:23:25 +08:00
Move Countdown
out of BeatmapInfo
This commit is contained in:
parent
7f2a6f6f5a
commit
d373f752d6
@ -88,7 +88,7 @@ namespace osu.Game.Tests.Beatmaps.Formats
|
||||
Assert.IsFalse(beatmap.SpecialStyle);
|
||||
Assert.IsFalse(beatmap.WidescreenStoryboard);
|
||||
Assert.IsFalse(beatmap.SamplesMatchPlaybackRate);
|
||||
Assert.AreEqual(CountdownType.None, beatmapInfo.Countdown);
|
||||
Assert.AreEqual(CountdownType.None, beatmap.Countdown);
|
||||
Assert.AreEqual(0, beatmapInfo.CountdownOffset);
|
||||
}
|
||||
}
|
||||
@ -957,7 +957,7 @@ namespace osu.Game.Tests.Beatmaps.Formats
|
||||
Assert.That(decoded.WidescreenStoryboard, Is.False);
|
||||
Assert.That(decoded.EpilepsyWarning, Is.False);
|
||||
Assert.That(decoded.SamplesMatchPlaybackRate, Is.False);
|
||||
Assert.That(decoded.BeatmapInfo.Countdown, Is.EqualTo(CountdownType.Normal));
|
||||
Assert.That(decoded.Countdown, Is.EqualTo(CountdownType.Normal));
|
||||
Assert.That(decoded.BeatmapInfo.CountdownOffset, Is.EqualTo(0));
|
||||
Assert.That(decoded.BeatmapInfo.Metadata.PreviewTime, Is.EqualTo(-1));
|
||||
Assert.That(decoded.BeatmapInfo.Ruleset.OnlineID, Is.EqualTo(0));
|
||||
|
@ -57,7 +57,7 @@ namespace osu.Game.Tests.Beatmaps.Formats
|
||||
Assert.IsTrue(beatmapInfo.Ruleset.OnlineID == 0);
|
||||
Assert.AreEqual(false, beatmap.LetterboxInBreaks);
|
||||
Assert.AreEqual(false, beatmap.WidescreenStoryboard);
|
||||
Assert.AreEqual(CountdownType.None, beatmapInfo.Countdown);
|
||||
Assert.AreEqual(CountdownType.None, beatmap.Countdown);
|
||||
Assert.AreEqual(0, beatmapInfo.CountdownOffset);
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,7 @@ namespace osu.Game.Tests.Visual.Editing
|
||||
{
|
||||
AddStep("turn countdown off", () => designSection.EnableCountdown.Current.Value = false);
|
||||
|
||||
AddAssert("beatmap has correct type", () => editorBeatmap.BeatmapInfo.Countdown == CountdownType.None);
|
||||
AddAssert("beatmap has correct type", () => editorBeatmap.Countdown == CountdownType.None);
|
||||
AddUntilStep("other controls hidden", () => !designSection.CountdownSettings.IsPresent);
|
||||
}
|
||||
|
||||
@ -60,12 +60,12 @@ namespace osu.Game.Tests.Visual.Editing
|
||||
{
|
||||
AddStep("turn countdown on", () => designSection.EnableCountdown.Current.Value = true);
|
||||
|
||||
AddAssert("beatmap has correct type", () => editorBeatmap.BeatmapInfo.Countdown == CountdownType.Normal);
|
||||
AddAssert("beatmap has correct type", () => editorBeatmap.Countdown == CountdownType.Normal);
|
||||
AddUntilStep("other controls shown", () => designSection.CountdownSettings.IsPresent);
|
||||
|
||||
AddStep("change countdown speed", () => designSection.CountdownSpeed.Current.Value = CountdownType.DoubleSpeed);
|
||||
|
||||
AddAssert("beatmap has correct type", () => editorBeatmap.BeatmapInfo.Countdown == CountdownType.DoubleSpeed);
|
||||
AddAssert("beatmap has correct type", () => editorBeatmap.Countdown == CountdownType.DoubleSpeed);
|
||||
AddUntilStep("other controls still shown", () => designSection.CountdownSettings.IsPresent);
|
||||
}
|
||||
|
||||
@ -74,7 +74,7 @@ namespace osu.Game.Tests.Visual.Editing
|
||||
{
|
||||
AddStep("turn countdown on", () => designSection.EnableCountdown.Current.Value = true);
|
||||
|
||||
AddAssert("beatmap has correct type", () => editorBeatmap.BeatmapInfo.Countdown == CountdownType.Normal);
|
||||
AddAssert("beatmap has correct type", () => editorBeatmap.Countdown == CountdownType.Normal);
|
||||
|
||||
checkOffsetAfter("1", 1);
|
||||
checkOffsetAfter(string.Empty, 0);
|
||||
|
@ -134,6 +134,8 @@ namespace osu.Game.Beatmaps
|
||||
|
||||
public double TimelineZoom { get; set; } = 1.0;
|
||||
|
||||
public CountdownType Countdown { get; set; } = CountdownType.Normal;
|
||||
|
||||
IBeatmap IBeatmap.Clone() => Clone();
|
||||
|
||||
public Beatmap<T> Clone() => (Beatmap<T>)MemberwiseClone();
|
||||
|
@ -148,9 +148,6 @@ namespace osu.Game.Beatmaps
|
||||
/// </summary>
|
||||
public double? EditorTimestamp { get; set; }
|
||||
|
||||
[Ignored]
|
||||
public CountdownType Countdown { get; set; } = CountdownType.Normal;
|
||||
|
||||
/// <summary>
|
||||
/// The number of beats to move the countdown backwards (compared to its default location).
|
||||
/// </summary>
|
||||
|
@ -305,7 +305,7 @@ namespace osu.Game.Beatmaps.Formats
|
||||
break;
|
||||
|
||||
case @"Countdown":
|
||||
beatmap.BeatmapInfo.Countdown = Enum.Parse<CountdownType>(pair.Value);
|
||||
beatmap.Countdown = Enum.Parse<CountdownType>(pair.Value);
|
||||
break;
|
||||
|
||||
case @"CountdownOffset":
|
||||
|
@ -81,7 +81,7 @@ namespace osu.Game.Beatmaps.Formats
|
||||
if (!string.IsNullOrEmpty(beatmap.Metadata.AudioFile)) writer.WriteLine(FormattableString.Invariant($"AudioFilename: {Path.GetFileName(beatmap.Metadata.AudioFile)}"));
|
||||
writer.WriteLine(FormattableString.Invariant($"AudioLeadIn: {beatmap.AudioLeadIn}"));
|
||||
writer.WriteLine(FormattableString.Invariant($"PreviewTime: {beatmap.Metadata.PreviewTime}"));
|
||||
writer.WriteLine(FormattableString.Invariant($"Countdown: {(int)beatmap.BeatmapInfo.Countdown}"));
|
||||
writer.WriteLine(FormattableString.Invariant($"Countdown: {(int)beatmap.Countdown}"));
|
||||
writer.WriteLine(FormattableString.Invariant(
|
||||
$"SampleSet: {toLegacySampleBank(((beatmap.ControlPointInfo as LegacyControlPointInfo)?.SamplePoints.FirstOrDefault() ?? SampleControlPoint.DEFAULT).SampleBank)}"));
|
||||
writer.WriteLine(FormattableString.Invariant($"StackLeniency: {beatmap.StackLeniency}"));
|
||||
|
@ -99,6 +99,8 @@ namespace osu.Game.Beatmaps
|
||||
|
||||
double TimelineZoom { get; internal set; }
|
||||
|
||||
CountdownType Countdown { get; internal set; }
|
||||
|
||||
/// <summary>
|
||||
/// Creates a shallow-clone of this beatmap and returns it.
|
||||
/// </summary>
|
||||
|
@ -397,6 +397,12 @@ namespace osu.Game.Rulesets.Difficulty
|
||||
set => baseBeatmap.TimelineZoom = value;
|
||||
}
|
||||
|
||||
public CountdownType Countdown
|
||||
{
|
||||
get => baseBeatmap.Countdown;
|
||||
set => baseBeatmap.Countdown = value;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -244,6 +244,12 @@ namespace osu.Game.Screens.Edit
|
||||
set => PlayableBeatmap.TimelineZoom = value;
|
||||
}
|
||||
|
||||
public CountdownType Countdown
|
||||
{
|
||||
get => PlayableBeatmap.Countdown;
|
||||
set => PlayableBeatmap.Countdown = value;
|
||||
}
|
||||
|
||||
public IBeatmap Clone() => (EditorBeatmap)MemberwiseClone();
|
||||
|
||||
private IList mutableHitObjects => (IList)PlayableBeatmap.HitObjects;
|
||||
|
@ -38,7 +38,7 @@ namespace osu.Game.Screens.Edit.Setup
|
||||
EnableCountdown = new LabelledSwitchButton
|
||||
{
|
||||
Label = EditorSetupStrings.EnableCountdown,
|
||||
Current = { Value = Beatmap.BeatmapInfo.Countdown != CountdownType.None },
|
||||
Current = { Value = Beatmap.Countdown != CountdownType.None },
|
||||
Description = EditorSetupStrings.CountdownDescription
|
||||
},
|
||||
CountdownSettings = new FillFlowContainer
|
||||
@ -52,7 +52,7 @@ namespace osu.Game.Screens.Edit.Setup
|
||||
CountdownSpeed = new LabelledEnumDropdown<CountdownType>
|
||||
{
|
||||
Label = EditorSetupStrings.CountdownSpeed,
|
||||
Current = { Value = Beatmap.BeatmapInfo.Countdown != CountdownType.None ? Beatmap.BeatmapInfo.Countdown : CountdownType.Normal },
|
||||
Current = { Value = Beatmap.Countdown != CountdownType.None ? Beatmap.Countdown : CountdownType.Normal },
|
||||
Items = Enum.GetValues<CountdownType>().Where(type => type != CountdownType.None)
|
||||
},
|
||||
CountdownOffset = new LabelledNumberBox
|
||||
@ -118,7 +118,7 @@ namespace osu.Game.Screens.Edit.Setup
|
||||
|
||||
private void updateBeatmap()
|
||||
{
|
||||
Beatmap.BeatmapInfo.Countdown = EnableCountdown.Current.Value ? CountdownSpeed.Current.Value : CountdownType.None;
|
||||
Beatmap.Countdown = EnableCountdown.Current.Value ? CountdownSpeed.Current.Value : CountdownType.None;
|
||||
Beatmap.BeatmapInfo.CountdownOffset = int.TryParse(CountdownOffset.Current.Value, NumberStyles.None, CultureInfo.InvariantCulture, out int offset) ? offset : 0;
|
||||
|
||||
Beatmap.WidescreenStoryboard = widescreenSupport.Current.Value;
|
||||
|
Loading…
Reference in New Issue
Block a user