// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using System; using osu.Framework.Bindables; using osu.Game.Screens.Play; namespace osu.Game.Screens.OnlinePlay.Multiplayer.Spectate { /// /// Manages the synchronisation between one or more s in relation to a master clock. /// public interface ISyncManager { /// /// An event which is invoked when gameplay is ready to start. /// event Action? ReadyToStart; /// /// The master clock which player clocks should synchronise to. /// GameplayClockContainer MasterClock { get; } /// /// An event which is invoked when the state of is changed. /// IBindable MasterState { get; } /// /// Create a new managed . /// /// The newly created . ISpectatorPlayerClock CreateManagedClock(); /// /// Removes an , stopping it from being managed by this . /// /// The to remove. void RemoveManagedClock(ISpectatorPlayerClock clock); } }