mirror of
https://github.com/osukey/osukey.git
synced 2025-08-05 07:33:55 +09:00
Merge branch 'master' into skin-serialisation
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
// 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 System;
|
||||
using osu.Framework.Allocation;
|
||||
using osu.Framework.Bindables;
|
||||
using osu.Framework.Graphics;
|
||||
@ -12,7 +13,7 @@ namespace osu.Game.Screens.Play
|
||||
/// <summary>
|
||||
/// Encapsulates gameplay timing logic and provides a <see cref="GameplayClock"/> via DI for gameplay components to use.
|
||||
/// </summary>
|
||||
public abstract class GameplayClockContainer : Container
|
||||
public abstract class GameplayClockContainer : Container, IAdjustableClock
|
||||
{
|
||||
/// <summary>
|
||||
/// The final clock which is exposed to gameplay components.
|
||||
@ -157,5 +158,33 @@ namespace osu.Game.Screens.Play
|
||||
/// <param name="source">The <see cref="IFrameBasedClock"/> providing the source time.</param>
|
||||
/// <returns>The final <see cref="GameplayClock"/>.</returns>
|
||||
protected abstract GameplayClock CreateGameplayClock(IFrameBasedClock source);
|
||||
|
||||
#region IAdjustableClock
|
||||
|
||||
bool IAdjustableClock.Seek(double position)
|
||||
{
|
||||
Seek(position);
|
||||
return true;
|
||||
}
|
||||
|
||||
void IAdjustableClock.Reset() => Reset();
|
||||
|
||||
public void ResetSpeedAdjustments()
|
||||
{
|
||||
}
|
||||
|
||||
double IAdjustableClock.Rate
|
||||
{
|
||||
get => GameplayClock.Rate;
|
||||
set => throw new NotSupportedException();
|
||||
}
|
||||
|
||||
double IClock.Rate => GameplayClock.Rate;
|
||||
|
||||
public double CurrentTime => GameplayClock.CurrentTime;
|
||||
|
||||
public bool IsRunning => GameplayClock.IsRunning;
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
@ -12,7 +12,12 @@ namespace osu.Game.Screens.Play
|
||||
public readonly ScoreInfo Score;
|
||||
|
||||
public SpectatorPlayerLoader(Score score)
|
||||
: base(() => new SpectatorPlayer(score))
|
||||
: this(score, () => new SpectatorPlayer(score))
|
||||
{
|
||||
}
|
||||
|
||||
public SpectatorPlayerLoader(Score score, Func<Player> createPlayer)
|
||||
: base(createPlayer)
|
||||
{
|
||||
if (score.Replay == null)
|
||||
throw new ArgumentException($"{nameof(score)} must have a non-null {nameof(score.Replay)}.", nameof(score));
|
||||
|
Reference in New Issue
Block a user