Ryujinx/Ryujinx.HLE/HOS/Services/Friend/IFriendServiceTypes.cs
Ac_K 4ad3936afd Refactoring result codes (#731)
* refactoring result codes

- Add a main enum who can handle some orphalin result codes and the default `ResultCode.Success` one.
- Add sub-enum by services when it's needed.
- Remove some empty line.
- Recast all service calls to ResultCode.
- Remove some unneeded static declaration.
- Delete unused `NvHelper` class.

* NvResult is back

* Fix
2019-07-14 16:04:38 -03:00

104 lines
2.6 KiB
C#

using Ryujinx.HLE.Utilities;
using System.Runtime.InteropServices;
namespace Ryujinx.HLE.HOS.Services.Friend
{
enum PresenceStatusFilter : uint
{
None,
Online,
OnlinePlay,
OnlineOrOnlinePlay
}
enum PresenceStatus : uint
{
Offline,
Online,
OnlinePlay,
}
[StructLayout(LayoutKind.Sequential)]
struct FriendFilter
{
public PresenceStatusFilter PresenceStatus;
[MarshalAs(UnmanagedType.I1)]
public bool IsFavoriteOnly;
[MarshalAs(UnmanagedType.I1)]
public bool IsSameAppPresenceOnly;
[MarshalAs(UnmanagedType.I1)]
public bool IsSameAppPlayedOnly;
[MarshalAs(UnmanagedType.I1)]
public bool IsArbitraryAppPlayedOnly;
public long PresenceGroupId;
}
[StructLayout(LayoutKind.Sequential, Pack = 0x8, CharSet = CharSet.Ansi)]
struct UserPresence
{
public UInt128 UserId;
public long LastTimeOnlineTimestamp;
public PresenceStatus Status;
[MarshalAs(UnmanagedType.I1)]
public bool SamePresenceGroupApplication;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x3)]
char[] Unknown;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 0xC0)]
public char[] AppKeyValueStorage;
public override string ToString()
{
return $"UserPresence {{ UserId: {UserId}, LastTimeOnlineTimestamp: {LastTimeOnlineTimestamp}, Status: {Status}, AppKeyValueStorage: {AppKeyValueStorage} }}";
}
}
[StructLayout(LayoutKind.Sequential, Pack = 0x8, Size = 0x200, CharSet = CharSet.Ansi)]
struct Friend
{
public UInt128 UserId;
public long NetworkUserId;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x21)]
public string Nickname;
public UserPresence presence;
[MarshalAs(UnmanagedType.I1)]
public bool IsFavourite;
[MarshalAs(UnmanagedType.I1)]
public bool IsNew;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x6)]
char[] Unknown;
[MarshalAs(UnmanagedType.I1)]
public bool IsValid;
}
enum NotificationEventType : uint
{
Invalid = 0x0,
FriendListUpdate = 0x1,
NewFriendRequest = 0x65,
}
[StructLayout(LayoutKind.Sequential, Pack = 0x8, Size = 0x10)]
struct NotificationInfo
{
public NotificationEventType Type;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x4)]
char[] Padding;
public long NetworkUserIdPlaceholder;
}
}