92 lines
2.0 KiB
C#
92 lines
2.0 KiB
C#
|
using Discord;
|
||
|
using TMPro;
|
||
|
using Unity.VisualScripting;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.SceneManagement;
|
||
|
|
||
|
public class DiscordController : MonoBehaviour
|
||
|
{
|
||
|
//https://discord.com/developers/applications/
|
||
|
[SerializeField] private long applicationID;
|
||
|
|
||
|
[SerializeField] private string largeText; // App Name
|
||
|
[SerializeField] private string largeImage; // Name of image
|
||
|
[SerializeField] public string details; // Info 1 (top) 3 - 4 word description
|
||
|
[SerializeField] public string Location; // Info 2 (bottom) usually link
|
||
|
[SerializeField] private TextMeshProUGUI ModTitle;
|
||
|
|
||
|
private long time;
|
||
|
|
||
|
private static bool instanceExists;
|
||
|
public Discord.Discord discord;
|
||
|
|
||
|
void Awake()
|
||
|
{
|
||
|
// Transition the GameObject between scenes, destroy any duplicates
|
||
|
if (!instanceExists) {
|
||
|
instanceExists = true;
|
||
|
DontDestroyOnLoad(gameObject);
|
||
|
} else if (FindObjectsOfType(GetType()).Length > 1) {
|
||
|
Destroy(gameObject);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Start() {
|
||
|
discord = new Discord.Discord(applicationID, (ulong)CreateFlags.NoRequireDiscord);
|
||
|
time = System.DateTimeOffset.Now.ToUnixTimeMilliseconds();
|
||
|
|
||
|
UpdateStatus();
|
||
|
}
|
||
|
|
||
|
void Update() {
|
||
|
try {
|
||
|
discord.RunCallbacks();
|
||
|
} catch {
|
||
|
Debug.LogError("Failed connecting to Discord!");
|
||
|
Destroy(gameObject);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void LateUpdate() {
|
||
|
UpdateStatus();
|
||
|
}
|
||
|
|
||
|
public string GetCurrentSceneName()
|
||
|
{
|
||
|
return SceneManager.GetActiveScene().name;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
void UpdateStatus() {
|
||
|
string modTitle = Location;
|
||
|
if (ModTitle.text != "New Text") {
|
||
|
modTitle = "Viewing: "+ModTitle.text;
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
var activityManager = discord.GetActivityManager();
|
||
|
var activity = new Activity {
|
||
|
#if UNITY_EDITOR
|
||
|
Details = $"Working on {largeText}",
|
||
|
#else
|
||
|
Details = details,
|
||
|
#endif
|
||
|
State = modTitle,
|
||
|
Assets = {
|
||
|
LargeImage = largeImage,
|
||
|
LargeText = largeText
|
||
|
},
|
||
|
Timestamps ={
|
||
|
Start = time
|
||
|
}
|
||
|
};
|
||
|
activityManager.UpdateActivity(activity, (res) => {
|
||
|
if (res != Result.Ok)
|
||
|
Debug.LogError("Failed connecting to Discord!");
|
||
|
});
|
||
|
} catch {
|
||
|
Debug.LogError("Failed connecting to Discord!");
|
||
|
}
|
||
|
}
|
||
|
}
|