1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-14 05:32:54 +08:00
osu-lazer/osu.Game.Rulesets.Osu/Mods/OsuModFlashlight.cs

53 lines
1.7 KiB
C#
Raw Normal View History

2018-04-13 17:19:50 +08:00
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
2018-11-07 07:48:54 +08:00
using osu.Framework.Graphics;
using osu.Framework.Input;
using osu.Framework.Input.Events;
2018-04-13 17:19:50 +08:00
using osu.Game.Rulesets.Mods;
2018-11-07 07:48:54 +08:00
using osu.Game.Rulesets.Osu.Objects;
2018-11-20 15:51:59 +08:00
using osuTK;
2018-04-13 17:19:50 +08:00
namespace osu.Game.Rulesets.Osu.Mods
{
public class OsuModFlashlight : ModFlashlight<OsuHitObject>
2018-04-13 17:19:50 +08:00
{
public override double ScoreMultiplier => 1.12;
2018-11-07 07:48:54 +08:00
private const float default_flashlight_size = 180;
2018-11-07 07:48:54 +08:00
public override Flashlight CreateFlashlight() => new OsuFlashlight();
2018-11-07 07:48:54 +08:00
private class OsuFlashlight : Flashlight, IRequireHighFrequencyMousePosition
{
public OsuFlashlight()
2018-11-07 07:48:54 +08:00
{
FlashlightSize = new Vector2(0, getSizeFor(0));
2018-11-07 07:48:54 +08:00
}
protected override bool OnMouseMove(MouseMoveEvent e)
{
FlashlightPosition = e.MousePosition;
2018-11-07 07:48:54 +08:00
return base.OnMouseMove(e);
}
private float getSizeFor(int combo)
{
if (combo > 200)
return default_flashlight_size * 0.8f;
else if (combo > 100)
return default_flashlight_size * 0.9f;
else
return default_flashlight_size;
}
2018-11-07 07:48:54 +08:00
protected override void OnComboChange(int newCombo)
{
this.TransformTo(nameof(FlashlightSize), new Vector2(0, getSizeFor(newCombo)), FLASHLIGHT_FADE_DURATION);
2018-11-07 07:48:54 +08:00
}
protected override string FragmentShader => "CircularFlashlight";
2018-11-07 07:48:54 +08:00
}
2018-04-13 17:19:50 +08:00
}
}