Consolidate the three HashSet fillers into one function

This commit is contained in:
lutepickle 2024-05-29 20:59:06 -07:00
parent 4a41bb69f4
commit cf6fd77ea8

View file

@ -1,5 +1,6 @@
using RimWorld;
using rjw;
using System;
using System.Collections.Generic;
using System.Linq;
using Verse;
@ -74,26 +75,27 @@ namespace RJW_Menstruation
return allkinds;
}
}
private static HashSet<HediffDef> GetCompHashSet(Type type)
{
HashSet<HediffDef> set = new HashSet<HediffDef>();
foreach (HediffDef hediffDef in DefDatabase<HediffDef>.AllDefsListForReading)
{
if (hediffDef.comps.NullOrEmpty()) continue;
foreach (HediffCompProperties comp in hediffDef.comps)
if (comp.compClass == type || (comp.compClass?.IsSubclassOf(type) ?? false))
{
set.Add(hediffDef);
break;
}
}
return set;
}
public static HashSet<HediffDef> AllVaginas
{
get
{
if (allvaginas != null) return allvaginas;
allvaginas = new HashSet<HediffDef>();
foreach(HediffDef hediffDef in DefDatabase<HediffDef>.AllDefsListForReading)
{
if (hediffDef.comps.NullOrEmpty()) continue;
foreach (HediffCompProperties comp in hediffDef.comps)
{
if (comp.compClass == typeof(HediffComp_Menstruation) || (comp.compClass?.IsSubclassOf(typeof(HediffComp_Menstruation)) ?? false))
{
allvaginas.Add(hediffDef);
break;
}
}
}
allvaginas = GetCompHashSet(typeof(HediffComp_Menstruation));
return allvaginas;
}
}
@ -102,21 +104,7 @@ namespace RJW_Menstruation
get
{
if (allanuses != null) return allanuses;
allanuses = new HashSet<HediffDef>();
foreach (HediffDef hediffDef in DefDatabase<HediffDef>.AllDefsListForReading)
{
if (hediffDef.comps.NullOrEmpty()) continue;
foreach (HediffCompProperties comp in hediffDef.comps)
{
if (comp.compClass == typeof(HediffComp_Anus) || (comp.compClass?.IsSubclassOf(typeof(HediffComp_Anus)) ?? false))
{
allanuses.Add(hediffDef);
break;
}
}
}
allanuses = GetCompHashSet(typeof(HediffComp_Anus));
return allanuses;
}
}
@ -125,21 +113,7 @@ namespace RJW_Menstruation
get
{
if (allbreasts != null) return allbreasts;
allbreasts = new HashSet<HediffDef>();
foreach(HediffDef hediffDef in DefDatabase<HediffDef>.AllDefsListForReading)
{
if (hediffDef.comps.NullOrEmpty()) continue;
foreach(HediffCompProperties comp in hediffDef.comps)
{
if (comp.compClass == typeof(HediffComp_Breast) || (comp.compClass?.IsSubclassOf(typeof(HediffComp_Breast)) ?? false))
{
allbreasts.Add(hediffDef);
break;
}
}
}
allbreasts = GetCompHashSet(typeof(HediffComp_Breast));
return allbreasts;
}
}