예제 #1
0
        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();
        }
예제 #2
0
 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();
     }
 }