Added OsuModDeflate class and adjusted OsuRuleset.cs

This commit is contained in:
MaxOhn 2018-09-05 22:54:07 +02:00
parent 9b753bb429
commit b72d44b1e8
2 changed files with 49 additions and 0 deletions

View File

@ -0,0 +1,44 @@
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using osu.Framework.Graphics;
using osu.Game.Graphics;
using osu.Game.Rulesets.Mods;
using osu.Game.Rulesets.Objects.Drawables;
using osu.Game.Rulesets.Osu.Objects.Drawables;
using System.Collections.Generic;
namespace osu.Game.Rulesets.Osu.Mods
{
public class OsuModDeflate : Mod, IApplicableToDrawableHitObjects
{
public override string Name => "Deflate";
public override string ShortenedName => "DF";
public override FontAwesome Icon => FontAwesome.fa_compress;
public override ModType Type => ModType.Fun;
public override string Description => "Become one with the approach circle...";
public override double ScoreMultiplier => 1;
public void ApplyToDrawableHitObjects(IEnumerable<DrawableHitObject> drawables)
{
foreach (var drawable in drawables)
drawable.ApplyCustomUpdateState += drawableOnApplyCustomUpdateState;
}
protected void drawableOnApplyCustomUpdateState(DrawableHitObject drawable, ArmedState state)
{
if (!(drawable is DrawableHitCircle d))
return;
d.ApproachCircle.Hide();
var h = d.HitObject;
using (d.BeginAbsoluteSequence(h.StartTime - h.TimePreempt))
{
var origScale = d.Scale;
d.ScaleTo(1.1f);
d.ScaleTo(origScale, h.TimePreempt);
}
}
}
}

View File

@ -117,6 +117,11 @@ public override IEnumerable<Mod> GetModsFor(ModType type)
new OsuModRelax(),
new OsuModAutopilot(),
};
case ModType.Fun:
return new Mod[]
{
new OsuModDeflate(),
};
default:
return new Mod[] { };
}