Simplify a bunch of for loops into functions

This commit is contained in:
lutepickle 2022-07-14 18:51:16 -07:00
parent aa81fae8bd
commit 92fab44764
3 changed files with 12 additions and 51 deletions

Binary file not shown.

View file

@ -136,39 +136,24 @@ namespace RJW_Menstruation
{
get
{
float res = 0;
if (cums.NullOrEmpty()) return 0;
foreach (Cum cum in cums)
{
res += cum.Volume;
}
return res;
return cums.Sum(cum => cum.Volume);
}
}
public float TotalFertCum
{
get
{
float res = 0;
if (cums.NullOrEmpty()) return 0;
foreach (Cum cum in cums)
{
if (!cum.notcum) res += cum.FertVolume;
}
return res;
return cums.Sum(cum => cum.FertVolume);
}
}
public float TotalCumPercent
{
get
{
float res = 0;
if (cums.NullOrEmpty()) return 0;
foreach (Cum cum in cums)
{
res += cum.Volume;
}
return res / Props.maxCumCapacity;
return cums.Sum(cum => cum.Volume) / Props.maxCumCapacity;
}
}
public float CumCapacity
@ -372,11 +357,7 @@ namespace RJW_Menstruation
get
{
if (eggs.NullOrEmpty() || cums.NullOrEmpty()) return false;
foreach (Cum cum in cums)
{
if (cum.FertVolume > 0) return true;
}
return false;
return cums.Any(cum => cum.FertVolume > 0);
}
}
/// <summary>
@ -573,11 +554,8 @@ namespace RJW_Menstruation
/// <returns></returns>
public Cum GetCum(Pawn pawn)
{
if (!cums.NullOrEmpty()) foreach (Cum cum in cums)
{
if (!cum.notcum && cum.pawn.Equals(pawn)) return cum;
}
return null;
if (cums.NullOrEmpty()) return null;
return cums.Find(cum => !cum.notcum && cum.pawn == pawn);
}
/// <summary>
@ -1076,9 +1054,7 @@ namespace RJW_Menstruation
List<Cum> eligibleCum = cums.FindAll(cum => !cum.notcum && cum.FertVolume > 0 && cum.pawn != null && (RJWPregnancySettings.bestial_pregnancy_enabled || xxx.is_animal(parent.pawn) == xxx.is_animal(cum.pawn)));
if (eligibleCum.Count == 0) return null;
float totalFertPower = 0;
foreach (Cum cum in eligibleCum)
totalFertPower += cum.FertVolume;
float totalFertPower = eligibleCum.Sum(cum => cum.FertVolume);
if (Rand.Range(0.0f, 1.0f) > 1.0f - Mathf.Pow(1.0f - Configurations.FertilizeChance, totalFertPower * Props.basefertilizationChanceFactor))
return null;
@ -1093,20 +1069,7 @@ namespace RJW_Menstruation
}
// We shouldn't reach here, but floating point errors exist, so just to be sure, select whomever came the most
float mostCum = 0;
Pawn mostCummer = null;
foreach (Cum cum in eligibleCum)
{
if (cum.FertVolume > mostCum)
{
mostCum = cum.FertVolume;
mostCummer = cum.pawn;
}
}
return mostCummer;
return eligibleCum.MaxBy(cum => cum.FertVolume).pawn;
}

View file

@ -59,11 +59,9 @@ namespace RJW_Menstruation
Pawn pawn = props.partner;
Hediff_BasePregnancy newestPregnancy = pawn.health.hediffSet.GetHediffs<Hediff_BasePregnancy>().MaxBy(hediff => hediff.loadID);
if (newestPregnancy == null) return;
foreach (HediffComp_Menstruation comp in pawn.GetMenstruationComps())
{
if (comp.Pregnancy == newestPregnancy) return; // One of the wombs did get it
}
__state.Pregnancy = newestPregnancy;
if (pawn.GetMenstruationComps().Any(comp => comp.Pregnancy == newestPregnancy)) return; // One of the wombs did get it
else __state.Pregnancy = newestPregnancy;
}
/// <summary>