private void SetFallbackConfigForLegacyCraft()
 {
     if (HighLogic.LoadedSceneIsEditor && !ProceduralAvionicsTechManager.GetAvailableConfigs().Contains(avionicsConfigName))
     {
         Log($"No valid config set ({avionicsConfigName})");
         avionicsConfigName = ProceduralAvionicsTechManager.GetPurchasedConfigs().First();
     }
     if (string.IsNullOrEmpty(avionicsTechLevel))
     {
         avionicsTechLevel = ProceduralAvionicsTechManager.GetMaxUnlockedTech(avionicsConfigName);
         Log("No tech level set, using ", avionicsTechLevel);
     }
 }
Example #2
0
 private void SetFallbackConfigForLegacyCraft()
 {
     if (HighLogic.LoadedSceneIsEditor && !ProceduralAvionicsTechManager.GetAvailableConfigs().Contains(avionicsConfigName))
     {
         string s = avionicsConfigName;
         avionicsConfigName = ProceduralAvionicsTechManager.GetPurchasedConfigs().First();
         Log($"Current config ({s}) not available, defaulting to {avionicsConfigName}");
     }
     if (string.IsNullOrEmpty(avionicsTechLevel))
     {
         avionicsTechLevel = ProceduralAvionicsTechManager.GetMaxUnlockedTech(avionicsConfigName);
         Log($"Defaulting avionics tech level to {avionicsTechLevel}");
     }
 }
Example #3
0
        public void OnGUI()
        {
            if (showGUI)
            {
                if (_avionicsConfigNames == null)
                {
                    _avionicsConfigNames = ProceduralAvionicsTechManager.GetAvailableConfigs().ToArray();
                    _selectedConfigIndex = _avionicsConfigNames.IndexOf(avionicsConfigName);
                }

                if (_shouldResetUIHeight && Event.current.type == EventType.Layout)
                {
                    _windowRect.height   = 300;
                    _shouldResetUIHeight = false;
                }
                _windowRect = GUILayout.Window(GetInstanceID(), _windowRect, WindowFunction, "Configure Procedural Avionics", HighLogic.Skin.window);
            }
        }
Example #4
0
        public void OnGUI()
        {
            if (showGUI)
            {
                if (_avionicsConfigNames == null)
                {
                    _avionicsConfigNames = ProceduralAvionicsTechManager.GetAvailableConfigs().ToArray();
                    _selectedConfigIndex = _avionicsConfigNames.IndexOf(avionicsConfigName);
                    _tooltipTexts        = new Dictionary <string, string>();
                }

                if (_shouldResetUIHeight && Event.current.type == EventType.Layout)
                {
                    _windowRect.height   = 300;
                    _shouldResetUIHeight = false;
                }
                _windowRect = ClickThruBlocker.GUILayoutWindow(_windowId, _windowRect, WindowFunction, "Configure Procedural Avionics", HighLogic.Skin.window);
                Tooltip.Instance.ShowTooltip(_windowId, contentAlignment: TextAnchor.MiddleLeft);
            }
        }
        void WindowFunction(int windowID)
        {
            var configNames = ProceduralAvionicsTechManager.GetAvailableConfigs().ToArray();

            selectedConfigIndex = GUILayout.Toolbar(selectedConfigIndex, configNames);
            var guiAvionicsConfigName     = configNames[selectedConfigIndex];
            var currentlyDisplayedConfigs = ProceduralAvionicsTechManager.GetProceduralAvionicsConfig(guiAvionicsConfigName);

            foreach (var techNode in currentlyDisplayedConfigs.TechNodes.Values)
            {
                if (!techNode.IsAvailable)
                {
                    continue;
                }
                if (techNode == CurrentProceduralAvionicsTechNode)
                {
                    GUILayout.Label("Current Config: " + techNode.name);
                    GUILayout.Label("Storage Container: " + (techNode.hasScienceContainer ? "Yes" : "No"));
                }
                else
                {
                    var switchedConfig = false;
                    var unlockCost     = ProceduralAvionicsTechManager.GetUnlockCost(guiAvionicsConfigName, techNode);
                    if (unlockCost == 0)
                    {
                        if (GUILayout.Button("Switch to " + BuildTechName(techNode)))
                        {
                            switchedConfig = true;
                        }
                    }
                    else if (Funding.Instance.Funds < unlockCost)
                    {
                        GUILayout.Label("Can't afford " + BuildTechName(techNode) + BuildCostString(unlockCost));
                    }
                    else if (GUILayout.Button("Purchase " + BuildTechName(techNode) + BuildCostString(unlockCost)))
                    {
                        switchedConfig = true;
                        if (!HighLogic.CurrentGame.Parameters.Difficulty.BypassEntryPurchaseAfterResearch)
                        {
                            switchedConfig = ProceduralAvionicsTechManager.PurchaseConfig(guiAvionicsConfigName, techNode);
                        }
                        if (switchedConfig)
                        {
                            ProceduralAvionicsTechManager.SetMaxUnlockedTech(guiAvionicsConfigName, techNode.name);
                        }
                    }
                    if (switchedConfig)
                    {
                        Log("Configuration window changed, updating part window");
                        UpdateConfigSliders();
                        avionicsTechLevel = techNode.name;
                        CurrentProceduralAvionicsConfig = currentlyDisplayedConfigs;
                        avionicsConfigName = guiAvionicsConfigName;
                        AvionicsConfigChanged();
                    }
                }
            }
            GUILayout.Label(" ");
            if (GUILayout.Button("Close"))
            {
                showGUI = false;
            }

            GUI.DragWindow();
        }
Example #6
0
        void WindowFunction(int windowID)
        {
            string[] configNames = ProceduralAvionicsTechManager.GetAvailableConfigs().ToArray();

            selectedConfigIndex = GUILayout.Toolbar(
                selectedConfigIndex,
                configNames);

            string guiAvionicsConfigName = configNames[selectedConfigIndex];

            ProceduralAvionicsConfig currentlyDisplayedConfigs =
                ProceduralAvionicsTechManager.GetProceduralAvionicsConfig(guiAvionicsConfigName);

            foreach (ProceduralAvionicsTechNode techNode in currentlyDisplayedConfigs.TechNodes.Values)
            {
                if (!techNode.IsAvailable)
                {
                    continue;
                }
                if (techNode == CurrentProceduralAvionicsTechNode)
                {
                    GUILayout.Label("Current Config: " + techNode.name);
                    GUILayout.Label("Supported Tonnage: " + BuildTonnageString(techNode));
                    GUILayout.Label("SAS Level: " + techNode.SASServiceLevel.ToString());
                    GUILayout.Label("Storage Container: " + (techNode.hasScienceContainer ? "Yes" : "No"));
                }
                else
                {
                    bool switchedConfig = false;
                    int  unlockCost     = GetUnlockCost(guiAvionicsConfigName, techNode);
                    if (unlockCost == 0)
                    {
                        if (GUILayout.Button("Switch to " + BuildTechName(techNode)))
                        {
                            switchedConfig = true;
                        }
                    }
                    else if (Funding.Instance.Funds < unlockCost)
                    {
                        GUILayout.Label("Can't afford " + BuildTechName(techNode) + BuildCostString(unlockCost));
                    }
                    else if (GUILayout.Button("Purchase " + BuildTechName(techNode) + BuildCostString(unlockCost)))
                    {
                        switchedConfig = true;
                        if (!HighLogic.CurrentGame.Parameters.Difficulty.BypassEntryPurchaseAfterResearch)
                        {
                            // shouldn't need this since we only show this if you can afford it
                            // but just in case...
                            if (Funding.Instance.Funds >= unlockCost)
                            {
                                Funding.Instance.AddFunds(-unlockCost, TransactionReasons.RnDPartPurchase);
                            }
                            else
                            {
                                switchedConfig = false;
                            }
                        }
                        if (switchedConfig)
                        {
                            ProceduralAvionicsTechManager.SetMaxUnlockedTech(guiAvionicsConfigName, techNode.name);
                        }
                    }
                    if (switchedConfig)
                    {
                        Log("Configuration window changed, updating part window");
                        UpdateConfigSliders();
                        avionicsTechLevel = techNode.name;
                        currentProceduralAvionicsConfig = currentlyDisplayedConfigs;
                        avionicsConfigName = guiAvionicsConfigName;
                        AvionicsConfigChanged();
                        SetMinVolume(true);
                        ResetTo100();
                    }
                }
            }
            GUILayout.Label(" ");             // blank space
            if (GUILayout.Button("Reset to 100%"))
            {
                ResetTo100();
                RefreshPartWindow();
            }
            if (GUILayout.Button("Close"))
            {
                showGUI = false;
            }

            GUI.DragWindow();
        }