using System.Collections.Immutable; using System.Threading.Tasks; namespace Barotrauma; public static partial class EosInterface { public static class Achievements { private static Implementation? LoadedImplementation => Core.LoadedImplementation; public static async Task> UnlockAchievements( params Identifier[] achievementIds) => LoadedImplementation.IsInitialized() ? await LoadedImplementation.UnlockAchievements(achievementIds) : Result.Failure(AchievementUnlockError.EosNotInitialized); public static async Task> IngestStats( params (AchievementStat Stat, int IngestAmount)[] stats) => LoadedImplementation.IsInitialized() ? await LoadedImplementation.IngestStats(stats) : Result.Failure(IngestStatError.EosNotInitialized); public static Task, QueryStatsError>> QueryStats( params AchievementStat[] stats) => QueryStats(stats.ToImmutableArray()); public static async Task, QueryStatsError>> QueryStats( ImmutableArray stats) => LoadedImplementation.IsInitialized() ? await LoadedImplementation.QueryStats(stats) : Result.Failure(QueryStatsError.EosNotInitialized); public static async Task, QueryAchievementsError>> QueryPlayerAchievements() => LoadedImplementation.IsInitialized() ? await LoadedImplementation.QueryPlayerAchievements() : Result.Failure(QueryAchievementsError.EosNotInitialized); } internal abstract partial class Implementation { public abstract Task> UnlockAchievements( params Identifier[] achievementIds); public abstract Task> IngestStats( params (AchievementStat Stat, int IngestAmount)[] stats); public abstract Task, QueryStatsError>> QueryStats( ImmutableArray stats); public abstract Task, QueryAchievementsError>> QueryPlayerAchievements(); } }