osu/osu.Game/Rulesets/UI/ModIcon.cs

94 lines
2.6 KiB
C#
Raw Normal View History

2017-03-08 06:50:52 +00:00
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
2017-02-16 20:05:03 +00:00
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using System;
2017-02-16 20:05:03 +00:00
using OpenTK.Graphics;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Graphics;
2017-05-03 06:48:10 +00:00
using osu.Game.Rulesets.Mods;
2017-02-16 20:05:03 +00:00
2017-04-18 07:05:58 +00:00
namespace osu.Game.Rulesets.UI
2017-02-16 20:05:03 +00:00
{
public class ModIcon : Container
{
private readonly TextAwesome modIcon;
private readonly TextAwesome background;
2017-02-16 20:05:03 +00:00
private float iconSize = 80;
public float IconSize
{
get
{
return iconSize;
}
set
{
iconSize = value;
reapplySize();
}
}
2017-03-06 09:14:41 +00:00
public new Color4 Colour
2017-02-16 20:05:03 +00:00
{
2017-05-03 10:53:45 +00:00
get { return background.Colour; }
2017-05-03 06:48:10 +00:00
set { background.Colour = value; }
2017-02-16 20:05:03 +00:00
}
2017-02-16 20:05:03 +00:00
public FontAwesome Icon
{
2017-05-03 06:48:10 +00:00
get { return modIcon.Icon; }
set { modIcon.Icon = value; }
}
2017-05-04 14:29:52 +00:00
public ModIcon(Mod mod)
2017-05-03 06:48:10 +00:00
{
if (mod == null) throw new ArgumentNullException(nameof(mod));
2017-05-03 10:53:45 +00:00
Children = new Drawable[]
2017-02-16 20:05:03 +00:00
{
2017-05-03 10:53:45 +00:00
background = new TextAwesome
2017-05-03 06:48:10 +00:00
{
2017-05-03 10:53:45 +00:00
Origin = Anchor.Centre,
Anchor = Anchor.Centre,
Icon = FontAwesome.fa_osu_mod_bg,
2017-05-04 14:29:52 +00:00
Colour = getBackgroundColourFromMod(mod),
2017-05-03 10:53:45 +00:00
Shadow = true,
TextSize = 20
},
modIcon = new TextAwesome
{
Origin = Anchor.Centre,
Anchor = Anchor.Centre,
Colour = OsuColour.Gray(84),
TextSize = 20,
Icon = mod.Icon
2017-05-03 10:53:45 +00:00
},
};
2017-05-03 06:48:10 +00:00
2017-05-03 10:53:45 +00:00
reapplySize();
2017-02-16 20:05:03 +00:00
}
private void reapplySize()
{
background.TextSize = iconSize;
modIcon.TextSize = iconSize - 35;
}
2017-05-04 14:29:52 +00:00
private Color4 getBackgroundColourFromMod(Mod mod)
2017-02-16 20:05:03 +00:00
{
switch (mod.Type)
2017-02-16 20:05:03 +00:00
{
2017-05-03 06:48:10 +00:00
case ModType.DifficultyIncrease:
return OsuColour.FromHex(@"ffcc22");
case ModType.DifficultyReduction:
return OsuColour.FromHex(@"88b300");
case ModType.Special:
return OsuColour.FromHex(@"66ccff");
2017-02-16 20:05:03 +00:00
2017-05-03 06:48:10 +00:00
default: return Color4.White;
}
2017-02-16 20:05:03 +00:00
}
}
}