Initial pass at a unity example... no callbacks yet.

This commit is contained in:
Chris Marsh
2017-08-02 11:31:35 -07:00
parent 27e39a0ec5
commit 7fe7e2ab53
9 changed files with 637 additions and 16 deletions

View File

@ -0,0 +1,62 @@
using System.Runtime.InteropServices;
public class DiscordRpc
{
[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
public delegate void ReadyCallback();
[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
public delegate void DisconnectedCallback(int errorCode, string message);
[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
public delegate void ErrorCallback(int errorCode, string message);
[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
public delegate void JoinCallback(string secret);
[UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl)]
public delegate void SpectateCallback(string secret);
[System.Serializable]
public struct EventHandlers
{
public ReadyCallback readyCallback;
public DisconnectedCallback disconnectedCallback;
public ErrorCallback errorCallback;
public JoinCallback joinCallback;
public SpectateCallback spectateCallback;
}
[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;
}
[DllImport("discord-rpc", EntryPoint = "Discord_Initialize")]
public static extern void Initialize(string applicationId, ref EventHandlers handlers, bool autoRegister);
[DllImport("discord-rpc", EntryPoint = "Discord_Shutdown")]
public static extern void Shutdown();
[DllImport("discord-rpc", EntryPoint = "Discord_RunCallbacks")]
public static extern void RunCallbacks();
[DllImport("discord-rpc", EntryPoint = "Discord_UpdatePresence")]
public static extern void UpdatePresence(ref RichPresence presence);
}