using System; using Discord; using UnityEngine; public class Discord_Controller : MonoBehaviour { private global::Discord.Discord discord; public static Discord_Controller instance; private bool isDiscordInitialized; private long startTimeUnix = DateTimeOffset.Now.AddHours(-666.0).ToUnixTimeSeconds(); private void Start() { instance = this; InitializeDiscord(); if (isDiscordInitialized) { ChangeActivity(); } } private void InitializeDiscord() { try { discord = new global::Discord.Discord(1228410356700025012L, 1uL); isDiscordInitialized = true; Debug.Log("Discord initialized successfully."); } catch (ResultException ex) { Debug.LogWarning("Failed to initialize Discord: " + ex.Message); Debug.LogWarning("Common reasons are either, discord not being open or no internet connection."); isDiscordInitialized = false; } } private void OnDisable() { if (discord != null) { discord.Dispose(); Debug.Log("Discord disposed."); } } public void ChangeActivity(ActivityType Type = ActivityType.Playing, string Name = "", string State = "", string Details = "* WE ARE BUSY EXPERIMENTING.", string LargeImage = "hypotheticalicon_default", string LargeText = "DELTARUNE - Hypothesis", string VesselText = "* (A vessel, it looks content.)") { if (!isDiscordInitialized) { Debug.LogWarning("Discord is not initialized, skipping ChangeActivity."); return; } ActivityManager activityManager = discord.GetActivityManager(); Activity activity = default(Activity); activity = ((!Application.isEditor || DRHDebugManager.instance.DebugModeEnabled) ? new Activity { Type = Type, Name = Name, State = State, Details = Details, Assets = { LargeImage = LargeImage, LargeText = LargeText, SmallImage = "soul", SmallText = VesselText }, Timestamps = { Start = startTimeUnix } } : new Activity { Type = Type, Name = Name, State = "[Hypoaster is hard at work]", Details = "* LET ME WRITE MORE HYPOTHESES!!", Assets = { LargeImage = "hypotheticalicon_default", LargeText = "DELTARUNE - Hypothesis", SmallImage = "unity", SmallText = "In unity editor, no leaks! tee-hee!" }, Timestamps = { Start = startTimeUnix } }); activityManager.UpdateActivity(activity, delegate { Debug.Log("Activity Updated!"); }); } private void Update() { if (!isDiscordInitialized || discord == null) { return; } try { discord.RunCallbacks(); } catch (ResultException ex) { Debug.LogWarning("Discord.RunCallbacks() failed: " + ex.Message); Debug.LogWarning("Disabling Discord integration to prevent further issues."); isDiscordInitialized = false; if (discord != null) { discord.Dispose(); discord = null; } } } }