2017-08-02 20:31:35 +02:00
|
|
|
|
using System.Runtime.InteropServices;
|
|
|
|
|
|
|
|
|
|
public class DiscordRpc
|
|
|
|
|
{
|
2017-09-28 17:15:15 +02:00
|
|
|
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
2017-08-02 20:31:35 +02:00
|
|
|
|
public delegate void ReadyCallback();
|
|
|
|
|
|
2017-09-28 17:15:15 +02:00
|
|
|
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
2017-08-02 20:31:35 +02:00
|
|
|
|
public delegate void DisconnectedCallback(int errorCode, string message);
|
|
|
|
|
|
2017-09-28 17:15:15 +02:00
|
|
|
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
2017-08-02 20:31:35 +02:00
|
|
|
|
public delegate void ErrorCallback(int errorCode, string message);
|
|
|
|
|
|
2017-09-28 17:15:15 +02:00
|
|
|
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
2017-08-02 20:31:35 +02:00
|
|
|
|
public delegate void JoinCallback(string secret);
|
|
|
|
|
|
2017-09-28 17:15:15 +02:00
|
|
|
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
2017-08-02 20:31:35 +02:00
|
|
|
|
public delegate void SpectateCallback(string secret);
|
|
|
|
|
|
2017-10-14 12:21:35 +02:00
|
|
|
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
|
|
|
|
public delegate void RequestCallback(JoinRequest request);
|
2017-10-14 12:12:03 +02:00
|
|
|
|
|
2017-10-14 12:21:35 +02:00
|
|
|
|
public struct EventHandlers
|
2017-08-02 20:31:35 +02:00
|
|
|
|
{
|
|
|
|
|
public ReadyCallback readyCallback;
|
|
|
|
|
public DisconnectedCallback disconnectedCallback;
|
|
|
|
|
public ErrorCallback errorCallback;
|
|
|
|
|
public JoinCallback joinCallback;
|
|
|
|
|
public SpectateCallback spectateCallback;
|
2017-10-14 12:21:35 +02:00
|
|
|
|
public RequestCallback requestCallback;
|
|
|
|
|
}
|
2017-08-02 20:31:35 +02:00
|
|
|
|
|
|
|
|
|
[System.Serializable]
|
|
|
|
|
public struct RichPresence
|
|
|
|
|
{
|
|
|
|
|
public string state; /* max 128 bytes */
|
|
|
|
|
public string details; /* max 128 bytes */
|
|
|
|
|
public long startTimestamp;
|
|
|
|
|
public long endTimestamp;
|
|
|
|
|
public string largeImageKey; /* max 32 bytes */
|
|
|
|
|
public string largeImageText; /* max 128 bytes */
|
|
|
|
|
public string smallImageKey; /* max 32 bytes */
|
|
|
|
|
public string smallImageText; /* max 128 bytes */
|
|
|
|
|
public string partyId; /* max 128 bytes */
|
|
|
|
|
public int partySize;
|
|
|
|
|
public int partyMax;
|
|
|
|
|
public string matchSecret; /* max 128 bytes */
|
|
|
|
|
public string joinSecret; /* max 128 bytes */
|
|
|
|
|
public string spectateSecret; /* max 128 bytes */
|
|
|
|
|
public bool instance;
|
|
|
|
|
}
|
|
|
|
|
|
2017-10-14 12:21:35 +02:00
|
|
|
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
|
|
|
|
|
public struct JoinRequest
|
|
|
|
|
{
|
|
|
|
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 24)]
|
|
|
|
|
public string userId;
|
|
|
|
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
|
|
|
|
|
public string username;
|
|
|
|
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
|
2017-10-17 22:33:12 +02:00
|
|
|
|
public string avatar;
|
2017-10-14 12:21:35 +02:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public enum Reply
|
|
|
|
|
{
|
|
|
|
|
No = 0,
|
|
|
|
|
Yes = 1,
|
|
|
|
|
Ignore = 2
|
|
|
|
|
}
|
2017-10-14 12:12:03 +02:00
|
|
|
|
|
2017-09-28 17:15:15 +02:00
|
|
|
|
[DllImport("discord-rpc", EntryPoint = "Discord_Initialize", CallingConvention = CallingConvention.Cdecl)]
|
2017-08-31 00:17:47 +02:00
|
|
|
|
public static extern void Initialize(string applicationId, ref EventHandlers handlers, bool autoRegister, string optionalSteamId);
|
2017-08-02 20:31:35 +02:00
|
|
|
|
|
2017-09-28 17:15:15 +02:00
|
|
|
|
[DllImport("discord-rpc", EntryPoint = "Discord_Shutdown", CallingConvention = CallingConvention.Cdecl)]
|
2017-08-02 20:31:35 +02:00
|
|
|
|
public static extern void Shutdown();
|
|
|
|
|
|
2017-09-28 17:15:15 +02:00
|
|
|
|
[DllImport("discord-rpc", EntryPoint = "Discord_RunCallbacks", CallingConvention = CallingConvention.Cdecl)]
|
2017-08-02 20:31:35 +02:00
|
|
|
|
public static extern void RunCallbacks();
|
|
|
|
|
|
2017-09-28 17:15:15 +02:00
|
|
|
|
[DllImport("discord-rpc", EntryPoint = "Discord_UpdatePresence", CallingConvention = CallingConvention.Cdecl)]
|
2017-08-02 20:31:35 +02:00
|
|
|
|
public static extern void UpdatePresence(ref RichPresence presence);
|
2017-10-14 12:12:03 +02:00
|
|
|
|
|
2017-10-14 12:21:35 +02:00
|
|
|
|
[DllImport("discord-rpc", EntryPoint = "Discord_Respond", CallingConvention = CallingConvention.Cdecl)]
|
|
|
|
|
public static extern void Respond(string userId, Reply reply);
|
2017-08-02 20:31:35 +02:00
|
|
|
|
}
|
|
|
|
|
|