Exemplo n.º 1
0
        internal static IEnumerator InitGlobalChatHandlers()
        {
            Twitch   = new ChatIntegration <ITwitchIntegration>();
            YouTube  = new ChatIntegration <IYouTubeIntegration>();
            Bilibili = new ChatIntegration <IBilibiliIntegration>();
            Global   = new ChatIntegration <IGlobalChatIntegration>();

            bool initTwitch = false, initYouTube = false, initBilibili = false;

            // Iterate through all the message handlers that were registered
            foreach (var instance in registeredInstances)
            {
                var instanceType = instance.Value.GetType();
                var typeName     = instanceType.Name;

                // Wait for all the registered handlers to be ready
                if (!instance.Value.IsPluginReady)
                {
                    Plugin.Log($"Instance of type {typeName} wasn't ready! Waiting until it is...");
                    yield return(new WaitUntil(() => instance.Value.IsPluginReady));

                    Plugin.Log($"Instance of type {typeName} is ready!");
                }

                bool isGlobalIntegration = typeof(IGlobalChatIntegration).IsAssignableFrom(instanceType);
                // Mark the correct services for initialization based on type
                if (typeof(ITwitchIntegration).IsAssignableFrom(instanceType) || isGlobalIntegration)
                {
                    initTwitch = true;
                }
                if (typeof(IYouTubeIntegration).IsAssignableFrom(instanceType) || isGlobalIntegration)
                {
                    initYouTube = true;
                }
                if (typeof(IBilibiliIntegration).IsAssignableFrom(instanceType) || isGlobalIntegration)
                {
                    initBilibili = true;
                }
            }

            // Initialize the appropriate streaming services
            if (initTwitch)
            {
                TwitchWebSocketClient.Initialize_Internal();
            }
            if (initYouTube)
            {
                YouTubeConnection.Initialize_Internal();
            }
            if (initBilibili)
            {
                BilibiliWebSocketClient.Initialize_Internal();
            }
        }
Exemplo n.º 2
0
        public void OnApplicationQuit()
        {
            SceneManager.activeSceneChanged -= SceneManager_activeSceneChanged;
            SceneManager.sceneLoaded        -= SceneManager_sceneLoaded;

            Globals.IsApplicationExiting = true;

            // Cancel all running tasks
            TaskHelper.CancelAllTasks();

            // Shutdown our twitch client if it's initialized
            TwitchWebSocketClient.Shutdown();
            BilibiliWebSocketClient.Shutdown();
            YouTubeConnection.Stop();
        }