internal override void DrawWindow(Int32 id) { SetLocalVariables(); try { GUILayout.BeginVertical(); } catch (Exception) { LogFormatted("DrawWindow: GUILayout not ready yet"); return; } if (mbARP.lstResourcesToDisplay.Count == 0) { GUILayout.Label("No current resources configured to display"); } else { Int32 ResourceID; Rect rectBar; for (int i = 0; i < mbARP.lstResourcesToDisplay.Count; i++) { ResourceID = mbARP.lstResourcesToDisplay[i]; //Is it a separator - draw and skip? if (ResourceID == 0) { GUILayout.Space(3 + settings.SpacerPadding); GUILayout.Label("", Styles.styleSeparatorH, GUILayout.Width(WindowRect.width - 15), GUILayout.Height(2)); GUILayout.Space(settings.SpacerPadding); continue; } //add space at top of window if (i > 0) { GUILayout.Space(4); } GUILayout.BeginHorizontal(); //add title Rect rectIcon = Drawing.DrawResourceIcon(lstResources[ResourceID].ResourceDef.name); //If the global alarms setting is on if (settings.AlarmsEnabled) { GUILayout.Space(1); //work out the alarm ico to display GUIContent contAlarm = new GUIContent(Resources.btnAlarm); if (settings.Resources[ResourceID].AlarmEnabled) { contAlarm.image = Resources.btnAlarmEnabled; switch (lstResources[ResourceID].MonitorState) { case ARPResource.MonitorStateEnum.Alert: if (lstResources[ResourceID].AlarmState != ARPResource.AlarmStateEnum.Unacknowledged || DateTime.Now.Millisecond < 500) { contAlarm.image = Resources.btnAlarmAlert; } break; case ARPResource.MonitorStateEnum.Warn: if (lstResources[ResourceID].AlarmState != ARPResource.AlarmStateEnum.Unacknowledged || DateTime.Now.Millisecond < 500) { contAlarm.image = Resources.btnAlarmWarn; } break; default: break; } } //Draw the button - if the alarm is unacknowledged then acknowledge, else toggle alarm status if (GUILayout.Button(contAlarm, Styles.styleAlarmButton)) { if (lstResources[ResourceID].AlarmState == ARPResource.AlarmStateEnum.Unacknowledged) { lstResources[ResourceID].SetAlarmAcknowledged(); } else { settings.Resources[ResourceID].AlarmEnabled = !settings.Resources[ResourceID].AlarmEnabled; } } } //Is this resource selected Boolean Highlight = SelectedResources.ContainsKey(ResourceID) && SelectedResources[ResourceID].AllVisible; //For resources with no stage specifics - or the Resources is set to split display and values are different for all vessel and flow enabled ones if (!settings.SplitLastStage || !lstResources[ResourceID].ResourceConfig.SplitLastStage || settings.ShowBase || (lstResources[ResourceID].ResourceDef.resourceFlowMode == ResourceFlowMode.ALL_VESSEL || lstResources[ResourceID].ResourceDef.resourceFlowMode == ResourceFlowMode.STAGE_PRIORITY_FLOW) && ((!settings.Resources[ResourceID].ShowReserveLevels) || (!lstResourcesLastStage.ContainsKey(ResourceID))) ) { //full width bar rectBar = Drawing.CalcBarRect(rectIcon, Icon2BarOffset_Left, 275, 15); //was 245 if (Drawing.DrawResourceBar(rectBar, lstResources[ResourceID], Styles.styleBarGreen_Back, Styles.styleBarGreen, Styles.styleBarGreen_Thin, settings.ShowRates, Highlight, Styles.styleBarHighlight)) { //MonoBehaviourExtended.LogFormatted_DebugOnly("Clicked"); SelectedResources.TogglePartResourceVisible(ResourceID); } } else { Int32 FullVesselBarOffset = settings.StageBarOnRight ? Icon2BarOffset_Left : Icon2BarOffset_Right; Int32 StageBarOffset = settings.StageBarOnRight ? Icon2BarOffset_Right : Icon2BarOffset_Left; //need full Vessel and current stage bars rectBar = Drawing.CalcBarRect(rectIcon, FullVesselBarOffset, 135, 15); //was 120 if (Drawing.DrawResourceBar(rectBar, lstResources[ResourceID], Styles.styleBarGreen_Back, Styles.styleBarGreen, Styles.styleBarGreen_Thin, settings.ShowRates, Highlight, Styles.styleBarHighlight)) { SelectedResources.TogglePartResourceVisible(ResourceID); } //get last stage of this resource and set it if (lstResourcesLastStage.ContainsKey(ResourceID)) { Highlight = SelectedResources.ContainsKey(ResourceID) && SelectedResources[ResourceID].LastStageVisible; rectBar = Drawing.CalcBarRect(rectIcon, StageBarOffset, 135, 15); //was 120 if (Drawing.DrawResourceBar(rectBar, lstResourcesLastStage[ResourceID], Styles.styleBarBlue_Back, Styles.styleBarBlue, Styles.styleBarBlue_Thin, settings.ShowRates, Highlight, Styles.styleBarHighlight)) { SelectedResources.TogglePartResourceVisible(ResourceID, true); } } } GUILayout.EndHorizontal(); } } GUILayout.BeginHorizontal(); ////STAGING STUFF if (settings.StagingEnabled) { ////Keyboard Stage Lock //GUIContent contLock = new GUIContent(Resources.btnUnlock, "Keyboard Staging Unlocked\r\nClick to toggle"); //if (FlightInputHandler.fetch.stageLock) // contLock = new GUIContent(Resources.btnLock, "Keyboard Staging Locked\r\nClick to toggle"); //if (GUILayout.Button(contLock, Styles.styleAlarmButton)) // FlightInputHandler.fetch.stageLock = !FlightInputHandler.fetch.stageLock; if (!settings.AutoStagingEnabled) { //GUILayout.Label("Stage:", Styles.styleStageTextHead, GUILayout.Width(50)); if (GUILayout.Button("Stage:", Styles.styleStageTextHead, GUILayout.Width(50))) { settings.AutoStagingEnabled = !settings.AutoStagingEnabled; } GUIStyle styleStageNum = new GUIStyle(Styles.styleStageTextHead); GUIContent contStageNum = new GUIContent(StageManager.CurrentStage.ToString()); //styleStageNum.normal.textColor=new Color(173,43,43); //GUIContent contStageNum = new GUIContent(StageManager.CurrentStage.ToString(),"NO Active Engines"); //if (THERE ARE ACTIVE ENGINES IN STAGE) //{ //contStageNum.tooltip="Active Engines"; styleStageNum.normal.textColor = new Color(117, 206, 60); //} GUILayout.Label(contStageNum, styleStageNum, GUILayout.Width(20)); if (settings.StagingEnabledInMapView || !MapView.MapIsEnabled) { if (mbARP.blnVesselIsControllable) { if (GUILayout.Button("Activate Stage", "ButtonGeneral", GUILayout.Width(100))) { StageManager.ActivateNextStage(); } GUILayout.Space(21 + IconAlarmOffset); //GUILayout.Space(51 + IconAlarmOffset); } else { GUILayout.Label("No Vessel Control", GUILayout.Width(120)); GUILayout.Space(1 + IconAlarmOffset); //GUILayout.Space(31 + IconAlarmOffset); } } //GUILayout.Space(48 + IconAlarmOffset); //GUILayout.Space(21 + IconAlarmOffset); } else { if (GUILayout.Button("Auto:", Styles.styleStageTextHead, GUILayout.Width(50))) { settings.AutoStagingEnabled = !settings.AutoStagingEnabled; } GUILayout.Label(StageManager.CurrentStage.ToString(), Styles.styleStageTextHead, GUILayout.Width(20)); GUILayout.Label("to", Styles.styleStageTextHead, GUILayout.Width(30)); GUILayout.Label(mbARP.AutoStagingTerminateAt.ToString(), Styles.styleStageTextHead, GUILayout.Width(30)); DrawHorizontalSlider(ref mbARP.AutoStagingTerminateAt, 0, mbARP.AutoStagingMaxStage); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); String strButtonArm = "Arm"; GUIStyle styleArm = new GUIStyle(SkinsLibrary.CurrentSkin.button) { fontStyle = FontStyle.Bold }; if (mbARP.AutoStagingArmed) { strButtonArm = "Disarm"; styleArm.normal.textColor = styleArm.hover.textColor = new Color32(207, 31, 31, 255); } else { styleArm.normal.textColor = styleArm.hover.textColor = new Color32(183, 254, 0, 255); } if (GUILayout.Button(strButtonArm, styleArm, GUILayout.Width(75))) { mbARP.AutoStagingArmed = !mbARP.AutoStagingArmed; } GUIStyle StatusStyle = new GUIStyle(SkinsLibrary.CurrentSkin.label); StatusStyle.normal.textColor = mbARP.AutoStagingStatusColor; //GUILayout.Label(mbARP.AutoStagingStatus, StatusStyle, GUILayout.Width(147 + IconAlarmOffset)); GUILayout.Label(mbARP.AutoStagingStatus, StatusStyle, GUILayout.Width(120 + IconAlarmOffset)); //GUILayout.Label(mbARP.AutoStagingStatus, StatusStyle, GUILayout.Width(150 + IconAlarmOffset)); } } else { //GUILayout.Space(234 + IconAlarmOffset); GUILayout.Space(207 + IconAlarmOffset); //GUILayout.Space(237 + IconAlarmOffset); } // ShowBase Button Boolean blnShowBase = settings.ShowBase; if (DrawToggle(ref blnShowBase, new GUIContent(Resources.btnViewBaseActive, blnShowBase ? "Back to Vessel Display" : "Show Base Display\r\nAll resource within 2km of active vessel"), SkinsLibrary.GetStyle(SkinsLibrary.CurrentSkin, "ButtonToggle").PaddingChange(1), GUILayout.Width(23))) { settings.ShowBase = blnShowBase; } //if (GUILayout.Button(new GUIContent(settings.ShowBase ? Resources.btnViewBaseActive : Resources.btnViewBase, "Toggle Vessel/Base Display"), SkinsLibrary.CurrentSkin.button.PaddingChange(1), GUILayout.Width(23))) //{ // settings.ShowBase = !settings.ShowBase; //} // ShowTime Button Boolean blnShowTimeRem = settings.ShowTimeRem; if (DrawToggle(ref blnShowTimeRem, new GUIContent(Resources.btnViewTimes, blnShowTimeRem ? "Hide time Remianing": "Show Time Remaining"), SkinsLibrary.GetStyle(SkinsLibrary.CurrentSkin, "ButtonToggle").PaddingChange(1), GUILayout.Width(23))) { settings.ShowTimeRem = blnShowTimeRem; } //if (GUILayout.Button(new GUIContent(Resources.btnViewTimes, "Toggle Time Remaining"), SkinsLibrary.CurrentSkin.button.PaddingChange(1), GUILayout.Width(23))) //{ // settings.ShowTimeRem = !settings.ShowTimeRem; //} // ShowAll Button Boolean blnToggleHidden = KSPAlternateResourcePanel.ShowAll; if (DrawToggle(ref blnToggleHidden, new GUIContent(Resources.btnViewAll, "Toggle Hidden Resources"), SkinsLibrary.GetStyle(SkinsLibrary.CurrentSkin, "ButtonToggle").PaddingChange(1), GUILayout.Width(23))) { KSPAlternateResourcePanel.ShowAll = blnToggleHidden; } //if (GUILayout.Button(new GUIContent(Resources.btnViewAll, "Toggle Hidden Resources"), SkinsLibrary.CurrentSkin.button.PaddingChange(1), GUILayout.Width(23))) //{ // KSPAlternateResourcePanel.ShowAll = !KSPAlternateResourcePanel.ShowAll; //} //Settings Toggle button GUIContent btnMinMax = new GUIContent(Resources.btnChevronDown, "Show Settings..."); if (windowSettings.Visible) { btnMinMax.image = Resources.btnChevronUp; btnMinMax.tooltip = "Hide Settings"; } else if (settings.VersionAttentionFlag && DateTime.Now.Millisecond < 500) { btnMinMax.image = Resources.btnSettingsAttention; } if (settings.VersionAttentionFlag) { btnMinMax.tooltip = "Updated Version Available - " + btnMinMax.tooltip; } if (GUILayout.Button(btnMinMax, "ButtonSettings", GUILayout.Width(23))) { windowSettings.Visible = !windowSettings.Visible; if (windowSettings.Visible && settings.VersionAttentionFlag) { windowSettings.ddlSettingsTab.SelectedIndex = (Int32)ARPWindowSettings.SettingsTabs.About; settings.VersionAttentionFlag = false; } settings.Save(); } GUILayout.EndHorizontal(); //End window layout GUILayout.EndVertical(); //If settings window is visible then position it accordingly if (mbARP.windowSettings.Visible) { mbARP.windowSettings.UpdateWindowRect(); } }
internal override void DrawWindow(int id) { TransfersCount = 0; if (SkinsLibrary.CurrentSkin.name == "Unity") { GUI.Box(new Rect(0, 0, WindowWidthForBars - 1, WindowRect.height - 1), "", SkinsLibrary.CurrentSkin.window); } GUILayout.BeginVertical(); GUI.Label(new Rect(0, 0, WindowWidthForBars + WindowWidthForFlowControl - 1, 18), this.PartRef.partInfo.title, Styles.stylePartWindowHead); GUILayout.Space(18); int i = 0; foreach (int key in this.ResourceList.Keys) { Boolean TransferExists = mbARP.lstTransfers.ItemExists(this.PartID, key); Boolean TransferActive = false; GUIStyle Highlight = Styles.styleBarHighlight; if (TransferExists) { if (mbARP.lstTransfers.GetItem(this.PartID, key).transferState == TransferStateEnum.In) { Highlight = Styles.styleBarHighlightGreen; } else if (mbARP.lstTransfers.GetItem(this.PartID, key).transferState == TransferStateEnum.Out) { Highlight = Styles.styleBarHighlightRed; } TransferActive = mbARP.lstTransfers.GetItem(this.PartID, key).Active; } GUILayout.Space(2); if (i > 0) { GUILayout.Space(2); } GUILayout.BeginHorizontal(); GUILayout.Space(5); //add title Rect rectIcon = Drawing.DrawResourceIcon(this.ResourceList[key].ResourceDef.name); GUILayout.Space(2); Rect rectBar = Drawing.CalcBarRect(rectIcon, Icon2BarOffset, 120, 15); if (Drawing.DrawResourceBar(rectBar, this.ResourceList[key], Styles.styleBarGreen_Back, Styles.styleBarGreen, Styles.styleBarGreen_Thin, settings.ShowRatesForParts, TransferActive, Highlight)) { //if (this.ResourceList[key].ResourceDef.resourceTransferMode != ResourceTransferMode.NONE) if (this.ResourceList[key].ResourceDef.resourceTransferMode != ResourceTransferMode.NONE && ( HighLogic.CurrentGame.Mode != Game.Modes.CAREER || GameVariables.Instance.UnlockedFuelTransfer(ScenarioUpgradeableFacilities.GetFacilityLevel(SpaceCenterFacility.ResearchAndDevelopment)) ) ) { //toggle the transfer line if (TransferExists) { mbARP.lstTransfers.RemoveItem(this.PartID, key); TransferExists = false; } else { mbARP.lstTransfers.AddItem(this.PartRef, this.ResourceList[key].ResourceDef, TransferStateEnum.None); } } } if (this.ResourceList[key].ResourceDef.resourceFlowMode != ResourceFlowMode.NO_FLOW) { if (Drawing.DrawFlowControlButton(rectBar, this.PartRef.Resources.Get(key).flowState)) { this.PartRef.Resources.Get(key).flowState = !this.PartRef.Resources.Get(key).flowState; } } GUILayout.EndHorizontal(); if (TransferExists) { TransfersCount++; ARPTransfer tmpTransfer = mbARP.lstTransfers.GetItem(this.PartID, key); GUILayout.Space(1); GUILayout.BeginHorizontal(); GUILayout.Space(8); GUIStyle styleTransfer = new GUIStyle(SkinsLibrary.CurrentSkin.label); styleTransfer.fixedHeight = 19; styleTransfer.padding.top = -8; styleTransfer.padding.bottom = 0; //GUILayout.Label("Transfer: " + tmpTransfer.transferState, styleTransfer); GUILayout.Label("Transfer: ", styleTransfer); GUILayout.Space(21); GUIStyle styleTransferButton = new GUIStyle(SkinsLibrary.CurrentSkin.button); styleTransferButton.fixedHeight = 19; styleTransferButton.fixedWidth = 40; styleTransferButton.onNormal = styleTransferButton.active; styleTransferButton.padding = new RectOffset(0, 0, 0, 0); styleTransferButton.margin = new RectOffset(0, 0, 0, 0); String strOut = (tmpTransfer.transferState == TransferStateEnum.Out && tmpTransfer.Active) ? "Stop" : "Out"; String strIn = (tmpTransfer.transferState == TransferStateEnum.In && tmpTransfer.Active) ? "Stop" : "In"; Boolean blnTempOut = GUILayout.Toggle(tmpTransfer.transferState == TransferStateEnum.Out, strOut, styleTransferButton); Boolean blnTempIn = GUILayout.Toggle(tmpTransfer.transferState == TransferStateEnum.In, strIn, styleTransferButton); if (blnTempOut && (tmpTransfer.transferState != TransferStateEnum.Out)) { //if there are any transfers in place for this resource then turn off the Out //if (mbARP.lstTransfers.Any(x => x.ResourceID == key && x.Active)) // mbARP.lstTransfers.SetStateNone(key); //else // mbARP.lstTransfers.SetStateNone(key, TransferStateEnum.Out); tmpTransfer.transferState = TransferStateEnum.Out; } else if (blnTempIn && (tmpTransfer.transferState != TransferStateEnum.In)) { //if there are any transfers in place for this resource then turn off the In //if (mbARP.lstTransfers.Any(x => x.ResourceID == key && x.Active)) // mbARP.lstTransfers.SetStateNone(key); //else // mbARP.lstTransfers.SetStateNone(key, TransferStateEnum.In); tmpTransfer.transferState = TransferStateEnum.In; } else if (!blnTempIn && !blnTempOut && (tmpTransfer.transferState != TransferStateEnum.None)) { tmpTransfer.transferState = TransferStateEnum.None; } //if (tmpTransfer.Active) //{ // GUILayout.Space(20); // if (GUILayout.Button("Stop", styleTransferButton)) // { // //mbARP.lstTransfers.SetStateNone(key); // mbARP.lstTransfers.SetStateNone(key); // } //} //else //{ // //if (GUILayout.Button("Out", styleTransferButton)) { tmpTransfer.transferState = TransferStateEnum.Out; } // //if (GUILayout.Button("In", styleTransferButton)) { tmpTransfer.transferState = TransferStateEnum.In; } // //if (GUILayout.Button("None", styleTransferButton)) { tmpTransfer.transferState = TransferStateEnum.None; } // Boolean blnTempOut = GUILayout.Toggle(tmpTransfer.transferState == TransferStateEnum.Out, "Out", styleTransferButton); // Boolean blnTempIn = GUILayout.Toggle(tmpTransfer.transferState == TransferStateEnum.In, "In", styleTransferButton); // if (blnTempOut && (tmpTransfer.transferState != TransferStateEnum.Out)) // { // if (mbARP.lstTransfers.Any(x=>x.transferState== TransferStateEnum.In)) // mbARP.lstTransfers.SetStateNone(key); // else // mbARP.lstTransfers.SetStateNone(key, TransferStateEnum.Out); // tmpTransfer.transferState = TransferStateEnum.Out; // } // else if (blnTempIn && (tmpTransfer.transferState != TransferStateEnum.In)) // { // if (mbARP.lstTransfers.Any(x => x.transferState == TransferStateEnum.Out)) // mbARP.lstTransfers.SetStateNone(key); // else // mbARP.lstTransfers.SetStateNone(key, TransferStateEnum.In); // tmpTransfer.transferState = TransferStateEnum.In; // } // else if (!blnTempIn && !blnTempOut && (tmpTransfer.transferState != TransferStateEnum.None)) // tmpTransfer.transferState = TransferStateEnum.None; //} GUILayout.EndHorizontal(); } i++; } }