From b497b9cfc22331489e460306bf6a8aa356dd79c1 Mon Sep 17 00:00:00 2001 From: Shabakur Date: Mon, 19 Dec 2022 20:48:56 +0100 Subject: [PATCH] New cleaner method to obtain racegroupdefs and bugfix in Patch_OrgasmRush --- Common/Assemblies/Rjw-Genes.dll | Bin 41984 -> 39936 bytes Source/Animal_Inheritance/First.cs | 2 +- .../Animal_Inheritance/InheritanceUtility.cs | 3 +- Source/Animal_Inheritance/RJW_BGSSettings.cs | 1 + Source/Animal_Inheritance/RJWcopies.cs | 157 ------------------ .../Animal_Inheritance/RaceGeneDef_Helper.cs | 69 ++++++++ Source/Genes/Special/Patch_OrgasmRush.cs | 2 +- Source/Rjw-Genes.csproj | 14 +- 8 files changed, 80 insertions(+), 168 deletions(-) delete mode 100644 Source/Animal_Inheritance/RJWcopies.cs create mode 100644 Source/Animal_Inheritance/RaceGeneDef_Helper.cs diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index b65ab1afa6c09f01ed31690b80ee0b3532129184..9eef3ca59805d63453acde5d9fcaf2ad1690abf5 100644 GIT binary patch delta 15090 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 delta 16902 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 diff --git a/Source/Animal_Inheritance/First.cs b/Source/Animal_Inheritance/First.cs index 8d353f7..8194ab3 100644 --- a/Source/Animal_Inheritance/First.cs +++ b/Source/Animal_Inheritance/First.cs @@ -14,7 +14,7 @@ namespace RJW_BGS { static First() { - RJWcopy.Racegroupdictbuilder(); + //RJWcopy.Racegroupdictbuilder(); //Prints all found race dicts (debugging only) //logAllFoundRaceGroupGenes diff --git a/Source/Animal_Inheritance/InheritanceUtility.cs b/Source/Animal_Inheritance/InheritanceUtility.cs index 8456f45..2b260dd 100644 --- a/Source/Animal_Inheritance/InheritanceUtility.cs +++ b/Source/Animal_Inheritance/InheritanceUtility.cs @@ -42,8 +42,7 @@ namespace RJW_BGS public static List SelectGenes(Pawn pawn) { List genelist = new List(); - PawnKindDef pawnKindDef = pawn.kindDef; - RaceGeneDef raceGeneDef = RJWcopy.GetRaceGenDefInternal(pawnKindDef); + RaceGeneDef raceGeneDef = RJWcopy.GetRaceGeneDefInternal(pawn); if (raceGeneDef != null) { foreach (BestialityGeneInheritanceDef gene in raceGeneDef.genes) diff --git a/Source/Animal_Inheritance/RJW_BGSSettings.cs b/Source/Animal_Inheritance/RJW_BGSSettings.cs index 180567c..1d5d859 100644 --- a/Source/Animal_Inheritance/RJW_BGSSettings.cs +++ b/Source/Animal_Inheritance/RJW_BGSSettings.cs @@ -5,6 +5,7 @@ using System.Text; using System.Threading.Tasks; using Verse; using UnityEngine; + namespace RJW_Genes.Animal_Inheritance { public class RJW_BGSSettings : ModSettings diff --git a/Source/Animal_Inheritance/RJWcopies.cs b/Source/Animal_Inheritance/RJWcopies.cs deleted file mode 100644 index 2c11074..0000000 --- a/Source/Animal_Inheritance/RJWcopies.cs +++ /dev/null @@ -1,157 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using rjw; -using Verse; -using RimWorld; - -namespace RJW_BGS -{ - internal class RJWcopy - { - //Code copied from rjw, as their code was internal and I need the dictionary to know which genes to add to the pawn - public static void Racegroupdictbuilder() - { - foreach (PawnKindDef pawnKindDef2 in from pawnKindDef in DefDatabase.AllDefs - where pawnKindDef.race.race != null - select pawnKindDef) - { - RaceGroupDef raceGroupDef = null; - bool temp = TryGetRaceGroupDef(pawnKindDef2, out raceGroupDef); - } - } - - public static bool TryGetRaceGroupDef(PawnKindDef pawnKindDef, out RaceGroupDef raceGroupDef) - { - - if (RaceGroupByPawnKind.TryGetValue(pawnKindDef, out raceGroupDef)) - { - return raceGroupDef != null; - } - raceGroupDef = GetRaceGroupDefInternal(pawnKindDef); - RaceGroupByPawnKind.Add(pawnKindDef, raceGroupDef); - return raceGroupDef != null; - } - - - public static RaceGroupDef GetRaceGroupDefInternal(PawnKindDef kindDef) - { - string raceName = kindDef.race.defName; - string pawnKindName = kindDef.defName; - IEnumerable allDefs = DefDatabase.AllDefs; - List pawnKindDefs = allDefs.Where(delegate (RaceGroupDef group) - { - List pawnKindNames = group.pawnKindNames; - return pawnKindNames != null && pawnKindNames.Contains(pawnKindName); - }).ToList(); - List raceNameDefs = allDefs.Where(delegate (RaceGroupDef group) - { - List raceNames = group.raceNames; - return raceNames != null && raceNames.Contains(raceName); - }).ToList(); - - int availableDefs = pawnKindDefs.Count() + raceNameDefs.Count(); - if (availableDefs == 0) - { - //Exit Early - return null; - } - if (availableDefs == 1) - { - return pawnKindDefs.Concat(raceNameDefs).Single(); - } - - RaceGroupDef result; - if ((result = pawnKindDefs.FirstOrDefault((RaceGroupDef match) => !IsThisMod(match))) == null) - { - if ((result = raceNameDefs.FirstOrDefault((RaceGroupDef match) => !IsThisMod(match))) == null) - { - result = (pawnKindDefs.FirstOrDefault() ?? raceNameDefs.FirstOrDefault()); - } - } - - return result; - } - - //slightly modified copy of code above so it also works for racegenedefs - public static RaceGeneDef GetRaceGenDefInternal(PawnKindDef kindDef) - { - if (kindDef == null) - { - return null; - } - string raceName = kindDef.race.defName; - string pawnKindName = kindDef.defName; - RaceGroupDef raceGroupDef = GetRaceGroupDef(kindDef); - IEnumerable allDefs = DefDatabase.AllDefs; - Log.Message(allDefs.Count().ToString()); - List pawnKindDefs = allDefs.Where(delegate (RaceGeneDef group) - { - List pawnKindNames = group.pawnKindNames; - return pawnKindNames != null && pawnKindNames.Contains(pawnKindName); - }).ToList(); - List raceKindDefs = allDefs.Where(delegate (RaceGeneDef group) - { - List raceNames = group.raceNames; - return raceNames != null && raceNames.Contains(raceName); - }).ToList(); - List raceGroupDefs = new List(); - if (raceGroupDef != null) - { - /* - // Log Messages for Debugging Only, prints the Genes found for this individual - Log.Message("found a raceGroupDef"); - Log.Message(raceGroupDef.defName); - foreach (RaceGeneDef rgd in allDefs) - { - Log.Message(rgd.defName); - } - */ - raceGroupDefs = allDefs.Where(delegate (RaceGeneDef group) - { - String raceGroupDefName = group.raceGroup; - 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; - - - } - - private static RaceGroupDef GetRaceGroupDef(PawnKindDef kindDef) - { - RaceGroupDef raceGroupDef = null; - bool temp = TryGetRaceGroupDef(kindDef, out raceGroupDef); - return raceGroupDef; - } - - private static bool IsThisMod(Def def) - { - return LoadedModManager.RunningMods.Single((ModContentPack pack) => pack.Name == "RimJobWorld").AllDefs.Contains(def); - } - - private static readonly IDictionary RaceGroupByPawnKind = new Dictionary(); - } - - -} diff --git a/Source/Animal_Inheritance/RaceGeneDef_Helper.cs b/Source/Animal_Inheritance/RaceGeneDef_Helper.cs new file mode 100644 index 0000000..ed6541a --- /dev/null +++ b/Source/Animal_Inheritance/RaceGeneDef_Helper.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using rjw; +using Verse; +using RimWorld; + +namespace RJW_BGS +{ + internal class RJWcopy + { + //code based on racegroupdefinternal which has a similar function + public static RaceGeneDef GetRaceGeneDefInternal(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; + List pawnKindDefs = allDefs.Where(delegate (RaceGeneDef group) + { + List pawnKindNames = group.pawnKindNames; + return pawnKindNames != null && pawnKindNames.Contains(pawnKindName); + }).ToList(); + List raceKindDefs = allDefs.Where(delegate (RaceGeneDef group) + { + List raceNames = group.raceNames; + return raceNames != null && raceNames.Contains(raceName); + }).ToList(); + List raceGroupDefs = new List(); + if (raceGroupDef != null) + { + raceGroupDefs = allDefs.Where(delegate (RaceGeneDef group) + { + String raceGroupDefName = group.raceGroup; + 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; + + + } + } +} diff --git a/Source/Genes/Special/Patch_OrgasmRush.cs b/Source/Genes/Special/Patch_OrgasmRush.cs index 7f4c167..0b881f2 100644 --- a/Source/Genes/Special/Patch_OrgasmRush.cs +++ b/Source/Genes/Special/Patch_OrgasmRush.cs @@ -21,7 +21,7 @@ namespace RJW_Genes if (props.pawn == null || !props.hasPartner()) return; - if (props.pawn.genes.HasGene(GeneDefOf.rjw_genes_orgasm_rush)) + if (props.pawn.genes != null && props.pawn.genes.HasGene(GeneDefOf.rjw_genes_orgasm_rush)) { props.pawn.needs.rest.CurLevel += REST_INCREASE; } diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index 554b542..c7b5a48 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -27,7 +27,7 @@ False - ..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll + ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll False @@ -35,7 +35,7 @@ False - ..\..\rjw\1.4\Assemblies\RJW.dll + ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods\rjw-master\1.4\Assemblies\RJW.dll False @@ -50,12 +50,12 @@ - - ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll + + ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.dll False - - ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.IMGUIModule.dll + + ..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll False @@ -67,7 +67,7 @@ - +