1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-21 22:47:24 +08:00

Make EndTime and RepeatCount settable

This commit is contained in:
Dean Herbert 2020-02-05 17:12:26 +09:00
parent dffc58c5fa
commit cd6902a312
9 changed files with 43 additions and 10 deletions

View File

@ -36,7 +36,11 @@ namespace osu.Game.Rulesets.Catch.Objects
}
}
public double EndTime => StartTime + Duration;
public double EndTime
{
get => StartTime + Duration;
set => Duration = value - StartTime;
}
public double Duration { get; set; }
}

View File

@ -110,7 +110,11 @@ namespace osu.Game.Rulesets.Catch.Objects
}
}
public double EndTime => StartTime + this.SpanCount() * Path.Distance / Velocity;
public double EndTime
{
get => StartTime + this.SpanCount() * Path.Distance / Velocity;
set => throw new System.NotImplementedException();
}
public float EndX => X + this.CurvePositionAt(1).X / CatchPlayfield.BASE_WIDTH;

View File

@ -15,7 +15,11 @@ namespace osu.Game.Rulesets.Mania.Objects
/// </summary>
public class HoldNote : ManiaHitObject, IHasEndTime
{
public double EndTime => StartTime + Duration;
public double EndTime
{
get => StartTime + Duration;
set => Duration = value - StartTime;
}
private double duration;

View File

@ -18,7 +18,12 @@ namespace osu.Game.Rulesets.Osu.Objects
{
public class Slider : OsuHitObject, IHasCurve
{
public double EndTime => StartTime + this.SpanCount() * Path.Distance / Velocity;
public double EndTime
{
get => StartTime + this.SpanCount() * Path.Distance / Velocity;
set => throw new System.NotImplementedException();
}
public double Duration => EndTime - StartTime;
private readonly Cached<Vector2> endPositionCache = new Cached<Vector2>();
@ -81,7 +86,7 @@ namespace osu.Game.Rulesets.Osu.Objects
set
{
repeatCount = value;
endPositionCache.Invalidate();
updateNestedPositions();
}
}

View File

@ -18,7 +18,11 @@ namespace osu.Game.Rulesets.Taiko.Objects
/// </summary>
private const float base_distance = 100;
public double EndTime => StartTime + Duration;
public double EndTime
{
get => StartTime + Duration;
set => Duration = value - StartTime;
}
public double Duration { get; set; }

View File

@ -11,7 +11,11 @@ namespace osu.Game.Rulesets.Taiko.Objects
{
public class Swell : TaikoHitObject, IHasEndTime
{
public double EndTime => StartTime + Duration;
public double EndTime
{
get => StartTime + Duration;
set => Duration = value - StartTime;
}
public double Duration { get; set; }

View File

@ -26,7 +26,12 @@ namespace osu.Game.Rulesets.Objects.Legacy
public List<IList<HitSampleInfo>> NodeSamples { get; set; }
public int RepeatCount { get; set; }
public double EndTime => StartTime + this.SpanCount() * Distance / Velocity;
public double EndTime
{
get => StartTime + this.SpanCount() * Distance / Velocity;
set => throw new System.NotImplementedException();
}
public double Duration => EndTime - StartTime;
public double Velocity = 1;

View File

@ -1,6 +1,8 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using Newtonsoft.Json;
namespace osu.Game.Rulesets.Objects.Types
{
/// <summary>
@ -11,7 +13,8 @@ namespace osu.Game.Rulesets.Objects.Types
/// <summary>
/// The time at which the HitObject ends.
/// </summary>
double EndTime { get; }
[JsonIgnore]
double EndTime { get; set; }
/// <summary>
/// The duration of the HitObject.

View File

@ -14,7 +14,7 @@ namespace osu.Game.Rulesets.Objects.Types
/// <summary>
/// The amount of times the HitObject repeats.
/// </summary>
int RepeatCount { get; }
int RepeatCount { get; set; }
/// <summary>
/// The samples to be played when each node of the <see cref="IHasRepeats"/> is hit.<br />