// 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 System.Collections.Generic; using JetBrains.Annotations; namespace osu.Game.Skinning { /// /// Provides access to skinnable elements. /// public interface ISkinSource : ISkin { /// /// Fired whenever a source change occurs, signalling that consumers should re-query as required. /// event Action SourceChanged; /// /// Find the first (if any) skin that can fulfill the lookup. /// This should be used for cases where subsequent lookups (for related components) need to occur on the same skin. /// /// The skin to be used for subsequent lookups, or null if none is available. [CanBeNull] ISkin FindProvider(Func lookupFunction); /// /// Retrieve all sources available for lookup, with highest priority source first. /// IEnumerable AllSources { get; } } }