From 5fea56c6182dc1c209c60893da520bf1104cbaf4 Mon Sep 17 00:00:00 2001 From: Ne_Eo Date: Sat, 10 Aug 2024 16:01:32 +0200 Subject: [PATCH] Allow more custom stuffs --- .../funkin/backend/scripting/GlobalScript.hx | 4 +++ source/funkin/backend/utils/DiscordUtil.hx | 33 +++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/source/funkin/backend/scripting/GlobalScript.hx b/source/funkin/backend/scripting/GlobalScript.hx index c9b49ad8..d3b8aded 100644 --- a/source/funkin/backend/scripting/GlobalScript.hx +++ b/source/funkin/backend/scripting/GlobalScript.hx @@ -11,7 +11,11 @@ import funkin.backend.system.Conductor; class GlobalScript { public static var scripts:ScriptPack; + private static var initalized:Bool = false; + public static function init() { + if(initalized) return; + initalized = true; #if MOD_SUPPORT ModsFolder.onModSwitch.add(onModSwitch); #end diff --git a/source/funkin/backend/utils/DiscordUtil.hx b/source/funkin/backend/utils/DiscordUtil.hx index 50bd229c..0aed4952 100644 --- a/source/funkin/backend/utils/DiscordUtil.hx +++ b/source/funkin/backend/utils/DiscordUtil.hx @@ -1,5 +1,6 @@ package funkin.backend.utils; +import flixel.util.FlxSignal.FlxTypedSignal; import flixel.sound.FlxSound; import flixel.util.typeLimit.OneOfTwo; import funkin.backend.scripting.*; // lazy @@ -268,6 +269,7 @@ final class DiscordUtil handlers.joinGame = cpp.Function.fromStaticFunction(onJoin); handlers.joinRequest = cpp.Function.fromStaticFunction(onJoinReq); handlers.spectateGame = cpp.Function.fromStaticFunction(onSpectate); + handlers.anyResponse = cpp.Function.fromStaticFunction(onAnyResponse); Discord.Initialize(id, cpp.RawPointer.addressOf(handlers), 1, null); stopThread = false; @@ -367,7 +369,38 @@ final class DiscordUtil var req:DUser = DUser.initRaw(request); call("onJoinRequest", [req]); } + + public static var anyResponse:FlxTypedSignalVoid> = new FlxTypedSignalVoid>(); + + private static function onAnyResponse(data:cpp.ConstCharStar):Void + { + call("onAnyResponse", [data]); + anyResponse.dispatch(data); + } #end + + private static function getUUID():String { + var uuid = new StringBuf(); + for (i in 0...16) { + uuid.add(StringTools.hex(Math.floor(Math.random() * 16), 1)); + } + return uuid.toString(); + } + + public static function sendCustomCommand(data:Dynamic) { + #if DISCORD_RPC + if(data == null) return; + if(data.nonce == null) data.nonce = getUUID(); + var json = Json.stringify(data); + Discord.SendCustomCommand(json); + #end + } + + public static function setDebugMode(mode:Bool) { + #if DISCORD_RPC + Discord.SetDebugMode(mode); + #end + } } typedef DiscordJson =