private void OnMenuSceneLoadedFresh(ScenesTransitionSetupDataSO data) { Log.Info("OnMenuSceneLoadedFresh()"); Songs = new GameObject("SongDataCore_BeatStar").AddComponent <BeatStarDatabase>(); UnityEngine.Object.DontDestroyOnLoad(Songs.gameObject); // Force false, always load the database here. DatabasesLoaded = false; LoadDatabases(); }
private async Task <string> FindBridge() { log.Info("Searching for bridge..."); var overrideIP = prefs.GetString("HueSaber", "overrideIP"); if (overrideIP != "") { log.Info("Using IP address override."); return(overrideIP); } else { return((await new HttpBridgeLocator().LocateBridgesAsync(TimeSpan.FromSeconds(5))).FirstOrDefault()?.IpAddress); } }
public void Init(IPA.Logging.Logger log) { if (_init) { return; } _init = true; logger = log; harmonyInstance = HarmonyInstance.Create("slaynash.discordpresence"); gameObject = Resources.FindObjectsOfTypeAll <MonoBehaviour>().First(c => c.GetType().Name == "PluginComponent"); try { logger.Info("Initializing"); logger.Info("Starting Discord RichPresence"); var handlers = new DiscordRpc.EventHandlers(); DiscordRpc.Initialize(DiscordAppID, ref handlers, false, string.Empty); logger.Info("Fetching nonpublic fields"); _gameplayCoreSceneSetupDataField = typeof(SceneSetup <GameplayCoreSceneSetupData>).GetField("_sceneSetupData", BindingFlags.NonPublic | BindingFlags.Instance); _oneColorBeatmapCharacteristic = typeof(GameplayCoreSceneSetup).GetField("_oneColorBeatmapCharacteristic", BindingFlags.NonPublic | BindingFlags.Instance); #if DEBUG logger.Debug("Discord Presence - Field SceneSetup<GameplayCoreSceneSetupData>._sceneSetupData: " + _gameplayCoreSceneSetupDataField); #endif if (_gameplayCoreSceneSetupDataField == null) { logger.Error("Unable to fetch SceneSetup<GameplayCoreSceneSetupData>._sceneSetupData"); return; } logger.Info("Init done !"); } catch (Exception e) { logger.Error("Unable to initialize plugin:\n" + e); } }
public void OnApplicationStart() { logger.Info("Looking for BeatSaberMultiplayer"); PluginLoader.PluginInfo beatsabermultiplayer = PluginManager.GetPluginFromId("BeatSaberMultiplayer"); if (beatsabermultiplayer != null) { Type multiplayerClientType = beatsabermultiplayer.Metadata.Assembly.GetType("BeatSaberMultiplayer.Client"); if (multiplayerClientType != null) { clientInstanceField = multiplayerClientType.GetField("instance", (BindingFlags)(-1)); clientInstanceInroomField = multiplayerClientType.GetField("inRoom", (BindingFlags)(-1)); logger.Info("BeatSaberMultiplayer found and linked."); } else { logger.Warn("Found BeatSaberMultiplayer, but not type BeatSaberMultiplayer.Client. Multiplayer won't be shown on discord."); } } logger.Info("Looking for YURFit (IPA)"); #pragma warning disable CS0618 IPlugin yurfit = PluginManager.Plugins.FirstOrDefault((IPlugin x) => x.Name == "YURfitMod"); if (yurfit != null) { Type yurpresence = yurfit.GetType().Assembly.GetType("YURfitMod.RPC.YURpresence"); if (yurpresence != null) { harmonyInstance.Patch(yurpresence.GetMethod("Awake", (BindingFlags)(-1)), GetVoidPatch(), null, null); harmonyInstance.Patch(yurpresence.GetMethod("Menu", (BindingFlags)(-1)), GetVoidPatch(), null, null); logger.Info("YURFit found as IPA Plugin and patched."); } else { logger.Warn("Found YURFit as IPA Plugin, but not type YURfitMod.RPC.YURpresence. There may be some conflivts between the two mods."); } } #pragma warning restore CS0618 }