1
0
mirror of https://github.com/ppy/osu.git synced 2026-06-10 01:33:39 +08:00
Files
osu-lazer/osu.Game/Screens/OnlinePlay/Matchmaking/Match/MatchmakingChatDisplay.cs
T
2025-12-06 17:50:58 +09:00

91 lines
2.8 KiB
C#

// 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.Graphics;
using osu.Framework.Graphics.Transforms;
using osu.Framework.Input.Bindings;
using osu.Framework.Input.Events;
using osu.Game.Input;
using osu.Game.Input.Bindings;
using osu.Game.Online.Rooms;
using osu.Game.Resources.Localisation.Web;
using osu.Game.Screens.OnlinePlay.Match.Components;
namespace osu.Game.Screens.OnlinePlay.Matchmaking.Match
{
public partial class MatchmakingChatDisplay : MatchChatDisplay, IKeyBindingHandler<GlobalAction>
{
protected new ChatTextBox TextBox => base.TextBox!;
public MatchmakingChatDisplay(Room room, bool leaveChannelOnDispose = true)
: base(room, leaveChannelOnDispose)
{
}
[BackgroundDependencyLoader]
private void load(RealmKeyBindingStore keyBindingStore)
{
resetPlaceholderText();
TextBox.HoldFocus = false;
TextBox.ReleaseFocusOnCommit = false;
TextBox.Focus = () => TextBox.PlaceholderText = ChatStrings.InputPlaceholder;
TextBox.FocusLost = resetPlaceholderText;
void resetPlaceholderText() => TextBox.PlaceholderText = Localisation.ChatStrings.InGameInputPlaceholder(keyBindingStore.GetBindingsStringFor(GlobalAction.ToggleChatFocus));
}
public bool OnPressed(KeyBindingPressEvent<GlobalAction> e)
{
switch (e.Action)
{
case GlobalAction.Back:
if (TextBox.HasFocus)
{
Schedule(() => TextBox.KillFocus());
return true;
}
break;
case GlobalAction.ToggleChatFocus:
if (TextBox.HasFocus)
{
Schedule(() => TextBox.KillFocus());
}
else
{
Schedule(() => TextBox.TakeFocus());
}
return true;
}
return false;
}
public void OnReleased(KeyBindingReleaseEvent<GlobalAction> e)
{
}
public void Appear()
{
FinishTransforms();
this.MoveToY(150f)
.FadeOut()
.MoveToY(0f, 240, Easing.OutCubic)
.FadeIn(240, Easing.OutCubic);
}
public TransformSequence<MatchmakingChatDisplay> Disappear()
{
FinishTransforms();
return this.FadeOut(240, Easing.InOutCubic)
.MoveToY(150f, 240, Easing.InOutCubic);
}
}
}