// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence. // See the LICENCE file in the repository root for full licence text. using osu.Framework.Graphics; using osu.Game.Graphics.Containers; using osu.Framework.Bindables; using osu.Framework.Graphics.Sprites; using osuTK; using osu.Framework.Allocation; namespace osu.Game.Overlays.Comments.Buttons { public partial class ChevronButton : OsuHoverContainer { public readonly BindableBool Expanded = new BindableBool(true); private readonly SpriteIcon icon; public ChevronButton() { Size = new Vector2(40, 22); Child = icon = new SpriteIcon { Anchor = Anchor.Centre, Origin = Anchor.Centre, Size = new Vector2(12), Icon = FontAwesome.Solid.ChevronDown }; } [BackgroundDependencyLoader] private void load(OverlayColourProvider colourProvider) { IdleColour = HoverColour = colourProvider.Foreground1; } protected override void LoadComplete() { base.LoadComplete(); Action = Expanded.Toggle; Expanded.BindValueChanged(onExpandedChanged, true); FinishTransforms(true); } private void onExpandedChanged(ValueChangedEvent expanded) { icon.ScaleTo(expanded.NewValue ? new Vector2(1f, -1f) : Vector2.One, 300, Easing.OutQuint); } } }