mirror of
https://github.com/osukey/osukey.git
synced 2025-07-01 16:29:58 +09:00
Refactor colour selection.
This commit is contained in:
@ -55,7 +55,7 @@ namespace osu.Game.Overlays.Mods
|
|||||||
|
|
||||||
iconsContainer.RotateTo(Selected ? 5f : 0f, 300, EasingTypes.OutElastic);
|
iconsContainer.RotateTo(Selected ? 5f : 0f, 300, EasingTypes.OutElastic);
|
||||||
iconsContainer.ScaleTo(Selected ? 1.1f : 1f, 300, EasingTypes.OutElastic);
|
iconsContainer.ScaleTo(Selected ? 1.1f : 1f, 300, EasingTypes.OutElastic);
|
||||||
foregroundIcon.Colour = Selected ? SelectedColour : ButtonColour;
|
foregroundIcon.Highlighted = Selected;
|
||||||
|
|
||||||
if (mod != null)
|
if (mod != null)
|
||||||
displayMod(SelectedMod ?? Mods[0]);
|
displayMod(SelectedMod ?? Mods[0]);
|
||||||
@ -64,12 +64,6 @@ namespace osu.Game.Overlays.Mods
|
|||||||
|
|
||||||
public bool Selected => selectedIndex != -1;
|
public bool Selected => selectedIndex != -1;
|
||||||
|
|
||||||
private Color4 buttonColour;
|
|
||||||
public Color4 ButtonColour
|
|
||||||
{
|
|
||||||
get { return buttonColour; }
|
|
||||||
set { buttonColour = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
private Color4 selectedColour;
|
private Color4 selectedColour;
|
||||||
public Color4 SelectedColour
|
public Color4 SelectedColour
|
||||||
@ -198,8 +192,6 @@ namespace osu.Game.Overlays.Mods
|
|||||||
AutoSizeAxes = Axes.Both,
|
AutoSizeAxes = Axes.Both,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
buttonColour = foregroundIcon.Colour;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ModButton(Mod mod)
|
public ModButton(Mod mod)
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
@ -17,65 +18,86 @@ namespace osu.Game.Rulesets.UI
|
|||||||
|
|
||||||
private const float icon_size = 80;
|
private const float icon_size = 80;
|
||||||
|
|
||||||
public new Color4 Colour
|
|
||||||
{
|
|
||||||
get { return background.Colour; }
|
|
||||||
set { background.Colour = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public FontAwesome Icon
|
public FontAwesome Icon
|
||||||
{
|
{
|
||||||
get { return modIcon.Icon; }
|
get { return modIcon.Icon; }
|
||||||
set { modIcon.Icon = value; }
|
set { modIcon.Icon = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ModType type;
|
||||||
|
|
||||||
public ModIcon(Mod mod)
|
public ModIcon(Mod mod)
|
||||||
{
|
{
|
||||||
if (mod == null) throw new ArgumentNullException(nameof(mod));
|
if (mod == null) throw new ArgumentNullException(nameof(mod));
|
||||||
|
|
||||||
|
type = mod.Type;
|
||||||
|
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
background = new TextAwesome
|
background = new TextAwesome
|
||||||
{
|
{
|
||||||
Origin = Anchor.Centre,
|
Origin = Anchor.Centre,
|
||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
||||||
|
TextSize = icon_size,
|
||||||
Icon = FontAwesome.fa_osu_mod_bg,
|
Icon = FontAwesome.fa_osu_mod_bg,
|
||||||
Colour = getBackgroundColourFromMod(mod),
|
|
||||||
Shadow = true,
|
Shadow = true,
|
||||||
TextSize = 20
|
|
||||||
},
|
},
|
||||||
modIcon = new TextAwesome
|
modIcon = new TextAwesome
|
||||||
{
|
{
|
||||||
Origin = Anchor.Centre,
|
Origin = Anchor.Centre,
|
||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
||||||
Colour = OsuColour.Gray(84),
|
Colour = OsuColour.Gray(84),
|
||||||
TextSize = 20,
|
TextSize = icon_size - 35,
|
||||||
Icon = mod.Icon
|
Icon = mod.Icon
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
reapplySize();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void reapplySize()
|
private Color4 backgroundColour;
|
||||||
{
|
private Color4 highlightedColour;
|
||||||
background.TextSize = icon_size;
|
|
||||||
modIcon.TextSize = icon_size - 35;
|
|
||||||
}
|
|
||||||
|
|
||||||
private Color4 getBackgroundColourFromMod(Mod mod)
|
[BackgroundDependencyLoader]
|
||||||
|
private void load(OsuColour colours)
|
||||||
{
|
{
|
||||||
switch (mod.Type)
|
switch (type)
|
||||||
{
|
{
|
||||||
|
default:
|
||||||
case ModType.DifficultyIncrease:
|
case ModType.DifficultyIncrease:
|
||||||
return OsuColour.FromHex(@"ffcc22");
|
backgroundColour = colours.Yellow;
|
||||||
|
highlightedColour = colours.YellowLight;
|
||||||
|
break;
|
||||||
case ModType.DifficultyReduction:
|
case ModType.DifficultyReduction:
|
||||||
return OsuColour.FromHex(@"88b300");
|
backgroundColour = colours.Green;
|
||||||
|
highlightedColour = colours.GreenLight;
|
||||||
|
break;
|
||||||
case ModType.Special:
|
case ModType.Special:
|
||||||
return OsuColour.FromHex(@"66ccff");
|
backgroundColour = colours.Blue;
|
||||||
|
highlightedColour = colours.BlueLight;
|
||||||
default: return Color4.White;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
applyStyle();
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool highlighted;
|
||||||
|
|
||||||
|
public bool Highlighted
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return highlighted;
|
||||||
|
}
|
||||||
|
|
||||||
|
set
|
||||||
|
{
|
||||||
|
highlighted = value;
|
||||||
|
applyStyle();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void applyStyle()
|
||||||
|
{
|
||||||
|
background.Colour = highlighted ? highlightedColour : backgroundColour;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user