Added request to join functionality

This commit is contained in:
SK83RJOSH 2017-10-14 06:12:03 -04:00 committed by Chris Marsh
parent 86ca320cb9
commit e4b3ef63b7
2 changed files with 36 additions and 4 deletions

View file

@ -53,6 +53,12 @@ public class DiscordController : MonoBehaviour {
Debug.Log(string.Format("Discord: spectate ({0})", secret)); Debug.Log(string.Format("Discord: spectate ({0})", secret));
} }
public void RequestCallback(DiscordRpc.JoinRequest request)
{
++callbackCalls;
Debug.Log(string.Format("Discord: join request {0}: {1}", request.username, request.userId));
}
void Start () { void Start () {
} }
@ -71,6 +77,7 @@ public class DiscordController : MonoBehaviour {
handlers.errorCallback += ErrorCallback; handlers.errorCallback += ErrorCallback;
handlers.joinCallback += JoinCallback; handlers.joinCallback += JoinCallback;
handlers.spectateCallback += SpectateCallback; handlers.spectateCallback += SpectateCallback;
handlers.requestCallback += RequestCallback;
DiscordRpc.Initialize(applicationId, ref handlers, true, optionalSteamId); DiscordRpc.Initialize(applicationId, ref handlers, true, optionalSteamId);
} }

View file

@ -17,6 +17,9 @@ public class DiscordRpc
[UnmanagedFunctionPointer(CallingConvention.Cdecl)] [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void SpectateCallback(string secret); public delegate void SpectateCallback(string secret);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void RequestCallback(JoinRequest request);
public struct EventHandlers public struct EventHandlers
{ {
public ReadyCallback readyCallback; public ReadyCallback readyCallback;
@ -24,6 +27,7 @@ public class DiscordRpc
public ErrorCallback errorCallback; public ErrorCallback errorCallback;
public JoinCallback joinCallback; public JoinCallback joinCallback;
public SpectateCallback spectateCallback; public SpectateCallback spectateCallback;
public RequestCallback requestCallback;
} }
[System.Serializable] [System.Serializable]
@ -46,6 +50,24 @@ public class DiscordRpc
public bool instance; public bool instance;
} }
[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)]
public string avatarUrl;
}
public enum Reply
{
No = 0,
Yes = 1,
Ignore = 2
}
[DllImport("discord-rpc", EntryPoint = "Discord_Initialize", CallingConvention = CallingConvention.Cdecl)] [DllImport("discord-rpc", EntryPoint = "Discord_Initialize", CallingConvention = CallingConvention.Cdecl)]
public static extern void Initialize(string applicationId, ref EventHandlers handlers, bool autoRegister, string optionalSteamId); public static extern void Initialize(string applicationId, ref EventHandlers handlers, bool autoRegister, string optionalSteamId);
@ -57,5 +79,8 @@ public class DiscordRpc
[DllImport("discord-rpc", EntryPoint = "Discord_UpdatePresence", CallingConvention = CallingConvention.Cdecl)] [DllImport("discord-rpc", EntryPoint = "Discord_UpdatePresence", CallingConvention = CallingConvention.Cdecl)]
public static extern void UpdatePresence(ref RichPresence presence); public static extern void UpdatePresence(ref RichPresence presence);
[DllImport("discord-rpc", EntryPoint = "Discord_Respond", CallingConvention = CallingConvention.Cdecl)]
public static extern void Respond(string userId, Reply reply);
} }