public ExperimentSubjectList(KsmGuiBase parent, ExperimentInfo expInfo) : base(parent) { KnownSubjectsToggle = new KsmGuiToggle(this, "Show only known subjects", true, ToggleKnownSubjects, null, -1, 21); KsmGuiBase listHeader = new KsmGuiBase(this); listHeader.SetLayoutElement(true, false, -1, 16); listHeader.AddImageComponentWithColor(KsmGuiStyle.boxColor); KsmGuiText rndHeaderText = new KsmGuiText(listHeader, "RnD", "Science points\nretrieved in RnD", TextAlignmentOptions.Left); rndHeaderText.TextComponent.color = Lib.KolorToColor(Lib.Kolor.Science); rndHeaderText.TextComponent.fontStyle = FontStyles.Bold; rndHeaderText.TopTransform.SetAnchorsAndPosition(TextAnchor.MiddleLeft, TextAnchor.MiddleLeft, 10, 0); rndHeaderText.TopTransform.SetSizeDelta(50, 16); KsmGuiText flightHeaderText = new KsmGuiText(listHeader, "Flight", "Science points\ncollected in all vessels", TextAlignmentOptions.Left); flightHeaderText.TextComponent.color = Lib.KolorToColor(Lib.Kolor.Science); flightHeaderText.TextComponent.fontStyle = FontStyles.Bold; flightHeaderText.TopTransform.SetAnchorsAndPosition(TextAnchor.MiddleLeft, TextAnchor.MiddleLeft, 60, 0); flightHeaderText.TopTransform.SetSizeDelta(50, 16); KsmGuiText valueHeaderText = new KsmGuiText(listHeader, "Value", "Remaining science value\naccounting for data retrieved in RnD\nand collected in flight", TextAlignmentOptions.Left); valueHeaderText.TextComponent.color = Lib.KolorToColor(Lib.Kolor.Science); valueHeaderText.TextComponent.fontStyle = FontStyles.Bold; valueHeaderText.TopTransform.SetAnchorsAndPosition(TextAnchor.MiddleLeft, TextAnchor.MiddleLeft, 110, 0); valueHeaderText.TopTransform.SetSizeDelta(50, 16); KsmGuiText completedHeaderText = new KsmGuiText(listHeader, "Completed", "How many times the subject\nhas been retrieved in RnD", TextAlignmentOptions.Left); completedHeaderText.TextComponent.color = Lib.KolorToColor(Lib.Kolor.Yellow); completedHeaderText.TextComponent.fontStyle = FontStyles.Bold; completedHeaderText.TopTransform.SetAnchorsAndPosition(TextAnchor.MiddleLeft, TextAnchor.MiddleLeft, 160, 0); completedHeaderText.TopTransform.SetSizeDelta(100, 16); KsmGuiVerticalScrollView scrollView = new KsmGuiVerticalScrollView(this); scrollView.SetLayoutElement(true, true, 320, -1, -1, 250); scrollView.ContentGroup.padding = new RectOffset(0, 5, 5, 5); BodiesSituationsBiomesSubject subjects = GetSubjectsForExperiment(expInfo); if (subjects != null) { foreach (ObjectPair <int, SituationsBiomesSubject> bodySubjects in GetSubjectsForExperiment(expInfo)) { CelestialBody body = FlightGlobals.Bodies[bodySubjects.Key]; BodyContainer bodyEntry = new BodyContainer(scrollView, body, bodySubjects.Value); BodyContainers.Add(bodyEntry); } } SetUpdateCoroutine(new KsmGuiUpdateCoroutine(Update)); ForceExecuteCoroutine(); ToggleKnownSubjects(true); }
private void Init() { Lib.Log("Science Archive init started"); window = new KsmGuiWindow( KsmGuiWindow.LayoutGroupType.Vertical, false, 1f, true, 0, TextAnchor.UpperLeft, 5f, TextAnchor.UpperLeft, TextAnchor.UpperLeft, 280, -100); KsmGuiHeader mainHeader = new KsmGuiHeader(window, Local.SCIENCEARCHIVE_title); //"SCIENCE ARCHIVE" new KsmGuiIconButton(mainHeader, Textures.KsmGuiTexHeaderClose, () => Close()); KsmGuiHorizontalLayout columns = new KsmGuiHorizontalLayout(window, 5, 0, 0, 5, 0); KsmGuiVerticalLayout experimentColumn = new KsmGuiVerticalLayout(columns, 5); experimentColumn.SetLayoutElement(false, true, 160); new KsmGuiHeader(experimentColumn, Local.SCIENCEARCHIVE_EXPERIMENTS); //"EXPERIMENTS" researchFilter = new KsmGuiToggle(experimentColumn, Local.SCIENCEARCHIVE_filter1, true, OnToggleResearchedFilter); //"filter by researched" if (Kerbalism.SerenityEnabled) { ROCFilter = new KsmGuiToggle(experimentColumn, Local.SCIENCEARCHIVE_filter2, true, OnToggleROCFilter); //"filter ROCs" } vesselFilter = new KsmGuiToggle(experimentColumn, Local.SCIENCEARCHIVE_filter3, false, OnToggleVesselFilter); //"filter by current vessel" KsmGuiVerticalScrollView experimentsScrollView = new KsmGuiVerticalScrollView(experimentColumn, 0, 0, 0, 0, 0); experimentsScrollView.SetLayoutElement(true, true, 160); experimentsToggleList = new KsmGuiToggleList <ExpInfoAndSubjects>(experimentsScrollView, OnToggleExperiment); foreach (ExperimentInfo expInfo in ScienceDB.ExperimentInfos.OrderBy(p => p.Title)) { ExperimentSubjectList experimentSubjectList = new ExperimentSubjectList(columns, expInfo); experimentSubjectList.Enabled = false; ExpInfoAndSubjects expInfoPlus = new ExpInfoAndSubjects(expInfo, experimentSubjectList); new KsmGuiToggleListElement <ExpInfoAndSubjects>(experimentsToggleList, expInfoPlus, expInfo.Title); } Toggle.ToggleEvent temp = experimentsToggleList.ChildToggles[0].ToggleComponent.onValueChanged; experimentsToggleList.ChildToggles[0].ToggleComponent.onValueChanged = new Toggle.ToggleEvent(); experimentsToggleList.ChildToggles[0].ToggleComponent.isOn = true; experimentsToggleList.ChildToggles[0].ToggleComponent.onValueChanged = temp; currentExperiment = experimentsToggleList.ChildToggles[0].ToggleId; currentExperiment.experimentSubjectList.Enabled = true; KsmGuiVerticalLayout expInfoColumn = new KsmGuiVerticalLayout(columns, 5); new KsmGuiHeader(expInfoColumn, Local.SCIENCEARCHIVE_EXPERIMENTINFO); //"EXPERIMENT INFO" KsmGuiVerticalScrollView expInfoScrollView = new KsmGuiVerticalScrollView(expInfoColumn); expInfoScrollView.SetLayoutElement(false, true, 200); expInfoText = new KsmGuiText(expInfoScrollView, currentExperiment.expInfo.ModuleInfo); expInfoText.SetLayoutElement(true, true); foreach (ExperimentInfo experimentInfo in ScienceDB.ExperimentInfos) { if (experimentInfo.IsROC) { ROCExpInfos.Add(experimentInfo); } } window.SetUpdateAction(Update, 20); Callbacks.onConfigure.Add(OnConfigure); //window.RebuildLayout(); window.Close(); Lib.Log("Science Archive init done"); }