Пример #1
0
        public void OnApplicationStart()
        {
            string steamDllPath    = Path.Combine(IPA.Utilities.UnityGame.InstallPath, "Beat Saber_Data", "Plugins", "steam_api64.dll");
            bool   hasSteamDll     = File.Exists(steamDllPath);
            string platform        = hasSteamDll ? "steam" : "oculus";
            string gameVersionFull = $"{IPA.Utilities.UnityGame.GameVersion.ToString()}-{platform}";

            var httpOptions = new BeatSaverSharp.HttpOptions()
            {
                ApplicationName = "BeatSaverDownloader",
                Version         = Assembly.GetExecutingAssembly().GetName().Version,

                Agents = new BeatSaverSharp.ApplicationAgent[1]
                {
                    new BeatSaverSharp.ApplicationAgent("BeatSaber", gameVersionFull),
                },
            };

            BeatSaver = new BeatSaverSharp.BeatSaver(httpOptions);

            instance = this;
            PluginConfig.LoadConfig();
            Sprites.ConvertToSprites();

            PluginUI.instance.Setup();

            BS_Utils.Utilities.BSEvents.menuSceneLoadedFresh += OnMenuSceneLoadedFresh;
            SceneManager.activeSceneChanged += OnActiveSceneChanged;
            SceneManager.sceneLoaded        += OnSceneLoaded;
        }
Пример #2
0
        ////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////

        /// <summary>
        /// Make usage of beat saber plus custom maps server
        /// </summary>
        /// <param name="p_Instance"></param>
        /// <param name="p_Enabled"></param>
        /// <returns></returns>
        public static bool UseBeatSaberPlusCustomMapsServer(this BeatSaverSharp.BeatSaver p_Instance, bool p_Enabled)
        {
            if (p_Instance == null)
            {
                return(false);
            }

            try
            {
                if (p_Enabled && (!BeatSaberPlus.Config.Online.Enabled || !BeatSaberPlus.Config.Online.UseBSPCustomMapsServer))
                {
                    return(false);
                }

                if (m_BeatSaver_HttpInstance == null)
                {
                    m_BeatSaver_HttpInstance = typeof(BeatSaverSharp.BeatSaver).GetProperty("HttpInstance", BindingFlags.Instance | BindingFlags.NonPublic);
                }

                var l_BSSHttp = m_BeatSaver_HttpInstance.GetValue(p_Instance);
                if (l_BSSHttp != null)
                {
                    if (m_Http_Client == null)
                    {
                        m_Http_Client = l_BSSHttp.GetType().GetProperty("Client", BindingFlags.Instance | BindingFlags.NonPublic);
                    }

                    var l_HTTPClient = m_Http_Client.GetValue(l_BSSHttp) as HttpClient;
                    if (l_HTTPClient != null)
                    {
                        l_HTTPClient.BaseAddress = new Uri(p_Enabled ? "https://maps.beatsaberplus.com/api/" : $"{BeatSaverSharp.BeatSaver.BaseURL}/api/");
                        return(true);
                    }
                }
            }
            catch (System.Exception p_Exception)
            {
                Logger.Instance.Error("UseBeatSaberPlusCustomMapsServer failed,");
                Logger.Instance.Error(p_Exception);
            }

            return(false);
        }