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); } }
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}"); } }
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); } }
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(); }
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(); }