// 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.Bindables; using osu.Framework.Graphics.Containers; namespace osu.Game.Screens.Play.HUD { /// /// An individual key display which is intended to be displayed within a . /// public abstract partial class KeyCounter : Container { /// /// The which activates and deactivates this . /// public readonly InputTrigger Trigger; /// /// The current count of registered key presses. /// public IBindable CountPresses => Trigger.ActivationCount; /// /// Whether this is currently in the "activated" state because the associated key is currently pressed. /// public IBindable IsActive => isActive; private readonly Bindable isActive = new BindableBool(); protected KeyCounter(InputTrigger trigger) { Trigger = trigger; Trigger.OnActivate += Activate; Trigger.OnDeactivate += Deactivate; } protected virtual void Activate(bool forwardPlayback = true) { isActive.Value = true; } protected virtual void Deactivate(bool forwardPlayback = true) { isActive.Value = false; } protected override void Dispose(bool isDisposing) { base.Dispose(isDisposing); Trigger.OnActivate -= Activate; Trigger.OnDeactivate -= Deactivate; } } }