1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-16 21:42:55 +08:00
osu-lazer/osu.Game.Rulesets.Catch/Skinning/LegacyFruitPiece.cs

84 lines
2.9 KiB
C#
Raw Normal View History

2020-02-17 18:06:08 +08:00
// 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 osu.Framework.Allocation;
using osu.Framework.Bindables;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using osu.Game.Rulesets.Catch.Objects.Drawables;
2020-04-14 09:38:18 +08:00
using osu.Game.Rulesets.Catch.UI;
2020-02-17 18:06:08 +08:00
using osu.Game.Rulesets.Objects.Drawables;
using osu.Game.Skinning;
using osuTK;
2020-02-17 18:06:08 +08:00
using osuTK.Graphics;
namespace osu.Game.Rulesets.Catch.Skinning
{
internal class LegacyFruitPiece : CompositeDrawable
{
private readonly string lookupName;
2020-11-30 18:56:12 +08:00
private readonly Bindable<Color4> accentColour = new Bindable<Color4>();
private readonly Bindable<bool> hyperDash = new Bindable<bool>();
private Sprite colouredSprite;
2020-02-17 18:06:08 +08:00
public LegacyFruitPiece(string lookupName)
{
this.lookupName = lookupName;
RelativeSizeAxes = Axes.Both;
}
[BackgroundDependencyLoader]
private void load(DrawableHitObject drawableObject, ISkinSource skin)
{
2020-11-25 07:07:59 +08:00
var drawableCatchObject = (DrawablePalpableCatchHitObject)drawableObject;
2020-02-17 18:06:08 +08:00
accentColour.BindTo(drawableCatchObject.AccentColour);
2020-11-30 18:56:12 +08:00
hyperDash.BindTo(drawableCatchObject.HyperDash);
2020-02-17 18:06:08 +08:00
InternalChildren = new Drawable[]
{
colouredSprite = new Sprite
2020-02-17 18:06:08 +08:00
{
Texture = skin.GetTexture(lookupName),
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
},
new Sprite
{
Texture = skin.GetTexture($"{lookupName}-overlay"),
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
},
};
2020-11-30 18:56:12 +08:00
if (hyperDash.Value)
{
2020-11-30 18:56:12 +08:00
var hyperDashOverlay = new Sprite
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
Blending = BlendingParameters.Additive,
Depth = 1,
Alpha = 0.7f,
2020-04-14 09:38:18 +08:00
Scale = new Vector2(1.2f),
Texture = skin.GetTexture(lookupName),
Colour = skin.GetConfig<CatchSkinColour, Color4>(CatchSkinColour.HyperDashFruit)?.Value ??
skin.GetConfig<CatchSkinColour, Color4>(CatchSkinColour.HyperDash)?.Value ??
Catcher.DEFAULT_HYPER_DASH_COLOUR,
};
2020-11-30 18:56:12 +08:00
AddInternal(hyperDashOverlay);
}
2020-02-17 18:06:08 +08:00
}
protected override void LoadComplete()
{
base.LoadComplete();
2020-08-25 14:16:41 +08:00
accentColour.BindValueChanged(colour => colouredSprite.Colour = LegacyColourCompatibility.DisallowZeroAlpha(colour.NewValue), true);
}
2020-02-17 18:06:08 +08:00
}
}