using System.Collections.Immutable; using System.Threading.Tasks; using Barotrauma.Networking; namespace Barotrauma; public static partial class EosInterface { public static class Friends { private static Implementation? LoadedImplementation => Core.LoadedImplementation; public enum GetFriendsError { EosNotInitialized, EgsFriendsQueryTimedOut, EgsFriendsQueryFailed, UserInfoQueryTimedOut, UserInfoQueryFailed, CopyUserInfoFailed, DisplayNameIsEmpty, EgsPresenceQueryTimedOut, EgsPresenceQueryFailed, CopyPresenceFailed, UnhandledErrorCondition } public static async Task> GetFriend( EpicAccountId selfEaid, EpicAccountId friendEaid) => LoadedImplementation.IsInitialized() ? await LoadedImplementation.GetFriend(selfEaid, friendEaid) : Result.Failure(GetFriendsError.EosNotInitialized); public static async Task, GetFriendsError>> GetFriends( EpicAccountId epicAccountId) => LoadedImplementation.IsInitialized() ? await LoadedImplementation.GetFriends(epicAccountId) : Result.Failure(GetFriendsError.EosNotInitialized); public static async Task> GetSelfUserInfo(EpicAccountId epicAccountId) => LoadedImplementation.IsInitialized() ? await LoadedImplementation.GetSelfUserInfo(epicAccountId) : Result.Failure(GetFriendsError.EosNotInitialized); } internal abstract partial class Implementation { public abstract Task> GetFriend( EpicAccountId selfEaid, EpicAccountId friendEaid); public abstract Task, Friends.GetFriendsError>> GetFriends( EpicAccountId epicAccountId); public abstract Task> GetSelfUserInfo(EpicAccountId epicAccountId); } }