2017-02-07 04:59:30 +00: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 09:27:38 +00:00
2017-07-26 04:22:46 +00:00
using osu.Game.Beatmaps ;
2017-05-23 04:55:18 +00:00
using osu.Game.Beatmaps.ControlPoints ;
2017-04-18 07:05:58 +00:00
using osu.Game.Rulesets.Objects ;
2016-11-14 09:54:24 +00:00
2017-04-18 07:05:58 +00:00
namespace osu.Game.Rulesets.Taiko.Objects
2016-09-02 09:27:38 +00:00
{
2017-03-23 02:21:45 +00:00
public abstract class TaikoHitObject : HitObject
2016-09-02 09:27:38 +00:00
{
2017-03-17 04:38:17 +00:00
/// <summary>
2017-08-03 05:01:20 +00:00
/// Default size of a drawable taiko hit object.
2017-03-17 04:38:17 +00:00
/// </summary>
2017-08-03 04:06:04 +00:00
public const float DEFAULT_SIZE = 0.45f ;
2017-04-10 00:23:00 +00:00
/// <summary>
2017-08-03 05:01:20 +00:00
/// Scale multiplier for a strong drawable taiko hit object.
2017-04-10 00:23:00 +00:00
/// </summary>
2017-08-03 04:06:04 +00:00
public const float STRONG_SCALE = 1.4f ;
2017-04-10 00:23:00 +00:00
/// <summary>
2017-08-03 05:01:20 +00:00
/// Default size of a strong drawable taiko hit object.
2017-04-10 00:23:00 +00:00
/// </summary>
2017-08-03 04:06:04 +00:00
public const float DEFAULT_STRONG_SIZE = DEFAULT_SIZE * STRONG_SCALE ;
2016-09-02 09:27:38 +00:00
2017-04-03 05:10:20 +00:00
/// <summary>
2017-05-23 07:47:47 +00:00
/// The time taken from the initial (off-screen) spawn position to the centre of the hit target for a <see cref="TimingControlPoint.BeatLength"/> of 1000ms.
2017-04-03 05:10:20 +00:00
/// </summary>
2017-04-05 07:51:21 +00:00
private const double scroll_time = 6000 ;
2017-04-03 05:10:20 +00:00
2017-04-03 08:19:46 +00:00
/// <summary>
2017-05-23 07:47:47 +00:00
/// Our adjusted <see cref="scroll_time"/> taking into consideration local <see cref="TimingControlPoint.BeatLength"/> and other speed multipliers.
2017-04-03 08:19:46 +00:00
/// </summary>
2017-04-05 02:48:19 +00:00
public double ScrollTime ;
2017-03-17 04:38:17 +00:00
2017-03-23 10:14:21 +00:00
/// <summary>
2017-03-28 01:02:41 +00: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 10:14:21 +00:00
/// </summary>
2017-03-28 01:02:41 +00:00
public bool IsStrong ;
2017-03-23 10:14:21 +00:00
2017-03-17 04:38:17 +00:00
/// <summary>
/// Whether this HitObject is in Kiai time.
/// </summary>
2017-03-23 02:21:45 +00:00
public bool Kiai { get ; protected set ; }
2017-03-17 04:38:17 +00:00
2017-05-23 04:55:18 +00:00
public override void ApplyDefaults ( ControlPointInfo controlPointInfo , BeatmapDifficulty difficulty )
2017-03-17 04:38:17 +00:00
{
2017-05-23 04:55:18 +00:00
base . ApplyDefaults ( controlPointInfo , difficulty ) ;
2017-03-17 04:38:17 +00:00
2017-05-23 04:55:18 +00:00
TimingControlPoint timingPoint = controlPointInfo . TimingPointAt ( StartTime ) ;
DifficultyControlPoint difficultyPoint = controlPointInfo . DifficultyPointAt ( StartTime ) ;
EffectControlPoint effectPoint = controlPointInfo . EffectPointAt ( StartTime ) ;
2017-03-17 04:38:17 +00:00
2017-05-23 04:55:18 +00:00
ScrollTime = scroll_time * ( timingPoint . BeatLength * difficultyPoint . SpeedMultiplier / 1000 ) / difficulty . SliderMultiplier ;
2017-03-17 04:38:17 +00:00
2017-05-23 04:55:18 +00:00
Kiai | = effectPoint . KiaiMode ;
2017-03-17 04:38:17 +00:00
}
2016-09-02 09:27:38 +00:00
}
2017-03-17 04:38:17 +00:00
}