private static bool PurchaseConfig(string curCfgName, ProceduralAvionicsTechNode techNode) { bool success = false; if (!HighLogic.CurrentGame.Parameters.Difficulty.BypassEntryPurchaseAfterResearch) { success = ProceduralAvionicsTechManager.PurchaseConfig(curCfgName, techNode); } if (success) { ProceduralAvionicsTechManager.SetMaxUnlockedTech(curCfgName, techNode.name); } return(success); }
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(); }
private void WindowFunction(int windowID) { GUILayout.BeginHorizontal(); bool oldShowInfo = _showInfo1; _showInfo1 = GUILayout.Toggle(_showInfo1, "ⓘ", HighLogic.Skin.button, GUILayout.ExpandWidth(false), GUILayout.Height(20)); if (oldShowInfo != _showInfo1) { var settings = HighLogic.CurrentGame.Parameters.CustomParams <RP0Settings>(); settings.AvionicsWindow_ShowInfo1 = _showInfo1; _shouldResetUIHeight = true; } if (_showInfo1) { GUILayout.Label(info1Text); } GUILayout.EndHorizontal(); GUILayout.BeginVertical(HighLogic.Skin.box); GUILayout.Label("Choose the avionics type:", HighLogic.Skin.label); int oldConfigIdx = _selectedConfigIndex; _selectedConfigIndex = GUILayout.Toolbar(_selectedConfigIndex, _avionicsConfigNames, HighLogic.Skin.button); if (oldConfigIdx != _selectedConfigIndex) { _shouldResetUIHeight = true; } string curCfgName = _avionicsConfigNames[_selectedConfigIndex]; ProceduralAvionicsConfig curCfg = ProceduralAvionicsTechManager.GetProceduralAvionicsConfig(curCfgName); GUILayout.BeginHorizontal(); oldShowInfo = _showInfo2; _showInfo2 = GUILayout.Toggle(_showInfo2, "ⓘ", HighLogic.Skin.button, GUILayout.ExpandWidth(false), GUILayout.Height(20)); if (oldShowInfo != _showInfo2) { var settings = HighLogic.CurrentGame.Parameters.CustomParams <RP0Settings>(); settings.AvionicsWindow_ShowInfo2 = _showInfo2; _shouldResetUIHeight = true; } if (_showInfo2) { GUILayout.Label(curCfg.description); } GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUILayout.Space(7); GUILayout.BeginVertical(HighLogic.Skin.box); GUILayout.Label("Choose the tech level:", HighLogic.Skin.label); foreach (var techNode in curCfg.TechNodes.Values) { if (!techNode.IsAvailable) { continue; } bool switchedConfig = false; int unlockCost = ProceduralAvionicsTechManager.GetUnlockCost(curCfgName, techNode); if (unlockCost == 0) { bool isCurrent = techNode == CurrentProceduralAvionicsTechNode; if (isCurrent) { GUILayout.Toggle(true, BuildTechName(techNode), HighLogic.Skin.button); GUILayout.Label("Sample container: " + (techNode.hasScienceContainer ? "Yes" : "No"), HighLogic.Skin.label); GUILayout.Label("Can hibernate: " + (techNode.disabledPowerFactor > 0 ? "Yes" : "No"), HighLogic.Skin.label); } else if (GUILayout.Button("Switch to " + BuildTechName(techNode), HighLogic.Skin.button)) { switchedConfig = true; } } else if (Funding.Instance.Funds < unlockCost) { GUILayout.Label($"Can't afford {BuildTechName(techNode)} {BuildCostString(unlockCost)}", HighLogic.Skin.label); } else if (GUILayout.Button($"Purchase {BuildTechName(techNode)} {BuildCostString(unlockCost)}", HighLogic.Skin.button)) { switchedConfig = true; if (!HighLogic.CurrentGame.Parameters.Difficulty.BypassEntryPurchaseAfterResearch) { switchedConfig = ProceduralAvionicsTechManager.PurchaseConfig(curCfgName, techNode); } if (switchedConfig) { ProceduralAvionicsTechManager.SetMaxUnlockedTech(curCfgName, techNode.name); } } if (switchedConfig) { Log("Configuration window changed, updating part window"); _shouldResetUIHeight = true; _showROTankSizeWarning = false; SetupConfigNameFields(); avionicsTechLevel = techNode.name; CurrentProceduralAvionicsConfig = curCfg; avionicsConfigName = curCfgName; AvionicsConfigChanged(); MonoUtilities.RefreshContextWindows(part); } } GUILayout.EndVertical(); GUILayout.Space(7); GUILayout.BeginVertical(HighLogic.Skin.box); GUILayout.BeginHorizontal(); oldShowInfo = _showInfo3; _showInfo3 = GUILayout.Toggle(_showInfo3, "ⓘ", HighLogic.Skin.button, GUILayout.ExpandWidth(false), GUILayout.Height(20)); if (oldShowInfo != _showInfo3) { var settings = HighLogic.CurrentGame.Parameters.CustomParams <RP0Settings>(); settings.AvionicsWindow_ShowInfo3 = _showInfo3; _shouldResetUIHeight = true; } if (_showInfo3) { GUILayout.Label(info3Text); } GUILayout.EndHorizontal(); if (!IsScienceCore) { GUILayout.BeginHorizontal(GUILayout.MaxWidth(250)); GUILayout.Label("Controllable mass: ", HighLogic.Skin.label, GUILayout.Width(150)); _sControllableMass = GUILayout.TextField(_sControllableMass, HighLogic.Skin.textField); GUILayout.Label("t", HighLogic.Skin.label); GUILayout.EndHorizontal(); } GUILayout.BeginHorizontal(GUILayout.MaxWidth(250)); GUILayout.Label("EC amount: ", HighLogic.Skin.label, GUILayout.Width(150)); _sECAmount = GUILayout.TextField(_sECAmount, HighLogic.Skin.textField); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(GUILayout.MaxWidth(250)); GUILayout.Label("Additional tank volume: ", HighLogic.Skin.label, GUILayout.Width(150)); GUI.enabled = _seekVolumeMethod != null; _sExtraVolume = GUILayout.TextField(_sExtraVolume, HighLogic.Skin.textField); GUI.enabled = true; GUILayout.Label("l", HighLogic.Skin.label); GUILayout.EndHorizontal(); if (_showROTankSizeWarning) { GUILayout.Label("ROTanks does not currently support automatic resizing to correct dimensions. Increase the part size manually until it has sufficient volume.", HighLogic.Skin.label); } GUILayout.EndVertical(); GUILayout.BeginHorizontal(); if (GUILayout.Button("Apply", HighLogic.Skin.button)) { ApplyAvionicsSettings(); } if (GUILayout.Button("Close", HighLogic.Skin.button)) { showGUI = false; } GUILayout.EndHorizontal(); GUI.DragWindow(); }