diff options
Diffstat (limited to 'externals/discord-rpc/examples/button-clicker/Assets/DiscordController.cs')
-rw-r--r-- | externals/discord-rpc/examples/button-clicker/Assets/DiscordController.cs | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/externals/discord-rpc/examples/button-clicker/Assets/DiscordController.cs b/externals/discord-rpc/examples/button-clicker/Assets/DiscordController.cs new file mode 100644 index 0000000000..7319d5fa3f --- /dev/null +++ b/externals/discord-rpc/examples/button-clicker/Assets/DiscordController.cs @@ -0,0 +1,125 @@ +using UnityEngine; + +[System.Serializable] +public class DiscordJoinEvent : UnityEngine.Events.UnityEvent<string> { } + +[System.Serializable] +public class DiscordSpectateEvent : UnityEngine.Events.UnityEvent<string> { } + +[System.Serializable] +public class DiscordJoinRequestEvent : UnityEngine.Events.UnityEvent<DiscordRpc.DiscordUser> { } + +public class DiscordController : MonoBehaviour +{ + public DiscordRpc.RichPresence presence = new DiscordRpc.RichPresence(); + public string applicationId; + public string optionalSteamId; + public int clickCounter; + public DiscordRpc.DiscordUser joinRequest; + public UnityEngine.Events.UnityEvent onConnect; + public UnityEngine.Events.UnityEvent onDisconnect; + public UnityEngine.Events.UnityEvent hasResponded; + public DiscordJoinEvent onJoin; + public DiscordJoinEvent onSpectate; + public DiscordJoinRequestEvent onJoinRequest; + + DiscordRpc.EventHandlers handlers; + + public void OnClick() + { + Debug.Log("Discord: on click!"); + clickCounter++; + + presence.details = string.Format("Button clicked {0} times", clickCounter); + presence.joinSecret = "aSecret"; + presence.partyId = "aPartyId"; + presence.partySize = 1; + presence.partyMax = 3; + presence.partyPrivacy = DiscordRpc.PartyPrivacy.Public; + + DiscordRpc.UpdatePresence(presence); + } + + public void RequestRespondYes() + { + Debug.Log("Discord: responding yes to Ask to Join request"); + DiscordRpc.Respond(joinRequest.userId, DiscordRpc.Reply.Yes); + hasResponded.Invoke(); + } + + public void RequestRespondNo() + { + Debug.Log("Discord: responding no to Ask to Join request"); + DiscordRpc.Respond(joinRequest.userId, DiscordRpc.Reply.No); + hasResponded.Invoke(); + } + + public void ReadyCallback(ref DiscordRpc.DiscordUser connectedUser) + { + Debug.Log(string.Format("Discord: connected to {0}#{1}: {2}", connectedUser.username, connectedUser.discriminator, connectedUser.userId)); + onConnect.Invoke(); + } + + public void DisconnectedCallback(int errorCode, string message) + { + Debug.Log(string.Format("Discord: disconnect {0}: {1}", errorCode, message)); + onDisconnect.Invoke(); + } + + public void ErrorCallback(int errorCode, string message) + { + Debug.Log(string.Format("Discord: error {0}: {1}", errorCode, message)); + } + + public void JoinCallback(string secret) + { + Debug.Log(string.Format("Discord: join ({0})", secret)); + onJoin.Invoke(secret); + } + + public void SpectateCallback(string secret) + { + Debug.Log(string.Format("Discord: spectate ({0})", secret)); + onSpectate.Invoke(secret); + } + + public void RequestCallback(ref DiscordRpc.DiscordUser request) + { + Debug.Log(string.Format("Discord: join request {0}#{1}: {2}", request.username, request.discriminator, request.userId)); + joinRequest = request; + onJoinRequest.Invoke(request); + } + + void Start() + { + } + + void Update() + { + DiscordRpc.RunCallbacks(); + } + + void OnEnable() + { + Debug.Log("Discord: init"); + handlers = new DiscordRpc.EventHandlers(); + handlers.readyCallback += ReadyCallback; + handlers.disconnectedCallback += DisconnectedCallback; + handlers.errorCallback += ErrorCallback; + handlers.joinCallback += JoinCallback; + handlers.spectateCallback += SpectateCallback; + handlers.requestCallback += RequestCallback; + DiscordRpc.Initialize(applicationId, ref handlers, true, optionalSteamId); + } + + void OnDisable() + { + Debug.Log("Discord: shutdown"); + DiscordRpc.Shutdown(); + } + + void OnDestroy() + { + + } +} |