mirror of
https://github.com/ppy/osu.git
synced 2024-12-14 04:52:57 +08:00
Simplify and rename SkinnableTargetComponentsContainer
This commit is contained in:
parent
24961d1ac0
commit
8bbd00822c
@ -4,6 +4,7 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Game.Skinning;
|
using osu.Game.Skinning;
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
|
|
||||||
@ -32,7 +33,7 @@ namespace osu.Game.Rulesets.Catch.Skinning.Legacy
|
|||||||
switch (targetComponent.Lookup)
|
switch (targetComponent.Lookup)
|
||||||
{
|
{
|
||||||
case GlobalSkinComponentLookup.LookupType.MainHUDComponents:
|
case GlobalSkinComponentLookup.LookupType.MainHUDComponents:
|
||||||
var components = base.GetDrawableComponent(lookup) as SkinnableTargetComponentsContainer;
|
var components = base.GetDrawableComponent(lookup) as Container;
|
||||||
|
|
||||||
if (providesComboCounter && components != null)
|
if (providesComboCounter && components != null)
|
||||||
{
|
{
|
||||||
|
@ -58,14 +58,14 @@ namespace osu.Game.Tests.Visual.Gameplay
|
|||||||
protected bool AssertComponentsFromExpectedSource(GlobalSkinComponentLookup.LookupType target, ISkin expectedSource)
|
protected bool AssertComponentsFromExpectedSource(GlobalSkinComponentLookup.LookupType target, ISkin expectedSource)
|
||||||
{
|
{
|
||||||
var actualComponentsContainer = Player.ChildrenOfType<SkinnableTargetContainer>().First(s => s.Target == target)
|
var actualComponentsContainer = Player.ChildrenOfType<SkinnableTargetContainer>().First(s => s.Target == target)
|
||||||
.ChildrenOfType<SkinnableTargetComponentsContainer>().SingleOrDefault();
|
.ChildrenOfType<Container>().SingleOrDefault();
|
||||||
|
|
||||||
if (actualComponentsContainer == null)
|
if (actualComponentsContainer == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
var actualInfo = actualComponentsContainer.CreateSkinnableInfo();
|
var actualInfo = actualComponentsContainer.CreateSkinnableInfo();
|
||||||
|
|
||||||
var expectedComponentsContainer = (SkinnableTargetComponentsContainer)expectedSource.GetDrawableComponent(new GlobalSkinComponentLookup(target));
|
var expectedComponentsContainer = (DefaultSkinComponentsContainer)expectedSource.GetDrawableComponent(new GlobalSkinComponentLookup(target));
|
||||||
if (expectedComponentsContainer == null)
|
if (expectedComponentsContainer == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ namespace osu.Game.Skinning
|
|||||||
switch (globalLookup.Lookup)
|
switch (globalLookup.Lookup)
|
||||||
{
|
{
|
||||||
case GlobalSkinComponentLookup.LookupType.SongSelect:
|
case GlobalSkinComponentLookup.LookupType.SongSelect:
|
||||||
var songSelectComponents = new SkinnableTargetComponentsContainer(_ =>
|
var songSelectComponents = new DefaultSkinComponentsContainer(_ =>
|
||||||
{
|
{
|
||||||
// do stuff when we need to.
|
// do stuff when we need to.
|
||||||
});
|
});
|
||||||
@ -102,7 +102,7 @@ namespace osu.Game.Skinning
|
|||||||
return songSelectComponents;
|
return songSelectComponents;
|
||||||
|
|
||||||
case GlobalSkinComponentLookup.LookupType.MainHUDComponents:
|
case GlobalSkinComponentLookup.LookupType.MainHUDComponents:
|
||||||
var skinnableTargetWrapper = new SkinnableTargetComponentsContainer(container =>
|
var skinnableTargetWrapper = new DefaultSkinComponentsContainer(container =>
|
||||||
{
|
{
|
||||||
var score = container.OfType<DefaultScoreCounter>().FirstOrDefault();
|
var score = container.OfType<DefaultScoreCounter>().FirstOrDefault();
|
||||||
var accuracy = container.OfType<DefaultAccuracyCounter>().FirstOrDefault();
|
var accuracy = container.OfType<DefaultAccuracyCounter>().FirstOrDefault();
|
||||||
|
@ -2,39 +2,28 @@
|
|||||||
// See the LICENCE file in the repository root for full licence text.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using Newtonsoft.Json;
|
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
|
|
||||||
namespace osu.Game.Skinning
|
namespace osu.Game.Skinning
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A container which groups the components of a <see cref="SkinnableTargetContainer"/> into a single object.
|
/// A container which can be used to specify default skin components layouts.
|
||||||
/// Optionally also applies a default layout to the components.
|
/// Handles applying a default layout to the components.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Serializable]
|
public partial class DefaultSkinComponentsContainer : Container
|
||||||
public partial class SkinnableTargetComponentsContainer : Container, ISkinnableDrawable
|
|
||||||
{
|
{
|
||||||
public bool IsEditable => false;
|
|
||||||
|
|
||||||
public bool UsesFixedAnchor { get; set; }
|
|
||||||
|
|
||||||
private readonly Action<Container>? applyDefaults;
|
private readonly Action<Container>? applyDefaults;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Construct a wrapper with defaults that should be applied once.
|
/// Construct a wrapper with defaults that should be applied once.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="applyDefaults">A function to apply the default layout.</param>
|
/// <param name="applyDefaults">A function to apply the default layout.</param>
|
||||||
public SkinnableTargetComponentsContainer(Action<Container> applyDefaults)
|
public DefaultSkinComponentsContainer(Action<Container> applyDefaults)
|
||||||
: this()
|
|
||||||
{
|
|
||||||
this.applyDefaults = applyDefaults;
|
|
||||||
}
|
|
||||||
|
|
||||||
[JsonConstructor]
|
|
||||||
public SkinnableTargetComponentsContainer()
|
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both;
|
RelativeSizeAxes = Axes.Both;
|
||||||
|
|
||||||
|
this.applyDefaults = applyDefaults;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void LoadComplete()
|
protected override void LoadComplete()
|
@ -347,7 +347,7 @@ namespace osu.Game.Skinning
|
|||||||
switch (target.Lookup)
|
switch (target.Lookup)
|
||||||
{
|
{
|
||||||
case GlobalSkinComponentLookup.LookupType.MainHUDComponents:
|
case GlobalSkinComponentLookup.LookupType.MainHUDComponents:
|
||||||
var skinnableTargetWrapper = new SkinnableTargetComponentsContainer(container =>
|
var skinnableTargetWrapper = new DefaultSkinComponentsContainer(container =>
|
||||||
{
|
{
|
||||||
var score = container.OfType<LegacyScoreCounter>().FirstOrDefault();
|
var score = container.OfType<LegacyScoreCounter>().FirstOrDefault();
|
||||||
var accuracy = container.OfType<GameplayAccuracyCounter>().FirstOrDefault();
|
var accuracy = container.OfType<GameplayAccuracyCounter>().FirstOrDefault();
|
||||||
|
@ -11,6 +11,7 @@ using Newtonsoft.Json;
|
|||||||
using osu.Framework.Audio.Sample;
|
using osu.Framework.Audio.Sample;
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Textures;
|
using osu.Framework.Graphics.Textures;
|
||||||
using osu.Framework.IO.Stores;
|
using osu.Framework.IO.Stores;
|
||||||
using osu.Framework.Logging;
|
using osu.Framework.Logging;
|
||||||
@ -174,8 +175,9 @@ namespace osu.Game.Skinning
|
|||||||
foreach (var i in skinnableInfo)
|
foreach (var i in skinnableInfo)
|
||||||
components.Add(i.CreateInstance());
|
components.Add(i.CreateInstance());
|
||||||
|
|
||||||
return new SkinnableTargetComponentsContainer
|
return new Container
|
||||||
{
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
Children = components,
|
Children = components,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -7,13 +7,14 @@ using System.Linq;
|
|||||||
using System.Threading;
|
using System.Threading;
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Game.Screens.Play.HUD;
|
using osu.Game.Screens.Play.HUD;
|
||||||
|
|
||||||
namespace osu.Game.Skinning
|
namespace osu.Game.Skinning
|
||||||
{
|
{
|
||||||
public partial class SkinnableTargetContainer : SkinReloadableDrawable, ISkinnableTarget
|
public partial class SkinnableTargetContainer : SkinReloadableDrawable, ISkinnableTarget
|
||||||
{
|
{
|
||||||
private SkinnableTargetComponentsContainer? content;
|
private Container? content;
|
||||||
|
|
||||||
public GlobalSkinComponentLookup.LookupType Target { get; }
|
public GlobalSkinComponentLookup.LookupType Target { get; }
|
||||||
|
|
||||||
@ -39,15 +40,16 @@ namespace osu.Game.Skinning
|
|||||||
foreach (var i in skinnableInfo)
|
foreach (var i in skinnableInfo)
|
||||||
drawables.Add(i.CreateInstance());
|
drawables.Add(i.CreateInstance());
|
||||||
|
|
||||||
Reload(new SkinnableTargetComponentsContainer
|
Reload(new Container
|
||||||
{
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
Children = drawables,
|
Children = drawables,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Reload() => Reload(CurrentSkin.GetDrawableComponent(new GlobalSkinComponentLookup(Target)) as SkinnableTargetComponentsContainer);
|
public void Reload() => Reload(CurrentSkin.GetDrawableComponent(new GlobalSkinComponentLookup(Target)) as Container);
|
||||||
|
|
||||||
public void Reload(SkinnableTargetComponentsContainer? componentsContainer)
|
public void Reload(Container? componentsContainer)
|
||||||
{
|
{
|
||||||
ClearInternal();
|
ClearInternal();
|
||||||
components.Clear();
|
components.Clear();
|
||||||
|
@ -72,7 +72,7 @@ namespace osu.Game.Skinning
|
|||||||
switch (target.Lookup)
|
switch (target.Lookup)
|
||||||
{
|
{
|
||||||
case GlobalSkinComponentLookup.LookupType.SongSelect:
|
case GlobalSkinComponentLookup.LookupType.SongSelect:
|
||||||
var songSelectComponents = new SkinnableTargetComponentsContainer(_ =>
|
var songSelectComponents = new DefaultSkinComponentsContainer(_ =>
|
||||||
{
|
{
|
||||||
// do stuff when we need to.
|
// do stuff when we need to.
|
||||||
});
|
});
|
||||||
@ -80,7 +80,7 @@ namespace osu.Game.Skinning
|
|||||||
return songSelectComponents;
|
return songSelectComponents;
|
||||||
|
|
||||||
case GlobalSkinComponentLookup.LookupType.MainHUDComponents:
|
case GlobalSkinComponentLookup.LookupType.MainHUDComponents:
|
||||||
var skinnableTargetWrapper = new SkinnableTargetComponentsContainer(container =>
|
var skinnableTargetWrapper = new DefaultSkinComponentsContainer(container =>
|
||||||
{
|
{
|
||||||
var score = container.OfType<DefaultScoreCounter>().FirstOrDefault();
|
var score = container.OfType<DefaultScoreCounter>().FirstOrDefault();
|
||||||
var accuracy = container.OfType<DefaultAccuracyCounter>().FirstOrDefault();
|
var accuracy = container.OfType<DefaultAccuracyCounter>().FirstOrDefault();
|
||||||
|
Loading…
Reference in New Issue
Block a user