public void OnGUI()
 {
     DebugWindow.OnGUI();
     ExceptionLogWindow.OnGUI();
 }
        void Update()
        {
            // Load all the contract configurator configuration
            if (HighLogic.LoadedScene == GameScenes.MAINMENU && !loading)
            {
                // Log version info
                var ainfoV = Attribute.GetCustomAttribute(typeof(ContractConfigurator).Assembly,
                                                          typeof(AssemblyInformationalVersionAttribute)) as AssemblyInformationalVersionAttribute;
                LoggingUtil.LogInfo(this, "Contract Configurator " + ainfoV.InformationalVersion + " loading...");

                LoggingUtil.LoadDebuggingConfig();

                RegisterParameterFactories();
                RegisterBehaviourFactories();
                RegisterContractRequirements();
                loading = true;
                IEnumerator <YieldInstruction> iterator = LoadContractConfig();
                while (iterator.MoveNext())
                {
                }
                DebugWindow.LoadTextures();

                LoggingUtil.LogInfo(this, "Contract Configurator " + ainfoV.InformationalVersion + " finished loading.");
            }

            // Alt-F10 shows the contract configurator window
            if (GameSettings.MODIFIER_KEY.GetKey() && Input.GetKeyDown(KeyCode.F10))
            {
                DebugWindow.showGUI = !DebugWindow.showGUI;
            }

            // Display reloading message
            if (reloading)
            {
                if (lastMessage != null)
                {
                    ScreenMessages.RemoveMessage(lastMessage);
                    lastMessage = null;
                }

                switch (reloadStep)
                {
                case ReloadStep.GAME_DATABASE:
                    lastMessage = ScreenMessages.PostScreenMessage("Reloading game database...", Time.deltaTime,
                                                                   ScreenMessageStyle.UPPER_CENTER);
                    break;

                case ReloadStep.MODULE_MANAGER:
                    lastMessage = ScreenMessages.PostScreenMessage("Reloading module manager...", Time.deltaTime,
                                                                   ScreenMessageStyle.UPPER_CENTER);
                    break;

                case ReloadStep.CLEAR_CONFIG:
                    lastMessage = ScreenMessages.PostScreenMessage("Clearing previously loaded contract configuration...", Time.deltaTime,
                                                                   ScreenMessageStyle.UPPER_CENTER);
                    break;

                case ReloadStep.LOAD_CONFIG:
                    lastMessage = ScreenMessages.PostScreenMessage("Loading contract configuration (" + attemptedContracts + "/" + totalContracts + ")...", Time.deltaTime,
                                                                   ScreenMessageStyle.UPPER_CENTER);
                    break;
                }
            }
        }