diff --git a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmap.cs b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmap.cs
index 69c85fec87..0a248658a8 100644
--- a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmap.cs
+++ b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmap.cs
@@ -14,7 +14,7 @@ namespace osu.Game.Rulesets.Mania.Beatmaps
///
/// The definitions for each stage in a .
///
- public readonly List Stages;
+ public List Stages = new List();
///
/// Total number of columns represented by all stages in this .
@@ -24,10 +24,10 @@ namespace osu.Game.Rulesets.Mania.Beatmaps
///
/// Creates a new .
///
- /// The initial stages.
- public ManiaBeatmap(List stages)
+ /// The initial stages.
+ public ManiaBeatmap(StageDefinition defaultStage)
{
- Stages = stages;
+ Stages.Add(defaultStage);
}
}
}
diff --git a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs
index e5a444533d..557ce5eb1b 100644
--- a/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs
+++ b/osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs
@@ -26,7 +26,6 @@ namespace osu.Game.Rulesets.Mania.Beatmaps
protected override IEnumerable ValidConversionTypes { get; } = new[] { typeof(IHasXPosition) };
public int TargetColumns;
- public List StageDefinitions;
public readonly bool IsForCurrentRuleset;
private Pattern lastPattern = new Pattern();
@@ -67,16 +66,7 @@ namespace osu.Game.Rulesets.Mania.Beatmaps
return base.ConvertBeatmap(original);
}
- protected override Beatmap CreateBeatmap()
- {
- if (StageDefinitions == null)
- StageDefinitions = new List
- {
- new StageDefinition { Columns = TargetColumns }
- };
-
- return beatmap = new ManiaBeatmap(StageDefinitions);
- }
+ protected override Beatmap CreateBeatmap() => beatmap = new ManiaBeatmap(new StageDefinition { Columns = TargetColumns });
protected override IEnumerable ConvertHitObject(HitObject original, Beatmap beatmap)
{
diff --git a/osu.Game.Rulesets.Mania/Mods/ManiaModKeyCoop.cs b/osu.Game.Rulesets.Mania/Mods/ManiaModKeyCoop.cs
index 01fe9863e9..5fbf59e5e6 100644
--- a/osu.Game.Rulesets.Mania/Mods/ManiaModKeyCoop.cs
+++ b/osu.Game.Rulesets.Mania/Mods/ManiaModKeyCoop.cs
@@ -1,15 +1,18 @@
// Copyright (c) 2007-2018 ppy Pty Ltd .
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
+using System;
using System.Collections.Generic;
using osu.Game.Beatmaps;
using osu.Game.Rulesets.Mania.Beatmaps;
using osu.Game.Rulesets.Mania.Objects;
+using osu.Game.Rulesets.Mania.UI;
using osu.Game.Rulesets.Mods;
+using osu.Game.Rulesets.UI;
namespace osu.Game.Rulesets.Mania.Mods
{
- public class ManiaModKeyCoop : Mod, IApplicableToBeatmapConverter
+ public class ManiaModKeyCoop : Mod, IApplicableToBeatmapConverter, IApplicableToRulesetContainer
{
public override string Name => "KeyCoop";
public override string ShortenedName => "2P";
@@ -25,16 +28,21 @@ namespace osu.Game.Rulesets.Mania.Mods
if (mbc.IsForCurrentRuleset)
return;
- int originTargetColumns = mbc.TargetColumns;
+ mbc.TargetColumns *= 2;
+ }
- var newStages = new List
+ public void ApplyToRulesetContainer(RulesetContainer rulesetContainer)
+ {
+ var mrc = (ManiaRulesetContainer)rulesetContainer;
+
+ var newDefinitions = new List();
+ foreach (var existing in mrc.Beatmap.Stages)
{
- new StageDefinition { Columns = originTargetColumns },
- new StageDefinition { Columns = originTargetColumns },
- };
+ newDefinitions.Add(new StageDefinition { Columns = (int)Math.Ceiling(existing.Columns / 2f) });
+ newDefinitions.Add(new StageDefinition { Columns = (int)Math.Floor(existing.Columns / 2f) });
+ }
- mbc.StageDefinitions = newStages;
- mbc.TargetColumns = originTargetColumns * 2;
+ mrc.Beatmap.Stages = newDefinitions;
}
}
}