mirror of
https://github.com/Facepunch/sbox-public.git
synced 2026-01-25 06:40:28 -05:00
This commit imports the C# engine code and game files, excluding C++ source code. [Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
49 lines
1.3 KiB
C#
49 lines
1.3 KiB
C#
namespace Sandbox.Services;
|
|
|
|
/// <summary>
|
|
/// Activity Feed
|
|
/// </summary>
|
|
public sealed class AchievementOverview
|
|
{
|
|
public Package Package { get; set; }
|
|
public Achievement[] Achievements { get; set; }
|
|
public DateTimeOffset LastSeen { get; set; }
|
|
public int Unlocked { get; set; }
|
|
public int Score { get; set; }
|
|
public int Total { get; set; }
|
|
public int TotalScore { get; set; }
|
|
|
|
// Internal - because exposed through MenuUtility because games don't need to access this
|
|
internal static async Task<AchievementOverview[]> GetFeed( int take = 20 )
|
|
{
|
|
take = take.Clamp( 1, 50 );
|
|
|
|
try
|
|
{
|
|
var posts = await Sandbox.Backend.Players.GetAchievementProgress( AccountInformation.SteamId, take );
|
|
if ( posts is null ) return Array.Empty<AchievementOverview>();
|
|
|
|
return posts.Select( x => From( x ) ).ToArray();
|
|
}
|
|
catch ( Exception )
|
|
{
|
|
return default;
|
|
}
|
|
}
|
|
internal static AchievementOverview From( PlayerAchievementProgress p )
|
|
{
|
|
if ( p is null ) return default;
|
|
|
|
return new AchievementOverview
|
|
{
|
|
Achievements = p.Achievements.Select( x => new Achievement( x ) ).ToArray(),
|
|
LastSeen = p.LastSeen,
|
|
Unlocked = p.Unlocked,
|
|
Score = p.Score,
|
|
Total = p.Total,
|
|
TotalScore = p.TotalScore,
|
|
Package = RemotePackage.FromDto( p.Package ),
|
|
};
|
|
}
|
|
}
|