mirror of
https://github.com/osukey/osukey.git
synced 2025-08-03 22:56:36 +09:00
Merge branch 'master' into fix-social-overlay-performance
This commit is contained in:
@ -25,6 +25,8 @@ namespace osu.Game.Users
|
||||
|
||||
public Bindable<UserStatus> Status = new Bindable<UserStatus>();
|
||||
|
||||
public IBindable<UserActivity> Activity = new Bindable<UserActivity>();
|
||||
|
||||
//public Team Team;
|
||||
|
||||
[JsonProperty(@"profile_colour")]
|
||||
|
68
osu.Game/Users/UserActivity.cs
Normal file
68
osu.Game/Users/UserActivity.cs
Normal file
@ -0,0 +1,68 @@
|
||||
// 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.Game.Beatmaps;
|
||||
using osu.Game.Graphics;
|
||||
using osuTK.Graphics;
|
||||
|
||||
namespace osu.Game.Users
|
||||
{
|
||||
public abstract class UserActivity
|
||||
{
|
||||
public abstract string Status { get; }
|
||||
public virtual Color4 GetAppropriateColour(OsuColour colours) => colours.GreenDarker;
|
||||
|
||||
public class Modding : UserActivity
|
||||
{
|
||||
public override string Status => "Modding a map";
|
||||
public override Color4 GetAppropriateColour(OsuColour colours) => colours.PurpleDark;
|
||||
}
|
||||
|
||||
public class ChoosingBeatmap : UserActivity
|
||||
{
|
||||
public override string Status => "Choosing a beatmap";
|
||||
}
|
||||
|
||||
public class MultiplayerGame : UserActivity
|
||||
{
|
||||
public override string Status => "Playing with others";
|
||||
}
|
||||
|
||||
public class Editing : UserActivity
|
||||
{
|
||||
public BeatmapInfo Beatmap { get; }
|
||||
|
||||
public Editing(BeatmapInfo info)
|
||||
{
|
||||
Beatmap = info;
|
||||
}
|
||||
|
||||
public override string Status => @"Editing a beatmap";
|
||||
}
|
||||
|
||||
public class SoloGame : UserActivity
|
||||
{
|
||||
public BeatmapInfo Beatmap { get; }
|
||||
|
||||
public Rulesets.RulesetInfo Ruleset { get; }
|
||||
|
||||
public SoloGame(BeatmapInfo info, Rulesets.RulesetInfo ruleset)
|
||||
{
|
||||
Beatmap = info;
|
||||
Ruleset = ruleset;
|
||||
}
|
||||
|
||||
public override string Status => @"Playing alone";
|
||||
}
|
||||
|
||||
public class Spectating : UserActivity
|
||||
{
|
||||
public override string Status => @"Spectating a game";
|
||||
}
|
||||
|
||||
public class InLobby : UserActivity
|
||||
{
|
||||
public override string Status => @"In a Multiplayer Lobby";
|
||||
}
|
||||
}
|
||||
}
|
@ -30,6 +30,9 @@ namespace osu.Game.Users
|
||||
private const float content_padding = 10;
|
||||
private const float status_height = 30;
|
||||
|
||||
[Resolved(canBeNull: true)]
|
||||
private OsuColour colours { get; set; }
|
||||
|
||||
private Container statusBar;
|
||||
private Box statusBg;
|
||||
private OsuSpriteText statusMessage;
|
||||
@ -39,6 +42,8 @@ namespace osu.Game.Users
|
||||
|
||||
public readonly Bindable<UserStatus> Status = new Bindable<UserStatus>();
|
||||
|
||||
public readonly IBindable<UserActivity> Activity = new Bindable<UserActivity>();
|
||||
|
||||
public new Action Action;
|
||||
|
||||
protected Action ViewProfile;
|
||||
@ -54,7 +59,7 @@ namespace osu.Game.Users
|
||||
}
|
||||
|
||||
[BackgroundDependencyLoader(permitNulls: true)]
|
||||
private void load(OsuColour colours, UserProfileOverlay profile)
|
||||
private void load(UserProfileOverlay profile)
|
||||
{
|
||||
if (colours == null)
|
||||
throw new ArgumentNullException(nameof(colours));
|
||||
@ -194,8 +199,8 @@ namespace osu.Game.Users
|
||||
});
|
||||
}
|
||||
|
||||
Status.ValueChanged += status => displayStatus(status.NewValue);
|
||||
Status.ValueChanged += status => statusBg.FadeColour(status.NewValue?.GetAppropriateColour(colours) ?? colours.Gray5, 500, Easing.OutQuint);
|
||||
Status.ValueChanged += status => displayStatus(status.NewValue, Activity.Value);
|
||||
Activity.ValueChanged += activity => displayStatus(Status.Value, activity.NewValue);
|
||||
|
||||
base.Action = ViewProfile = () =>
|
||||
{
|
||||
@ -210,7 +215,7 @@ namespace osu.Game.Users
|
||||
Status.TriggerChange();
|
||||
}
|
||||
|
||||
private void displayStatus(UserStatus status)
|
||||
private void displayStatus(UserStatus status, UserActivity activity = null)
|
||||
{
|
||||
const float transition_duration = 500;
|
||||
|
||||
@ -225,8 +230,17 @@ namespace osu.Game.Users
|
||||
statusBar.ResizeHeightTo(status_height, transition_duration, Easing.OutQuint);
|
||||
statusBar.FadeIn(transition_duration, Easing.OutQuint);
|
||||
this.ResizeHeightTo(height, transition_duration, Easing.OutQuint);
|
||||
}
|
||||
|
||||
statusMessage.Text = status.Message;
|
||||
if (status is UserStatusOnline && activity != null)
|
||||
{
|
||||
statusMessage.Text = activity.Status;
|
||||
statusBg.FadeColour(activity.GetAppropriateColour(colours), 500, Easing.OutQuint);
|
||||
}
|
||||
else
|
||||
{
|
||||
statusMessage.Text = status?.Message;
|
||||
statusBg.FadeColour(status?.GetAppropriateColour(colours) ?? colours.Gray5, 500, Easing.OutQuint);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -29,33 +29,7 @@ namespace osu.Game.Users
|
||||
public override Color4 GetAppropriateColour(OsuColour colours) => colours.Gray7;
|
||||
}
|
||||
|
||||
public class UserStatusSpectating : UserStatusOnline
|
||||
{
|
||||
public override string Message => @"Spectating a game";
|
||||
}
|
||||
|
||||
public class UserStatusInLobby : UserStatusOnline
|
||||
{
|
||||
public override string Message => @"in Multiplayer Lobby";
|
||||
}
|
||||
|
||||
public class UserStatusSoloGame : UserStatusBusy
|
||||
{
|
||||
public override string Message => @"Solo Game";
|
||||
}
|
||||
|
||||
public class UserStatusMultiplayerGame : UserStatusBusy
|
||||
{
|
||||
public override string Message => @"Multiplaying";
|
||||
}
|
||||
|
||||
public class UserStatusModding : UserStatusOnline
|
||||
{
|
||||
public override string Message => @"Modding a map";
|
||||
public override Color4 GetAppropriateColour(OsuColour colours) => colours.PurpleDark;
|
||||
}
|
||||
|
||||
public class UserStatusDoNotDisturb : UserStatusBusy
|
||||
public class UserStatusDoNotDisturb : UserStatus
|
||||
{
|
||||
public override string Message => @"Do not disturb";
|
||||
public override Color4 GetAppropriateColour(OsuColour colours) => colours.RedDark;
|
||||
|
Reference in New Issue
Block a user