2019-05-05 18:07:55 +00: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.Game.Beatmaps ;
using osu.Game.Graphics ;
2020-12-25 04:38:11 +00:00
using osu.Game.Online.Rooms ;
2020-01-03 15:22:33 +00:00
using osu.Game.Rulesets ;
2023-02-06 12:44:00 +00:00
using osu.Game.Scoring ;
2019-05-05 18:07:55 +00:00
using osuTK.Graphics ;
namespace osu.Game.Users
{
public abstract class UserActivity
{
2023-02-06 21:30:55 +00:00
public abstract string GetStatus ( bool hideIdentifiableInformation = false ) ;
2023-02-06 12:44:00 +00:00
2019-05-05 18:07:55 +00:00
public virtual Color4 GetAppropriateColour ( OsuColour colours ) = > colours . GreenDarker ;
2023-02-12 21:11:55 +00:00
public class ModdingBeatmap : EditingBeatmap
2019-05-12 15:38:02 +00:00
{
2023-02-12 20:32:17 +00:00
public override string GetStatus ( bool hideIdentifiableInformation = false ) = > "Modding a beatmap" ;
2019-05-12 15:38:02 +00:00
public override Color4 GetAppropriateColour ( OsuColour colours ) = > colours . PurpleDark ;
2023-02-12 21:11:55 +00:00
public ModdingBeatmap ( IBeatmapInfo info )
: base ( info )
{
}
2019-05-12 15:38:02 +00:00
}
2019-05-05 18:07:55 +00:00
2019-06-11 17:41:48 +00:00
public class ChoosingBeatmap : UserActivity
2019-05-12 15:38:02 +00:00
{
2023-02-06 21:30:55 +00:00
public override string GetStatus ( bool hideIdentifiableInformation = false ) = > "Choosing a beatmap" ;
2019-05-12 15:38:02 +00:00
}
2019-05-05 18:07:55 +00:00
2021-08-18 00:13:53 +00:00
public abstract class InGame : UserActivity
2019-05-05 18:07:55 +00:00
{
2021-11-15 09:46:11 +00:00
public IBeatmapInfo BeatmapInfo { get ; }
2021-08-15 22:32:33 +00:00
2021-12-03 09:14:44 +00:00
public IRulesetInfo Ruleset { get ; }
2021-08-15 22:32:33 +00:00
2021-12-03 09:14:44 +00:00
protected InGame ( IBeatmapInfo beatmapInfo , IRulesetInfo ruleset )
2021-08-15 22:32:33 +00:00
{
2021-10-02 15:55:29 +00:00
BeatmapInfo = beatmapInfo ;
2021-08-15 22:32:33 +00:00
Ruleset = ruleset ;
}
2021-08-15 23:06:23 +00:00
2023-02-06 21:30:55 +00:00
public override string GetStatus ( bool hideIdentifiableInformation = false ) = > Ruleset . CreateInstance ( ) . PlayingVerb ;
2021-08-15 22:32:33 +00:00
}
public class InMultiplayerGame : InGame
{
2021-12-03 09:14:44 +00:00
public InMultiplayerGame ( IBeatmapInfo beatmapInfo , IRulesetInfo ruleset )
2021-10-02 15:55:29 +00:00
: base ( beatmapInfo , ruleset )
2021-08-14 05:20:36 +00:00
{
}
2023-02-06 21:30:55 +00:00
public override string GetStatus ( bool hideIdentifiableInformation = false ) = > $@"{base.GetStatus(hideIdentifiableInformation)} with others" ;
2019-05-05 18:07:55 +00:00
}
2022-02-25 07:03:46 +00:00
public class SpectatingMultiplayerGame : InGame
{
public SpectatingMultiplayerGame ( IBeatmapInfo beatmapInfo , IRulesetInfo ruleset )
: base ( beatmapInfo , ruleset )
{
}
2023-02-06 21:30:55 +00:00
public override string GetStatus ( bool hideIdentifiableInformation = false ) = > $"Watching others {base.GetStatus(hideIdentifiableInformation).ToLowerInvariant()}" ;
2022-02-25 07:03:46 +00:00
}
2021-08-22 01:54:07 +00:00
public class InPlaylistGame : InGame
{
2021-12-03 09:14:44 +00:00
public InPlaylistGame ( IBeatmapInfo beatmapInfo , IRulesetInfo ruleset )
2021-10-02 15:55:29 +00:00
: base ( beatmapInfo , ruleset )
2021-08-22 01:54:07 +00:00
{
}
}
2021-08-15 22:32:33 +00:00
public class InSoloGame : InGame
2019-05-12 15:38:02 +00:00
{
2021-12-03 09:14:44 +00:00
public InSoloGame ( IBeatmapInfo beatmapInfo , IRulesetInfo ruleset )
2021-10-02 15:55:29 +00:00
: base ( beatmapInfo , ruleset )
2019-05-12 15:38:02 +00:00
{
}
2019-05-05 18:07:55 +00:00
}
2023-02-12 21:04:12 +00:00
public class TestingBeatmap : InGame
{
public override string GetStatus ( bool hideIdentifiableInformation = false ) = > "Testing a beatmap" ;
public TestingBeatmap ( IBeatmapInfo beatmapInfo , IRulesetInfo ruleset )
: base ( beatmapInfo , ruleset )
{
}
}
2023-02-12 20:32:17 +00:00
public class EditingBeatmap : UserActivity
2019-05-12 15:38:02 +00:00
{
2021-11-15 09:46:11 +00:00
public IBeatmapInfo BeatmapInfo { get ; }
2019-06-12 07:33:15 +00:00
2023-02-12 20:32:17 +00:00
public EditingBeatmap ( IBeatmapInfo info )
2019-05-12 15:38:02 +00:00
{
2021-10-02 15:55:29 +00:00
BeatmapInfo = info ;
2019-05-12 15:38:02 +00:00
}
2019-05-05 18:07:55 +00:00
2023-02-06 21:30:55 +00:00
public override string GetStatus ( bool hideIdentifiableInformation = false ) = > @"Editing a beatmap" ;
2019-05-12 15:38:02 +00:00
}
2019-05-05 18:07:55 +00:00
2023-02-12 20:32:17 +00:00
public class WatchingReplay : UserActivity
2019-05-12 15:38:02 +00:00
{
2023-02-06 12:44:00 +00:00
private readonly ScoreInfo score ;
2023-02-06 20:07:16 +00:00
protected string Username = > score . User . Username ;
2023-02-06 12:44:00 +00:00
public BeatmapInfo BeatmapInfo = > score . BeatmapInfo ;
2023-02-12 20:32:17 +00:00
public WatchingReplay ( ScoreInfo score )
2023-02-06 12:44:00 +00:00
{
this . score = score ;
}
2023-02-09 17:15:30 +00:00
public override string GetStatus ( bool hideIdentifiableInformation = false ) = > hideIdentifiableInformation ? @"Watching a replay" : $@"Watching {Username}'s replay" ;
2023-02-06 00:41:10 +00:00
}
2023-02-05 23:58:08 +00:00
2023-02-12 20:32:17 +00:00
public class SpectatingUser : WatchingReplay
2023-02-06 00:41:10 +00:00
{
2023-02-09 17:15:30 +00:00
public override string GetStatus ( bool hideIdentifiableInformation = false ) = > hideIdentifiableInformation ? @"Spectating a user" : $@"Spectating {Username}" ;
2023-02-06 12:44:00 +00:00
2023-02-12 20:32:17 +00:00
public SpectatingUser ( ScoreInfo score )
2023-02-06 12:44:00 +00:00
: base ( score )
{
}
2019-05-12 15:38:02 +00:00
}
2020-11-08 12:21:21 +00:00
public class SearchingForLobby : UserActivity
{
2023-02-06 21:30:55 +00:00
public override string GetStatus ( bool hideIdentifiableInformation = false ) = > @"Looking for a lobby" ;
2020-11-08 12:21:21 +00:00
}
2019-06-11 17:41:48 +00:00
public class InLobby : UserActivity
2019-05-12 15:38:02 +00:00
{
2023-02-06 21:30:55 +00:00
public override string GetStatus ( bool hideIdentifiableInformation = false ) = > @"In a lobby" ;
2020-11-08 12:21:21 +00:00
public readonly Room Room ;
public InLobby ( Room room )
{
Room = room ;
}
2019-05-12 15:38:02 +00:00
}
2019-05-05 18:07:55 +00:00
}
}