2017-02-07 12:59:30 +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
2016-09-02 17:27:38 +08:00
2017-03-17 12:38:17 +08:00
using osu.Game.Beatmaps.Timing ;
using osu.Game.Database ;
2016-11-14 17:54:24 +08:00
using osu.Game.Modes.Objects ;
namespace osu.Game.Modes.Taiko.Objects
2016-09-02 17:27:38 +08:00
{
2017-03-23 10:21:45 +08:00
public abstract class TaikoHitObject : HitObject
2016-09-02 17:27:38 +08:00
{
2017-03-17 12:38:17 +08:00
/// <summary>
/// HitCircle radius.
/// </summary>
2017-03-28 16:14:06 +08:00
public const float CIRCLE_RADIUS = 42f ;
2016-09-02 17:27:38 +08:00
2017-04-03 13:10:20 +08:00
/// <summary>
2017-04-05 15:51:21 +08:00
/// The time taken from the initial (off-screen) spawn position to the centre of the hit target for a <see cref="ControlPoint.BeatLength"/> of 1000>ms.
2017-04-03 13:10:20 +08:00
/// </summary>
2017-04-05 15:51:21 +08:00
private const double scroll_time = 6000 ;
2017-04-03 13:10:20 +08:00
2017-04-03 16:19:46 +08:00
/// <summary>
2017-04-05 15:51:21 +08:00
/// Our adjusted <see cref="scroll_time"/> taking into consideration local <see cref="ControlPoint.BeatLength"/> and other speed multipliers.
2017-04-03 16:19:46 +08:00
/// </summary>
2017-04-05 10:48:19 +08:00
public double ScrollTime ;
2017-03-17 12:38:17 +08:00
2017-03-23 18:14:21 +08:00
/// <summary>
2017-03-28 09:02:41 +08:00
/// Whether this HitObject is a "strong" type.
/// Strong hit objects give more points for hitting the hit object with both keys.
2017-03-23 18:14:21 +08:00
/// </summary>
2017-03-28 09:02:41 +08:00
public bool IsStrong ;
2017-03-23 18:14:21 +08:00
2017-03-17 12:38:17 +08:00
/// <summary>
/// Whether this HitObject is in Kiai time.
/// </summary>
2017-03-23 10:21:45 +08:00
public bool Kiai { get ; protected set ; }
2017-03-17 12:38:17 +08:00
public override void ApplyDefaults ( TimingInfo timing , BeatmapDifficulty difficulty )
{
base . ApplyDefaults ( timing , difficulty ) ;
2017-04-05 15:51:21 +08:00
ScrollTime = scroll_time * ( timing . BeatLengthAt ( StartTime ) / 1000 ) / ( difficulty . SliderMultiplier * timing . SpeedMultiplierAt ( StartTime ) ) ;
2017-03-17 12:38:17 +08:00
ControlPoint overridePoint ;
Kiai = timing . TimingPointAt ( StartTime , out overridePoint ) . KiaiMode ;
if ( overridePoint ! = null )
Kiai | = overridePoint . KiaiMode ;
}
2016-09-02 17:27:38 +08:00
}
2017-03-17 12:38:17 +08:00
}