mirror of
https://github.com/ppy/osu.git
synced 2025-03-15 15:27:20 +08:00
Added ModsContainer
This commit is contained in:
parent
00a8dbbacf
commit
7e1efcc20b
@ -27,6 +27,7 @@ namespace osu.Game.Rulesets.UI
|
||||
public readonly RollingCounter<double> AccuracyCounter;
|
||||
public readonly HealthDisplay HealthDisplay;
|
||||
public readonly SongProgress Progress;
|
||||
public readonly ModsContainer ModsContainer;
|
||||
|
||||
private Bindable<bool> showKeyCounter;
|
||||
private Bindable<bool> showHud;
|
||||
@ -39,6 +40,7 @@ namespace osu.Game.Rulesets.UI
|
||||
protected abstract ScoreCounter CreateScoreCounter();
|
||||
protected abstract HealthDisplay CreateHealthDisplay();
|
||||
protected abstract SongProgress CreateProgress();
|
||||
protected abstract ModsContainer CreateModsContainer();
|
||||
|
||||
protected HudOverlay()
|
||||
{
|
||||
@ -56,6 +58,7 @@ namespace osu.Game.Rulesets.UI
|
||||
AccuracyCounter = CreateAccuracyCounter(),
|
||||
HealthDisplay = CreateHealthDisplay(),
|
||||
Progress = CreateProgress(),
|
||||
ModsContainer = CreateModsContainer(),
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -64,7 +64,15 @@ namespace osu.Game.Rulesets.UI
|
||||
RelativeSizeAxes = Axes.X,
|
||||
};
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
protected override ModsContainer CreateModsContainer() => new ModsContainer
|
||||
{
|
||||
Anchor = Anchor.TopRight,
|
||||
Origin = Anchor.TopRight,
|
||||
AutoSizeAxes = Axes.Both,
|
||||
Position = new Vector2(0, 30),
|
||||
};
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
private void load(OsuColour colours)
|
||||
{
|
||||
ComboCounter.AccentColour = colours.BlueLighter;
|
||||
|
88
osu.Game/Screens/Play/ModsContainer.cs
Normal file
88
osu.Game/Screens/Play/ModsContainer.cs
Normal file
@ -0,0 +1,88 @@
|
||||
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
|
||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||
|
||||
using osu.Framework.Graphics.Containers;
|
||||
using osu.Game.Rulesets.Mods;
|
||||
using osu.Game.Rulesets.UI;
|
||||
using osu.Framework.Graphics;
|
||||
using OpenTK.Graphics;
|
||||
using osu.Game.Graphics;
|
||||
using osu.Framework.Allocation;
|
||||
using osu.Game.Graphics.Sprites;
|
||||
|
||||
namespace osu.Game.Screens.Play
|
||||
{
|
||||
public class ModsContainer : Container
|
||||
{
|
||||
private readonly FillFlowContainer<ModIcon> iconsContainer;
|
||||
|
||||
private bool showMods;
|
||||
public bool ShowMods
|
||||
{
|
||||
get { return showMods; }
|
||||
set
|
||||
{
|
||||
if (showMods == value) return;
|
||||
|
||||
showMods = value;
|
||||
}
|
||||
}
|
||||
|
||||
public ModsContainer()
|
||||
{
|
||||
Children = new Drawable[]
|
||||
{
|
||||
iconsContainer = new FillFlowContainer<ModIcon>
|
||||
{
|
||||
Anchor = Anchor.TopRight,
|
||||
Origin = Anchor.TopRight,
|
||||
AutoSizeAxes = Axes.Both,
|
||||
Direction = FillDirection.Horizontal,
|
||||
},
|
||||
new OsuSpriteText
|
||||
{
|
||||
Anchor = Anchor.BottomCentre,
|
||||
Origin = Anchor.TopCentre,
|
||||
Text = @"/UNRANKED/",
|
||||
Font = @"Venera",
|
||||
TextSize = 15,
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public void Add(Mod mod)
|
||||
{
|
||||
iconsContainer.Add(new ModIcon
|
||||
{
|
||||
AutoSizeAxes = Axes.Both,
|
||||
Icon = mod.Icon,
|
||||
Colour = selectColour(mod),
|
||||
IconSize = 60,
|
||||
});
|
||||
}
|
||||
|
||||
private Color4 selectColour(Mod mod)
|
||||
{
|
||||
switch (mod.Type)
|
||||
{
|
||||
case ModType.DifficultyIncrease:
|
||||
return OsuColour.FromHex(@"ffcc22");
|
||||
case ModType.DifficultyReduction:
|
||||
return OsuColour.FromHex(@"88b300");
|
||||
case ModType.Special:
|
||||
return OsuColour.FromHex(@"66ccff");
|
||||
|
||||
default: return Color4.White;
|
||||
}
|
||||
}
|
||||
|
||||
[BackgroundDependencyLoader]
|
||||
private void load()
|
||||
{
|
||||
if (ShowMods)
|
||||
Show();
|
||||
else
|
||||
Hide();
|
||||
}
|
||||
}
|
||||
}
|
@ -169,6 +169,10 @@ namespace osu.Game.Screens.Play
|
||||
hudOverlay.Progress.AllowSeeking = HitRenderer.HasReplayLoaded;
|
||||
hudOverlay.Progress.OnSeek = pos => decoupledClock.Seek(pos);
|
||||
|
||||
hudOverlay.ModsContainer.ShowMods = HitRenderer.HasReplayLoaded;
|
||||
foreach (var mod in Beatmap.Mods.Value)
|
||||
hudOverlay.ModsContainer.Add(mod);
|
||||
|
||||
//bind HitRenderer to ScoreProcessor and ourselves (for a pass situation)
|
||||
HitRenderer.OnAllJudged += onCompletion;
|
||||
|
||||
|
@ -227,6 +227,7 @@
|
||||
<Compile Include="Screens\Charts\ChartInfo.cs" />
|
||||
<Compile Include="Screens\Edit\Editor.cs" />
|
||||
<Compile Include="Screens\Play\HotkeyRetryOverlay.cs" />
|
||||
<Compile Include="Screens\Play\ModsContainer.cs" />
|
||||
<Compile Include="Screens\Play\SquareGraph.cs" />
|
||||
<Compile Include="Screens\Ranking\ResultsPage.cs" />
|
||||
<Compile Include="Screens\Ranking\ResultsPageRanking.cs" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user