Skip to content

Commit abf4b7b

Browse files
committed
Merge spectator list classes into one skinnable
1 parent c8b38f0 commit abf4b7b

File tree

10 files changed

+52
-40
lines changed

10 files changed

+52
-40
lines changed

osu.Game.Rulesets.Catch/Skinning/Legacy/CatchLegacySkinTransformer.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public CatchLegacySkinTransformer(ISkin skin)
4848
return new DefaultSkinComponentsContainer(container =>
4949
{
5050
var keyCounter = container.OfType<LegacyKeyCounterDisplay>().FirstOrDefault();
51-
var spectatorList = container.OfType<SkinnableSpectatorList>().FirstOrDefault();
51+
var spectatorList = container.OfType<SpectatorList>().FirstOrDefault();
5252

5353
if (keyCounter != null)
5454
{
@@ -69,7 +69,7 @@ public CatchLegacySkinTransformer(ISkin skin)
6969
Children = new Drawable[]
7070
{
7171
new LegacyKeyCounterDisplay(),
72-
new SkinnableSpectatorList(),
72+
new SpectatorList(),
7373
}
7474
};
7575
}

osu.Game.Rulesets.Mania/Skinning/Argon/ManiaArgonSkinTransformer.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public ManiaArgonSkinTransformer(ISkin skin, IBeatmap beatmap)
4141
return new DefaultSkinComponentsContainer(container =>
4242
{
4343
var combo = container.ChildrenOfType<ArgonManiaComboCounter>().FirstOrDefault();
44-
var spectatorList = container.OfType<SkinnableSpectatorList>().FirstOrDefault();
44+
var spectatorList = container.OfType<SpectatorList>().FirstOrDefault();
4545

4646
if (combo != null)
4747
{
@@ -56,7 +56,7 @@ public ManiaArgonSkinTransformer(ISkin skin, IBeatmap beatmap)
5656
})
5757
{
5858
new ArgonManiaComboCounter(),
59-
new SkinnableSpectatorList
59+
new SpectatorList
6060
{
6161
Anchor = Anchor.BottomLeft,
6262
Origin = Anchor.BottomLeft,

osu.Game.Rulesets.Mania/Skinning/Legacy/ManiaLegacySkinTransformer.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public override Drawable GetDrawableComponent(ISkinComponentLookup lookup)
9797
return new DefaultSkinComponentsContainer(container =>
9898
{
9999
var combo = container.ChildrenOfType<LegacyManiaComboCounter>().FirstOrDefault();
100-
var spectatorList = container.OfType<SkinnableSpectatorList>().FirstOrDefault();
100+
var spectatorList = container.OfType<SpectatorList>().FirstOrDefault();
101101

102102
if (combo != null)
103103
{
@@ -115,7 +115,7 @@ public override Drawable GetDrawableComponent(ISkinComponentLookup lookup)
115115
})
116116
{
117117
new LegacyManiaComboCounter(),
118-
new SkinnableSpectatorList(),
118+
new SpectatorList(),
119119
};
120120
}
121121

osu.Game.Rulesets.Osu/Skinning/Legacy/OsuLegacySkinTransformer.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public OsuLegacySkinTransformer(ISkin skin)
7171
}
7272

7373
var combo = container.OfType<LegacyDefaultComboCounter>().FirstOrDefault();
74-
var spectatorList = container.OfType<SkinnableSpectatorList>().FirstOrDefault();
74+
var spectatorList = container.OfType<SpectatorList>().FirstOrDefault();
7575

7676
Vector2 pos = new Vector2();
7777

@@ -96,7 +96,7 @@ public OsuLegacySkinTransformer(ISkin skin)
9696
{
9797
new LegacyDefaultComboCounter(),
9898
new LegacyKeyCounterDisplay(),
99-
new SkinnableSpectatorList(),
99+
new SpectatorList(),
100100
}
101101
};
102102
}
Binary file not shown.

osu.Game.Tests/Visual/Gameplay/TestSceneSpectatorList.cs

+33-14
Original file line numberDiff line numberDiff line change
@@ -6,53 +6,72 @@
66
using osu.Framework.Bindables;
77
using osu.Framework.Graphics;
88
using osu.Framework.Utils;
9+
using osu.Game.Beatmaps;
910
using osu.Game.Graphics;
1011
using osu.Game.Online.Spectator;
12+
using osu.Game.Rulesets.Osu;
13+
using osu.Game.Rulesets.Osu.Scoring;
1114
using osu.Game.Screens.Play;
1215
using osu.Game.Screens.Play.HUD;
16+
using osu.Game.Tests.Visual.Spectator;
1317

1418
namespace osu.Game.Tests.Visual.Gameplay
1519
{
1620
[TestFixture]
1721
public partial class TestSceneSpectatorList : OsuTestScene
1822
{
19-
private readonly BindableList<SpectatorUser> spectators = new BindableList<SpectatorUser>();
20-
private readonly Bindable<LocalUserPlayingState> localUserPlayingState = new Bindable<LocalUserPlayingState>();
21-
2223
private int counter;
2324

2425
[Test]
2526
public void TestBasics()
2627
{
2728
SpectatorList list = null!;
28-
AddStep("create spectator list", () => Child = list = new SpectatorList
29+
Bindable<LocalUserPlayingState> playingState = new Bindable<LocalUserPlayingState>();
30+
GameplayState gameplayState = new GameplayState(new Beatmap(), new OsuRuleset(), healthProcessor: new OsuHealthProcessor(0), localUserPlayingState: playingState);
31+
TestSpectatorClient client = new TestSpectatorClient();
32+
33+
AddStep("create spectator list", () =>
2934
{
30-
Anchor = Anchor.Centre,
31-
Origin = Anchor.Centre,
32-
Spectators = { BindTarget = spectators },
33-
UserPlayingState = { BindTarget = localUserPlayingState }
35+
Children = new Drawable[]
36+
{
37+
client,
38+
new DependencyProvidingContainer
39+
{
40+
RelativeSizeAxes = Axes.Both,
41+
CachedDependencies =
42+
[
43+
(typeof(GameplayState), gameplayState),
44+
(typeof(SpectatorClient), client)
45+
],
46+
Child = list = new SpectatorList
47+
{
48+
Anchor = Anchor.Centre,
49+
Origin = Anchor.Centre,
50+
}
51+
}
52+
};
3453
});
3554

36-
AddStep("start playing", () => localUserPlayingState.Value = LocalUserPlayingState.Playing);
55+
AddStep("start playing", () => playingState.Value = LocalUserPlayingState.Playing);
3756

3857
AddRepeatStep("add a user", () =>
3958
{
4059
int id = Interlocked.Increment(ref counter);
41-
spectators.Add(new SpectatorUser
60+
((ISpectatorClient)client).UserStartedWatching([new SpectatorUser
4261
{
4362
OnlineID = id,
4463
Username = $"User {id}"
45-
});
64+
}]);
4665
}, 10);
4766

48-
AddRepeatStep("remove random user", () => spectators.RemoveAt(RNG.Next(0, spectators.Count)), 5);
67+
AddRepeatStep("remove random user", () => ((ISpectatorClient)client).UserEndedWatching(client.WatchingUsers[RNG.Next(client.WatchingUsers.Count)].OnlineID), 5);
4968

5069
AddStep("change font to venera", () => list.Font.Value = Typeface.Venera);
5170
AddStep("change font to torus", () => list.Font.Value = Typeface.Torus);
5271
AddStep("change header colour", () => list.HeaderColour.Value = new Colour4(RNG.NextSingle(), RNG.NextSingle(), RNG.NextSingle(), 1));
5372

54-
AddStep("enter break", () => localUserPlayingState.Value = LocalUserPlayingState.Break);
55-
AddStep("stop playing", () => localUserPlayingState.Value = LocalUserPlayingState.NotPlaying);
73+
AddStep("enter break", () => playingState.Value = LocalUserPlayingState.Break);
74+
AddStep("stop playing", () => playingState.Value = LocalUserPlayingState.NotPlaying);
5675
}
5776
}
5877
}

osu.Game/Screens/Play/HUD/SpectatorList.cs

+5-12
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
namespace osu.Game.Screens.Play.HUD
2626
{
27-
public partial class SpectatorList : CompositeDrawable
27+
public partial class SpectatorList : CompositeDrawable, ISerialisableDrawable
2828
{
2929
private const int max_spectators_displayed = 10;
3030

@@ -44,7 +44,7 @@ public partial class SpectatorList : CompositeDrawable
4444
private DrawablePool<SpectatorListEntry> pool = null!;
4545

4646
[BackgroundDependencyLoader]
47-
private void load(OsuColour colours)
47+
private void load(OsuColour colours, SpectatorClient client, GameplayState gameplayState)
4848
{
4949
AutoSizeAxes = Axes.Y;
5050

@@ -73,6 +73,9 @@ private void load(OsuColour colours)
7373
};
7474

7575
HeaderColour.Value = Header.Colour;
76+
77+
((IBindableList<SpectatorUser>)Spectators).BindTo(client.WatchingUsers);
78+
((IBindable<LocalUserPlayingState>)UserPlayingState).BindTo(gameplayState.PlayingState);
7679
}
7780

7881
protected override void LoadComplete()
@@ -236,17 +239,7 @@ private void updateEnabledState()
236239
linkCompiler.Enabled.Value = UserPlayingState.Value != LocalUserPlayingState.Playing;
237240
}
238241
}
239-
}
240242

241-
public partial class SkinnableSpectatorList : SpectatorList, ISerialisableDrawable
242-
{
243243
public bool UsesFixedAnchor { get; set; }
244-
245-
[BackgroundDependencyLoader]
246-
private void load(SpectatorClient client, GameplayState gameplayState)
247-
{
248-
((IBindableList<SpectatorUser>)Spectators).BindTo(client.WatchingUsers);
249-
((IBindable<LocalUserPlayingState>)UserPlayingState).BindTo(gameplayState.PlayingState);
250-
}
251244
}
252245
}

osu.Game/Skinning/ArgonSkin.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public ArgonSkin(SkinInfo skin, IStorageResourceProvider resources)
112112
return new DefaultSkinComponentsContainer(container =>
113113
{
114114
var comboCounter = container.OfType<ArgonComboCounter>().FirstOrDefault();
115-
var spectatorList = container.OfType<SkinnableSpectatorList>().FirstOrDefault();
115+
var spectatorList = container.OfType<SpectatorList>().FirstOrDefault();
116116

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

@@ -135,7 +135,7 @@ public ArgonSkin(SkinInfo skin, IStorageResourceProvider resources)
135135
Origin = Anchor.BottomLeft,
136136
Scale = new Vector2(1.3f),
137137
},
138-
new SkinnableSpectatorList
138+
new SpectatorList
139139
{
140140
Anchor = Anchor.BottomLeft,
141141
Origin = Anchor.BottomLeft,

osu.Game/Skinning/LegacySkin.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ protected override void ParseConfigurationStream(Stream stream)
367367
return new DefaultSkinComponentsContainer(container =>
368368
{
369369
var combo = container.OfType<LegacyDefaultComboCounter>().FirstOrDefault();
370-
var spectatorList = container.OfType<SkinnableSpectatorList>().FirstOrDefault();
370+
var spectatorList = container.OfType<SpectatorList>().FirstOrDefault();
371371

372372
Vector2 pos = new Vector2();
373373

@@ -389,7 +389,7 @@ protected override void ParseConfigurationStream(Stream stream)
389389
})
390390
{
391391
new LegacyDefaultComboCounter(),
392-
new SkinnableSpectatorList(),
392+
new SpectatorList(),
393393
};
394394
}
395395

osu.Game/Skinning/TrianglesSkin.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ public TrianglesSkin(SkinInfo skin, IStorageResourceProvider resources)
9191
var ppCounter = container.OfType<PerformancePointsCounter>().FirstOrDefault();
9292
var songProgress = container.OfType<DefaultSongProgress>().FirstOrDefault();
9393
var keyCounter = container.OfType<DefaultKeyCounterDisplay>().FirstOrDefault();
94-
var spectatorList = container.OfType<SkinnableSpectatorList>().FirstOrDefault();
94+
var spectatorList = container.OfType<SpectatorList>().FirstOrDefault();
9595

9696
if (score != null)
9797
{
@@ -177,7 +177,7 @@ public TrianglesSkin(SkinInfo skin, IStorageResourceProvider resources)
177177
new BarHitErrorMeter(),
178178
new BarHitErrorMeter(),
179179
new TrianglesPerformancePointsCounter(),
180-
new SkinnableSpectatorList(),
180+
new SpectatorList(),
181181
}
182182
};
183183

0 commit comments

Comments
 (0)