From 8a7138106acab6b70b1172852a2e4104030d8357 Mon Sep 17 00:00:00 2001 From: Shabakur Date: Thu, 22 Dec 2022 19:04:56 +0100 Subject: [PATCH] Fixed and improved prioritization of racegenedefs Added an priority option to xml which decides the racegenedef to choose if an animal is present in multiple racegenedefs (under the same variable (racegroups, racenames or kinddefs --- Common/Assemblies/Rjw-Genes.dll | Bin 39936 -> 40448 bytes .../Animal_Inheritance/InheritanceUtility.cs | 2 +- Source/Animal_Inheritance/RaceGeneDef.cs | 2 +- .../Animal_Inheritance/RaceGeneDef_Helper.cs | 49 +++++++++--------- 4 files changed, 26 insertions(+), 27 deletions(-) diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index 9eef3ca59805d63453acde5d9fcaf2ad1690abf5..f0d8df357949c44e3e09485b2014ad6bff707538 100644 GIT binary patch delta 14560 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 delta 14257 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 V*P8Ia8A;qx*y>(;TxjlX{XYWh2_66d diff --git a/Source/Animal_Inheritance/InheritanceUtility.cs b/Source/Animal_Inheritance/InheritanceUtility.cs index 2b260dd..1996589 100644 --- a/Source/Animal_Inheritance/InheritanceUtility.cs +++ b/Source/Animal_Inheritance/InheritanceUtility.cs @@ -42,7 +42,7 @@ namespace RJW_BGS public static List SelectGenes(Pawn pawn) { List genelist = new List(); - RaceGeneDef raceGeneDef = RJWcopy.GetRaceGeneDefInternal(pawn); + RaceGeneDef raceGeneDef = RaceGeneDef_Helper.GetRaceGeneDefInternal(pawn); if (raceGeneDef != null) { foreach (BestialityGeneInheritanceDef gene in raceGeneDef.genes) diff --git a/Source/Animal_Inheritance/RaceGeneDef.cs b/Source/Animal_Inheritance/RaceGeneDef.cs index c4cbcea..02ac62d 100644 --- a/Source/Animal_Inheritance/RaceGeneDef.cs +++ b/Source/Animal_Inheritance/RaceGeneDef.cs @@ -10,7 +10,7 @@ namespace RJW_BGS { public class RaceGeneDef : Def { - + public int priority; public String raceGroup; public List raceNames; public List pawnKindNames; diff --git a/Source/Animal_Inheritance/RaceGeneDef_Helper.cs b/Source/Animal_Inheritance/RaceGeneDef_Helper.cs index ed6541a..680b155 100644 --- a/Source/Animal_Inheritance/RaceGeneDef_Helper.cs +++ b/Source/Animal_Inheritance/RaceGeneDef_Helper.cs @@ -9,31 +9,48 @@ using RimWorld; namespace RJW_BGS { - internal class RJWcopy + public class RaceGeneDef_Helper { //code based on racegroupdefinternal which has a similar function public static RaceGeneDef GetRaceGeneDefInternal(Pawn pawn) { + List Valids = ValidRaceGeneDefs(pawn); + if (Valids.Count > 0) + { + RaceGeneDef result = Valids.MaxBy(r => r.priority); + return result; + } + return null; + //First check if there is a matching pawnkinddef then race, then racegroup + + } + public static List ValidRaceGeneDefs(Pawn pawn) + { PawnKindDef kindDef = pawn.kindDef; if (kindDef == null) - { + { return null; - } + } string raceName = kindDef.race.defName; string pawnKindName = kindDef.defName; - IEnumerable allDefs = DefDatabase.AllDefs; PawnData pawnData = SaveStorage.DataStore.GetPawnData(pawn); RaceGroupDef raceGroupDef = pawnData.RaceSupportDef; + + IEnumerable allDefs = DefDatabase.AllDefs; List pawnKindDefs = allDefs.Where(delegate (RaceGeneDef group) { List pawnKindNames = group.pawnKindNames; return pawnKindNames != null && pawnKindNames.Contains(pawnKindName); }).ToList(); + if (pawnKindDefs.Count() > 0) + return pawnKindDefs; List raceKindDefs = allDefs.Where(delegate (RaceGeneDef group) { List raceNames = group.raceNames; return raceNames != null && raceNames.Contains(raceName); }).ToList(); + if (raceKindDefs.Count() > 0) + return raceKindDefs; List raceGroupDefs = new List(); if (raceGroupDef != null) { @@ -43,27 +60,9 @@ namespace RJW_BGS return raceGroupDefName != null && raceGroupDefName == raceGroupDef.defName; }).ToList(); } - RaceGeneDef result = null; - //First check if there is a matching pawnkinddef then race, then racegroup - if (pawnKindDefs.Any()) - { - result = pawnKindDefs.RandomElement(); - } - else if (raceKindDefs.Any() && result == null) - { - result = raceKindDefs.RandomElement(); - } - else if (raceGroupDefs.Any() && result == null) - { - result = raceGroupDefs.RandomElement(); - } - else - { - result = null; - } - return result; - - + if (raceGroupDefs.Count() > 0) + return raceGroupDefs; + return new List(); } } }