public static void DoThingFilterConfigWindow(Rect rect, ref Vector2 scrollPosition, ThingFilter filter, ThingFilter parentFilter = null, int openMask = 1, IEnumerable <ThingDef> forceHiddenDefs = null, IEnumerable <SpecialThingFilterDef> forceHiddenFilters = null, bool forceHideHitPointsConfig = false, List <ThingDef> suppressSmallVolumeTags = null, Map map = null) { Widgets.DrawMenuSection(rect); Text.Font = GameFont.Tiny; float num = rect.width - 2f; Rect rect2 = new Rect(rect.x + 1f, rect.y + 1f, num / 2f, 24f); if (Widgets.ButtonText(rect2, "ClearAll".Translate(), true, false, true)) { filter.SetDisallowAll(forceHiddenDefs, forceHiddenFilters); SoundDefOf.Checkbox_TurnedOff.PlayOneShotOnCamera(null); } Rect rect3 = new Rect(rect2.xMax + 1f, rect2.y, rect.xMax - 1f - (rect2.xMax + 1f), 24f); if (Widgets.ButtonText(rect3, "AllowAll".Translate(), true, false, true)) { filter.SetAllowAll(parentFilter); SoundDefOf.Checkbox_TurnedOn.PlayOneShotOnCamera(null); } Text.Font = GameFont.Small; rect.yMin = rect2.yMax; TreeNode_ThingCategory node = ThingCategoryNodeDatabase.RootNode; bool flag = true; bool flag2 = true; if (parentFilter != null) { node = parentFilter.DisplayRootCategory; flag = parentFilter.allowedHitPointsConfigurable; flag2 = parentFilter.allowedQualitiesConfigurable; } Rect viewRect = new Rect(0f, 0f, rect.width - 16f, ThingFilterUI.viewHeight); Widgets.BeginScrollView(rect, ref scrollPosition, viewRect, true); float num2 = 2f; if (flag && !forceHideHitPointsConfig) { ThingFilterUI.DrawHitPointsFilterConfig(ref num2, viewRect.width, filter); } if (flag2) { ThingFilterUI.DrawQualityFilterConfig(ref num2, viewRect.width, filter); } float num3 = num2; Rect rect4 = new Rect(0f, num2, viewRect.width, 9999f); Listing_TreeThingFilter listing_TreeThingFilter = new Listing_TreeThingFilter(filter, parentFilter, forceHiddenDefs, forceHiddenFilters, suppressSmallVolumeTags); listing_TreeThingFilter.Begin(rect4); listing_TreeThingFilter.DoCategoryChildren(node, 0, openMask, map, true); listing_TreeThingFilter.End(); if (Event.current.type == EventType.Layout) { ThingFilterUI.viewHeight = num3 + listing_TreeThingFilter.CurHeight + 90f; } Widgets.EndScrollView(); }
public override void ResolveReferences() { base.ResolveReferences(); DeepProfiler.Start("Stat refs"); try { if (workTableSpeedStat == null) { workTableSpeedStat = StatDefOf.WorkTableWorkSpeedFactor; } if (workTableEfficiencyStat == null) { workTableEfficiencyStat = StatDefOf.WorkTableEfficiencyFactor; } } finally { DeepProfiler.End(); } DeepProfiler.Start("ingredients reference resolve"); try { for (int i = 0; i < ingredients.Count; i++) { ingredients[i].ResolveReferences(); } } finally { DeepProfiler.End(); } DeepProfiler.Start("fixedIngredientFilter.ResolveReferences()"); try { if (fixedIngredientFilter != null) { fixedIngredientFilter.ResolveReferences(); } } finally { DeepProfiler.End(); } DeepProfiler.Start("defaultIngredientFilter setup"); try { if (defaultIngredientFilter == null) { defaultIngredientFilter = new ThingFilter(); if (fixedIngredientFilter != null) { defaultIngredientFilter.CopyAllowancesFrom(fixedIngredientFilter); } } } finally { DeepProfiler.End(); } DeepProfiler.Start("defaultIngredientFilter.ResolveReferences()"); try { defaultIngredientFilter.ResolveReferences(); } finally { DeepProfiler.End(); } }