Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions osu.Game.Rulesets.Catch/CatchRuleset.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
using osu.Game.Rulesets.Catch.Replays;
using osu.Game.Rulesets.Catch.Scoring;
using osu.Game.Rulesets.Catch.Skinning.Argon;
using osu.Game.Rulesets.Catch.Skinning.Default;
using osu.Game.Rulesets.Catch.Skinning.Legacy;
using osu.Game.Rulesets.Catch.UI;
using osu.Game.Rulesets.Difficulty;
Expand Down Expand Up @@ -225,6 +226,9 @@ public override LocalisableString GetDisplayNameForHitResult(HitResult result)

case ArgonSkin:
return new CatchArgonSkinTransformer(skin);

case TrianglesSkin:
return new CatchTrianglesSkinTransformer(skin);
}

return null;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
// 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 osu.Game.Screens.Play.HUD.HitErrorMeters;
using osu.Game.Skinning;
using osuTK;

namespace osu.Game.Rulesets.Catch.Skinning.Argon
{
Expand All @@ -17,6 +21,82 @@ public CatchArgonSkinTransformer(ISkin skin)
{
switch (lookup)
{
case GlobalSkinnableContainerLookup containerLookup:
if (containerLookup.Ruleset == null)
return base.GetDrawableComponent(lookup);

switch (containerLookup.Lookup)
{
case GlobalSkinnableContainers.MainHUDComponents:
return new DefaultSkinComponentsContainer(container =>
{
var leaderboard = container.OfType<DrawableGameplayLeaderboard>().FirstOrDefault();
var comboCounter = container.OfType<ArgonComboCounter>().FirstOrDefault();
var spectatorList = container.OfType<SpectatorList>().FirstOrDefault();
var hitError = container.OfType<HitErrorMeter>().FirstOrDefault();
var hitError2 = container.OfType<HitErrorMeter>().LastOrDefault();

if (leaderboard != null)
leaderboard.Position = new Vector2(36, 115);

Vector2 pos = new Vector2(36, -66);

if (comboCounter != null)
{
comboCounter.Position = pos;
pos -= new Vector2(0, comboCounter.DrawHeight * 1.4f + 20);
}

if (spectatorList != null)
spectatorList.Position = pos;

if (hitError is ColourHitErrorMeter colourHitError)
{
colourHitError.Anchor = Anchor.CentreLeft;
colourHitError.Origin = Anchor.CentreLeft;
colourHitError.JudgementCount.Value = 28;
colourHitError.JudgementSpacing.Value = 1.25f;
colourHitError.JudgementShape.Value = ColourHitErrorMeter.ShapeStyle.Square;
}

if (hitError2 is ColourHitErrorMeter colourHitError2)
{
colourHitError2.Anchor = Anchor.CentreRight;
colourHitError2.Scale = new Vector2(-1, 1);
// origin flipped to match scale above.
colourHitError2.Origin = Anchor.CentreLeft;
colourHitError2.JudgementCount.Value = 28;
colourHitError2.JudgementSpacing.Value = 1.25f;
colourHitError2.JudgementShape.Value = ColourHitErrorMeter.ShapeStyle.Square;
}

foreach (var d in container.OfType<ISerialisableDrawable>())
d.UsesFixedAnchor = true;
})
{
RelativeSizeAxes = Axes.Both,
Children = new Drawable[]
{
new DrawableGameplayLeaderboard(),
new ArgonComboCounter
{
Anchor = Anchor.BottomLeft,
Origin = Anchor.BottomLeft,
Scale = new Vector2(1.3f),
},
new SpectatorList
{
Anchor = Anchor.BottomLeft,
Origin = Anchor.BottomLeft,
},
new ColourHitErrorMeter(),
new ColourHitErrorMeter(),
},
};
}

return null;

case CatchSkinComponentLookup catchComponent:
// TODO: Once everything is finalised, consider throwing UnsupportedSkinComponentException on missing entries.
switch (catchComponent.Component)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
// 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.Graphics;
using osu.Game.Screens.Play.HUD;
using osu.Game.Screens.Play.HUD.HitErrorMeters;
using osu.Game.Skinning;
using osuTK;

namespace osu.Game.Rulesets.Catch.Skinning.Default
{
public class CatchTrianglesSkinTransformer : SkinTransformer
{
public CatchTrianglesSkinTransformer(ISkin skin)
: base(skin)
{
}

public override Drawable? GetDrawableComponent(ISkinComponentLookup lookup)
{
switch (lookup)
{
case GlobalSkinnableContainerLookup containerLookup:
{
// Only handle per ruleset defaults here.
if (containerLookup.Ruleset == null)
return base.GetDrawableComponent(lookup);

switch (containerLookup.Lookup)
{
case GlobalSkinnableContainers.MainHUDComponents:
return new DefaultSkinComponentsContainer(container =>
{
const float screen_edge_padding = 10;
// Hard to find this at runtime, so taken from the most expanded state during replay.
const float song_progress_offset_height = 73;

var leaderboard = container.OfType<DrawableGameplayLeaderboard>().FirstOrDefault();
var spectatorList = container.OfType<SpectatorList>().FirstOrDefault();
var hitError = container.OfType<HitErrorMeter>().FirstOrDefault();
var hitError2 = container.OfType<HitErrorMeter>().LastOrDefault();

if (leaderboard != null)
leaderboard.Position = new Vector2(40, 60);

if (spectatorList != null)
{
spectatorList.HeaderFont.Value = Typeface.Venera;
spectatorList.HeaderColour.Value = new OsuColour().BlueLighter;
spectatorList.Anchor = Anchor.BottomLeft;
spectatorList.Origin = Anchor.BottomLeft;
spectatorList.Position = new Vector2(10, -(song_progress_offset_height + screen_edge_padding));
}

if (hitError is ColourHitErrorMeter colourHitError)
{
colourHitError.Anchor = Anchor.CentreLeft;
colourHitError.Origin = Anchor.CentreLeft;
colourHitError.JudgementCount.Value = 28;
colourHitError.JudgementSpacing.Value = 1.25f;
colourHitError.JudgementShape.Value = ColourHitErrorMeter.ShapeStyle.Square;
}

if (hitError2 is ColourHitErrorMeter colourHitError2)
{
colourHitError2.Anchor = Anchor.CentreRight;
colourHitError2.Scale = new Vector2(-1, 1);
// origin flipped to match scale above.
colourHitError2.Origin = Anchor.CentreLeft;
colourHitError2.JudgementCount.Value = 28;
colourHitError2.JudgementSpacing.Value = 1.25f;
colourHitError2.JudgementShape.Value = ColourHitErrorMeter.ShapeStyle.Square;
}

foreach (var d in container.OfType<ISerialisableDrawable>())
d.UsesFixedAnchor = true;
})
{
RelativeSizeAxes = Axes.Both,
Children = new Drawable[]
{
new DrawableGameplayLeaderboard(),
new SpectatorList(),
new ColourHitErrorMeter(),
new ColourHitErrorMeter(),
},
};
}

return null;
}
}

return base.GetDrawableComponent(lookup);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using osu.Framework.Bindables;
using osu.Framework.Graphics;
using osu.Game.Screens.Play.HUD;
using osu.Game.Screens.Play.HUD.HitErrorMeters;
using osu.Game.Skinning;
using osuTK;
using osuTK.Graphics;
Expand Down Expand Up @@ -50,6 +51,7 @@ public CatchLegacySkinTransformer(ISkin skin)
var keyCounter = container.OfType<LegacyKeyCounterDisplay>().FirstOrDefault();
var spectatorList = container.OfType<SpectatorList>().FirstOrDefault();
var leaderboard = container.OfType<DrawableGameplayLeaderboard>().FirstOrDefault();
var hitError = container.OfType<HitErrorMeter>().FirstOrDefault();

if (keyCounter != null)
{
Expand All @@ -73,6 +75,17 @@ public CatchLegacySkinTransformer(ISkin skin)
leaderboard.X = 10;
}

if (hitError is ColourHitErrorMeter colourHitError)
{
colourHitError.Anchor = Anchor.BottomCentre;
colourHitError.Origin = Anchor.CentreLeft;
colourHitError.Rotation = -90;
colourHitError.Scale = new Vector2(1.7f, 1.7f);
colourHitError.JudgementCount.Value = 28;
colourHitError.JudgementSpacing.Value = 1.25f;
colourHitError.JudgementShape.Value = ColourHitErrorMeter.ShapeStyle.Square;
}

foreach (var d in container.OfType<ISerialisableDrawable>())
d.UsesFixedAnchor = true;
})
Expand All @@ -82,6 +95,7 @@ public CatchLegacySkinTransformer(ISkin skin)
new LegacyKeyCounterDisplay(),
new SpectatorList(),
new DrawableGameplayLeaderboard(),
new ColourHitErrorMeter(),
}
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
using osu.Game.Rulesets.Mania.Beatmaps;
using osu.Game.Rulesets.Scoring;
using osu.Game.Screens.Play.HUD;
using osu.Game.Screens.Play.HUD.HitErrorMeters;
using osu.Game.Skinning;
using osuTK;
using osuTK.Graphics;
Expand Down Expand Up @@ -43,6 +44,8 @@ public ManiaArgonSkinTransformer(ISkin skin, IBeatmap beatmap)
var leaderboard = container.OfType<DrawableGameplayLeaderboard>().FirstOrDefault();
var combo = container.ChildrenOfType<ArgonManiaComboCounter>().FirstOrDefault();
var spectatorList = container.OfType<SpectatorList>().FirstOrDefault();
var hitError = container.OfType<HitErrorMeter>().FirstOrDefault();
var hitError2 = container.OfType<HitErrorMeter>().LastOrDefault();

if (leaderboard != null)
leaderboard.Position = new Vector2(36, 115);
Expand All @@ -58,6 +61,20 @@ public ManiaArgonSkinTransformer(ISkin skin, IBeatmap beatmap)
if (spectatorList != null)
spectatorList.Position = new Vector2(36, -66);

if (hitError != null)
{
hitError.Anchor = Anchor.CentreLeft;
hitError.Origin = Anchor.CentreLeft;
}

if (hitError2 != null)
{
hitError2.Anchor = Anchor.CentreRight;
hitError2.Scale = new Vector2(-1, 1);
// origin flipped to match scale above.
hitError2.Origin = Anchor.CentreLeft;
}

foreach (var d in container.OfType<ISerialisableDrawable>())
d.UsesFixedAnchor = true;
})
Expand All @@ -68,7 +85,9 @@ public ManiaArgonSkinTransformer(ISkin skin, IBeatmap beatmap)
{
Anchor = Anchor.BottomLeft,
Origin = Anchor.BottomLeft,
}
},
new BarHitErrorMeter(),
new BarHitErrorMeter(),
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
using osu.Game.Rulesets.Objects.Legacy;
using osu.Game.Rulesets.Scoring;
using osu.Game.Screens.Play.HUD;
using osu.Game.Screens.Play.HUD.HitErrorMeters;
using osu.Game.Skinning;
using osuTK;

Expand Down Expand Up @@ -101,6 +102,7 @@ public override Drawable GetDrawableComponent(ISkinComponentLookup lookup)
var combo = container.ChildrenOfType<LegacyManiaComboCounter>().FirstOrDefault();
var spectatorList = container.OfType<SpectatorList>().FirstOrDefault();
var leaderboard = container.OfType<DrawableGameplayLeaderboard>().FirstOrDefault();
var hitError = container.OfType<HitErrorMeter>().FirstOrDefault();

if (combo != null)
{
Expand All @@ -123,13 +125,20 @@ public override Drawable GetDrawableComponent(ISkinComponentLookup lookup)
leaderboard.X = 10;
}

if (hitError != null)
{
hitError.Anchor = Anchor.BottomCentre;
hitError.Origin = Anchor.BottomCentre;
}

foreach (var d in container.OfType<ISerialisableDrawable>())
d.UsesFixedAnchor = true;
})
{
new LegacyManiaComboCounter(),
new SpectatorList(),
new DrawableGameplayLeaderboard(),
new LegacyBarHitErrorMeter(),
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using osu.Game.Rulesets.Osu.Objects;
using osu.Game.Rulesets.Scoring;
using osu.Game.Screens.Play.HUD;
using osu.Game.Screens.Play.HUD.HitErrorMeters;
using osu.Game.Skinning;
using osuTK;

Expand Down Expand Up @@ -75,6 +76,7 @@ public OsuLegacySkinTransformer(ISkin skin)
var combo = container.OfType<LegacyDefaultComboCounter>().FirstOrDefault();
var spectatorList = container.OfType<SpectatorList>().FirstOrDefault();
var leaderboard = container.OfType<DrawableGameplayLeaderboard>().FirstOrDefault();
var hitError = container.OfType<HitErrorMeter>().FirstOrDefault();

Vector2 pos = new Vector2();

Expand Down Expand Up @@ -104,6 +106,12 @@ public OsuLegacySkinTransformer(ISkin skin)
leaderboard.Position = pos;
}

if (hitError != null)
{
hitError.Anchor = Anchor.BottomCentre;
hitError.Origin = Anchor.BottomCentre;
}

foreach (var d in container.OfType<ISerialisableDrawable>())
d.UsesFixedAnchor = true;
})
Expand All @@ -114,6 +122,7 @@ public OsuLegacySkinTransformer(ISkin skin)
new LegacyKeyCounterDisplay(),
new SpectatorList(),
new DrawableGameplayLeaderboard(),
new LegacyBarHitErrorMeter(),
}
};
}
Expand Down
Loading
Loading