mirror of
https://github.com/ppy/osu.git
synced 2024-11-15 10:27:35 +08:00
Move combo counter to ruleset-specific HUD components target
This commit is contained in:
parent
0fa4cd5dfe
commit
eedb436389
@ -6,7 +6,7 @@ using osu.Game.Skinning;
|
|||||||
|
|
||||||
namespace osu.Game.Rulesets.Catch.Skinning.Argon
|
namespace osu.Game.Rulesets.Catch.Skinning.Argon
|
||||||
{
|
{
|
||||||
public class CatchArgonSkinTransformer : SkinTransformer
|
public class CatchArgonSkinTransformer : ArgonSkinTransformer
|
||||||
{
|
{
|
||||||
public CatchArgonSkinTransformer(ISkin skin)
|
public CatchArgonSkinTransformer(ISkin skin)
|
||||||
: base(skin)
|
: base(skin)
|
||||||
|
@ -7,7 +7,7 @@ using osu.Game.Skinning;
|
|||||||
|
|
||||||
namespace osu.Game.Rulesets.Osu.Skinning.Argon
|
namespace osu.Game.Rulesets.Osu.Skinning.Argon
|
||||||
{
|
{
|
||||||
public class OsuArgonSkinTransformer : SkinTransformer
|
public class OsuArgonSkinTransformer : ArgonSkinTransformer
|
||||||
{
|
{
|
||||||
public OsuArgonSkinTransformer(ISkin skin)
|
public OsuArgonSkinTransformer(ISkin skin)
|
||||||
: base(skin)
|
: base(skin)
|
||||||
|
@ -7,16 +7,16 @@ using osu.Game.Skinning;
|
|||||||
|
|
||||||
namespace osu.Game.Rulesets.Taiko.Skinning.Argon
|
namespace osu.Game.Rulesets.Taiko.Skinning.Argon
|
||||||
{
|
{
|
||||||
public class TaikoArgonSkinTransformer : SkinTransformer
|
public class TaikoArgonSkinTransformer : ArgonSkinTransformer
|
||||||
{
|
{
|
||||||
public TaikoArgonSkinTransformer(ISkin skin)
|
public TaikoArgonSkinTransformer(ISkin skin)
|
||||||
: base(skin)
|
: base(skin)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Drawable? GetDrawableComponent(ISkinComponentLookup component)
|
public override Drawable? GetDrawableComponent(ISkinComponentLookup lookup)
|
||||||
{
|
{
|
||||||
switch (component)
|
switch (lookup)
|
||||||
{
|
{
|
||||||
case GameplaySkinComponentLookup<HitResult> resultComponent:
|
case GameplaySkinComponentLookup<HitResult> resultComponent:
|
||||||
// This should eventually be moved to a skin setting, when supported.
|
// This should eventually be moved to a skin setting, when supported.
|
||||||
@ -75,7 +75,7 @@ namespace osu.Game.Rulesets.Taiko.Skinning.Argon
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return base.GetDrawableComponent(component);
|
return base.GetDrawableComponent(lookup);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -212,7 +212,19 @@ namespace osu.Game.Rulesets
|
|||||||
/// <param name="skin">The source skin.</param>
|
/// <param name="skin">The source skin.</param>
|
||||||
/// <param name="beatmap">The current beatmap.</param>
|
/// <param name="beatmap">The current beatmap.</param>
|
||||||
/// <returns>A skin with a transformer applied, or null if no transformation is provided by this ruleset.</returns>
|
/// <returns>A skin with a transformer applied, or null if no transformation is provided by this ruleset.</returns>
|
||||||
public virtual ISkin? CreateSkinTransformer(ISkin skin, IBeatmap beatmap) => null;
|
public virtual ISkin? CreateSkinTransformer(ISkin skin, IBeatmap beatmap)
|
||||||
|
{
|
||||||
|
switch (skin)
|
||||||
|
{
|
||||||
|
case LegacySkin:
|
||||||
|
return new LegacySkinTransformer(skin);
|
||||||
|
|
||||||
|
case ArgonSkin:
|
||||||
|
return new ArgonSkinTransformer(skin);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
protected Ruleset()
|
protected Ruleset()
|
||||||
{
|
{
|
||||||
|
@ -111,14 +111,13 @@ namespace osu.Game.Skinning
|
|||||||
return songSelectComponents;
|
return songSelectComponents;
|
||||||
|
|
||||||
case SkinComponentsContainerLookup.TargetArea.MainHUDComponents:
|
case SkinComponentsContainerLookup.TargetArea.MainHUDComponents:
|
||||||
var skinnableTargetWrapper = new DefaultSkinComponentsContainer(container =>
|
var mainHUDComponents = new DefaultSkinComponentsContainer(container =>
|
||||||
{
|
{
|
||||||
var health = container.OfType<ArgonHealthDisplay>().FirstOrDefault();
|
var health = container.OfType<ArgonHealthDisplay>().FirstOrDefault();
|
||||||
var healthLine = container.OfType<BoxElement>().FirstOrDefault();
|
var healthLine = container.OfType<BoxElement>().FirstOrDefault();
|
||||||
var wedgePieces = container.OfType<ArgonWedgePiece>().ToArray();
|
var wedgePieces = container.OfType<ArgonWedgePiece>().ToArray();
|
||||||
var score = container.OfType<ArgonScoreCounter>().FirstOrDefault();
|
var score = container.OfType<ArgonScoreCounter>().FirstOrDefault();
|
||||||
var accuracy = container.OfType<ArgonAccuracyCounter>().FirstOrDefault();
|
var accuracy = container.OfType<ArgonAccuracyCounter>().FirstOrDefault();
|
||||||
var combo = container.OfType<ArgonComboCounter>().FirstOrDefault();
|
|
||||||
var songProgress = container.OfType<ArgonSongProgress>().FirstOrDefault();
|
var songProgress = container.OfType<ArgonSongProgress>().FirstOrDefault();
|
||||||
var keyCounter = container.OfType<ArgonKeyCounterDisplay>().FirstOrDefault();
|
var keyCounter = container.OfType<ArgonKeyCounterDisplay>().FirstOrDefault();
|
||||||
|
|
||||||
@ -192,13 +191,6 @@ namespace osu.Game.Skinning
|
|||||||
keyCounter.Origin = Anchor.BottomRight;
|
keyCounter.Origin = Anchor.BottomRight;
|
||||||
keyCounter.Position = new Vector2(-(hitError.Width + padding), -(padding * 2 + song_progress_offset_height));
|
keyCounter.Position = new Vector2(-(hitError.Width + padding), -(padding * 2 + song_progress_offset_height));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (combo != null && hitError != null)
|
|
||||||
{
|
|
||||||
combo.Anchor = Anchor.BottomLeft;
|
|
||||||
combo.Origin = Anchor.BottomLeft;
|
|
||||||
combo.Position = new Vector2((hitError.Width + padding), -(padding * 2 + song_progress_offset_height));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -224,10 +216,6 @@ namespace osu.Game.Skinning
|
|||||||
CornerRadius = { Value = 0.5f }
|
CornerRadius = { Value = 0.5f }
|
||||||
},
|
},
|
||||||
new ArgonAccuracyCounter(),
|
new ArgonAccuracyCounter(),
|
||||||
new ArgonComboCounter
|
|
||||||
{
|
|
||||||
Scale = new Vector2(1.3f)
|
|
||||||
},
|
|
||||||
new BarHitErrorMeter(),
|
new BarHitErrorMeter(),
|
||||||
new BarHitErrorMeter(),
|
new BarHitErrorMeter(),
|
||||||
new ArgonSongProgress(),
|
new ArgonSongProgress(),
|
||||||
@ -235,7 +223,7 @@ namespace osu.Game.Skinning
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return skinnableTargetWrapper;
|
return mainHUDComponents;
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
53
osu.Game/Skinning/ArgonSkinTransformer.cs
Normal file
53
osu.Game/Skinning/ArgonSkinTransformer.cs
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
// 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.Linq;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Game.Screens.Play.HUD;
|
||||||
|
using osuTK;
|
||||||
|
|
||||||
|
namespace osu.Game.Skinning
|
||||||
|
{
|
||||||
|
public class ArgonSkinTransformer : SkinTransformer
|
||||||
|
{
|
||||||
|
public ArgonSkinTransformer(ISkin skin)
|
||||||
|
: base(skin)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Drawable? GetDrawableComponent(ISkinComponentLookup lookup)
|
||||||
|
{
|
||||||
|
switch (lookup)
|
||||||
|
{
|
||||||
|
case SkinComponentsContainerLookup containerLookup:
|
||||||
|
switch (containerLookup.Target)
|
||||||
|
{
|
||||||
|
case SkinComponentsContainerLookup.TargetArea.MainHUDComponents when containerLookup.Ruleset != null:
|
||||||
|
var rulesetHUDComponents = Skin.GetDrawableComponent(lookup);
|
||||||
|
|
||||||
|
rulesetHUDComponents ??= new DefaultSkinComponentsContainer(container =>
|
||||||
|
{
|
||||||
|
var combo = container.OfType<ArgonComboCounter>().FirstOrDefault();
|
||||||
|
|
||||||
|
if (combo != null)
|
||||||
|
{
|
||||||
|
combo.Anchor = Anchor.BottomLeft;
|
||||||
|
combo.Origin = Anchor.BottomLeft;
|
||||||
|
combo.Position = new Vector2(36, -66);
|
||||||
|
combo.Scale = new Vector2(1.3f);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
{
|
||||||
|
new ArgonComboCounter(),
|
||||||
|
};
|
||||||
|
|
||||||
|
return rulesetHUDComponents;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return base.GetDrawableComponent(lookup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -399,7 +399,6 @@ namespace osu.Game.Skinning
|
|||||||
{
|
{
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
new LegacyComboCounter(),
|
|
||||||
new LegacyScoreCounter(),
|
new LegacyScoreCounter(),
|
||||||
new LegacyAccuracyCounter(),
|
new LegacyAccuracyCounter(),
|
||||||
new LegacySongProgress(),
|
new LegacySongProgress(),
|
||||||
|
@ -1,28 +1,62 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
// 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.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
|
using System.Linq;
|
||||||
using osu.Framework.Audio.Sample;
|
using osu.Framework.Audio.Sample;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
using osu.Game.Audio;
|
using osu.Game.Audio;
|
||||||
using osu.Game.Rulesets.Objects.Legacy;
|
using osu.Game.Rulesets.Objects.Legacy;
|
||||||
|
using osuTK;
|
||||||
using static osu.Game.Skinning.SkinConfiguration;
|
using static osu.Game.Skinning.SkinConfiguration;
|
||||||
|
|
||||||
namespace osu.Game.Skinning
|
namespace osu.Game.Skinning
|
||||||
{
|
{
|
||||||
/// <summary>
|
public class LegacySkinTransformer : SkinTransformer
|
||||||
/// Transformer used to handle support of legacy features for individual rulesets.
|
|
||||||
/// </summary>
|
|
||||||
public abstract class LegacySkinTransformer : SkinTransformer
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether the skin being transformed is able to provide legacy resources for the ruleset.
|
/// Whether the skin being transformed is able to provide legacy resources for the ruleset.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual bool IsProvidingLegacyResources => this.HasFont(LegacyFont.Combo);
|
public virtual bool IsProvidingLegacyResources => this.HasFont(LegacyFont.Combo);
|
||||||
|
|
||||||
protected LegacySkinTransformer(ISkin skin)
|
public LegacySkinTransformer(ISkin skin)
|
||||||
: base(skin)
|
: base(skin)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override Drawable? GetDrawableComponent(ISkinComponentLookup lookup)
|
||||||
|
{
|
||||||
|
switch (lookup)
|
||||||
|
{
|
||||||
|
case SkinComponentsContainerLookup containerLookup:
|
||||||
|
switch (containerLookup.Target)
|
||||||
|
{
|
||||||
|
case SkinComponentsContainerLookup.TargetArea.MainHUDComponents when containerLookup.Ruleset != null:
|
||||||
|
var rulesetHUDComponents = base.GetDrawableComponent(lookup);
|
||||||
|
|
||||||
|
rulesetHUDComponents ??= new DefaultSkinComponentsContainer(container =>
|
||||||
|
{
|
||||||
|
var combo = container.OfType<LegacyComboCounter>().FirstOrDefault();
|
||||||
|
|
||||||
|
if (combo != null)
|
||||||
|
{
|
||||||
|
combo.Anchor = Anchor.BottomLeft;
|
||||||
|
combo.Origin = Anchor.BottomLeft;
|
||||||
|
combo.Scale = new Vector2(1.28f);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
{
|
||||||
|
new LegacyComboCounter()
|
||||||
|
};
|
||||||
|
|
||||||
|
return rulesetHUDComponents;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return base.GetDrawableComponent(lookup);
|
||||||
|
}
|
||||||
|
|
||||||
public override ISample? GetSample(ISampleInfo sampleInfo)
|
public override ISample? GetSample(ISampleInfo sampleInfo)
|
||||||
{
|
{
|
||||||
if (!(sampleInfo is ConvertHitObjectParser.LegacyHitSampleInfo legacySample))
|
if (!(sampleInfo is ConvertHitObjectParser.LegacyHitSampleInfo legacySample))
|
||||||
|
Loading…
Reference in New Issue
Block a user