diff --git a/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml b/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml index b9bc867..7589a2a 100644 --- a/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml +++ b/1.3/Defs/PreceptDefs/Precepts_SizeMatters.xml @@ -63,7 +63,7 @@ GenitalSize_Approved Thought_Situational - RJWSexperience.Ideology.ThoughtWorker_Precept_GenitalSize_Approved + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize
  • @@ -91,11 +91,24 @@ +10
  • + +
  • + + +
  • 0
  • +
  • 0.2
  • +
  • 0.4
  • +
  • 0.6
  • +
  • 0.8
  • + + +
    GenitalSize_Disapproved - RJWSexperience.Ideology.ThoughtWorker_Precept_GenitalSize_Disapproved + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize Thought_Situational
  • @@ -124,13 +137,26 @@ -10
  • + +
  • + + +
  • 0
  • +
  • 0.2
  • +
  • 0.4
  • +
  • 0.6
  • +
  • 0.8
  • + + +
    GenitalSize_Approved_Social - RJWSexperience.Ideology.ThoughtWorker_Precept_GenitalSize_Approved_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize_Social Thought_SituationalSocial
  • @@ -146,12 +172,23 @@ +5
  • + +
  • + + +
  • 0
  • +
  • 0.4
  • +
  • 0.6
  • + + +
    GenitalSize_Disapproved_Social - RJWSexperience.Ideology.ThoughtWorker_Precept_GenitalSize_Disapproved_Social + RJWSexperience.Ideology.PreceptWorkers.ThoughtWorker_Precept_GenitalSize_Social Thought_SituationalSocial
  • @@ -167,6 +204,17 @@ +5
  • + +
  • + + +
  • 0
  • +
  • 0.4
  • +
  • 0.6
  • + + +
    \ No newline at end of file diff --git a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize.cs new file mode 100644 index 0000000..0f9b135 --- /dev/null +++ b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize.cs @@ -0,0 +1,34 @@ +using RimWorld; +using rjw; +using Verse; + +namespace RJWSexperience.Ideology.PreceptWorkers +{ + public class ThoughtWorker_Precept_GenitalSize : ThoughtWorker_Precept + { + private ThoughtDefExtension_StageFromValue stageFromValue; + + protected ThoughtDefExtension_StageFromValue StageFromValue + { + get + { + if (stageFromValue == null) + { + stageFromValue = def.GetModExtension(); + } + return stageFromValue; + } + } + + protected override ThoughtState ShouldHaveThought(Pawn p) + { + if (p != null && Genital_Helper.get_AllPartsHediffList(p).Count > 0) + { + float bestSize = IdeoUtility.getGenitalSize(p); + return ThoughtState.ActiveAtStage(StageFromValue.GetStageIndex(bestSize)); + } + // This might can happen if the pawn has no genitalia ... maybe? + return ThoughtState.Inactive; + } + } +} diff --git a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Approved.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Approved.cs deleted file mode 100644 index 6c5f491..0000000 --- a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Approved.cs +++ /dev/null @@ -1,31 +0,0 @@ -using RimWorld; -using rjw; -using Verse; - -namespace RJWSexperience.Ideology -{ - public class ThoughtWorker_Precept_GenitalSize_Approved : ThoughtWorker_Precept - { - protected override ThoughtState ShouldHaveThought(Pawn p) - { - // We have 5 stages, which map directly to genitalia severity: - // Micro(<0.2), Small(>0.2&&<0.4), Normal(>0.4&&<0.6), Big(>0.6&&<0.8), Huge(>0.8) - if (p != null && Genital_Helper.get_AllPartsHediffList(p).Count > 0) - { - float best_size = IdeoUtility.getGenitalSize(p); - if (best_size < 0.2f) - return ThoughtState.ActiveAtStage(0); - else if (best_size < 0.4f) - return ThoughtState.ActiveAtStage(1); - else if (best_size < 0.6f) - return ThoughtState.ActiveAtStage(2); - else if (best_size < 0.8f) - return ThoughtState.ActiveAtStage(3); - else if (best_size > 0.8f) - return ThoughtState.ActiveAtStage(4); - } - // This might can happen if the pawn has no genitalia ... maybe? - return ThoughtState.Inactive; - } - } -} diff --git a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Approved_Social.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Approved_Social.cs deleted file mode 100644 index 22dadbe..0000000 --- a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Approved_Social.cs +++ /dev/null @@ -1,29 +0,0 @@ -using RimWorld; -using rjw; -using Verse; - -namespace RJWSexperience.Ideology -{ - public class ThoughtWorker_Precept_GenitalSize_Approved_Social : ThoughtWorker_Precept_Social - { - - // Important Note: For the Social Worker, we measure otherPawns genitalia - protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn) - { - // We have 3 stages, which map directly to genitalia severity: - // Unfavorable(<0.4), Normal(>0.4&&<0.6), Favorable(>0.6) - if (otherPawn != null && Genital_Helper.get_AllPartsHediffList(otherPawn).Count > 0) - { - float best_size = IdeoUtility.getGenitalSize(otherPawn); - if (best_size < 0.4f) - return ThoughtState.ActiveAtStage(0); - else if (best_size < 0.6f) - return ThoughtState.ActiveAtStage(1); - else if (best_size > 0.6f) - return ThoughtState.ActiveAtStage(2); - } - // This might can happen if the pawn has no genitalia ... maybe? - return ThoughtState.Inactive; - } - } -} diff --git a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Disapproved.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Disapproved.cs deleted file mode 100644 index 7f7eae2..0000000 --- a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Disapproved.cs +++ /dev/null @@ -1,32 +0,0 @@ -using RimWorld; -using rjw; -using Verse; - -namespace RJWSexperience.Ideology -{ - public class ThoughtWorker_Precept_GenitalSize_Disapproved : ThoughtWorker_Precept - { - protected override ThoughtState ShouldHaveThought(Pawn p) - { - // We have 5 stages, which map directly to genitalia severity: - // Micro(<0.2), Small(>0.2&&<0.4), Normal(>0.4&&<0.6), Big(>0.6&&<0.8), Huge(>0.8) - if (p != null && Genital_Helper.get_AllPartsHediffList(p).Count > 0) - { - float best_size = IdeoUtility.getGenitalSize(p); - if (best_size < 0.2f) - return ThoughtState.ActiveAtStage(0); - else if (best_size < 0.4f) - return ThoughtState.ActiveAtStage(1); - else if (best_size < 0.6f) - return ThoughtState.ActiveAtStage(2); - else if (best_size < 0.8f) - return ThoughtState.ActiveAtStage(3); - else if (best_size > 0.8f) - return ThoughtState.ActiveAtStage(4); - } - // This might can happen if the pawn has no genitalia ... maybe? - return ThoughtState.Inactive; - } - - } -} diff --git a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Disapproved_Social.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Disapproved_Social.cs deleted file mode 100644 index 7df72e4..0000000 --- a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Disapproved_Social.cs +++ /dev/null @@ -1,28 +0,0 @@ -using RimWorld; -using rjw; -using Verse; - -namespace RJWSexperience.Ideology -{ - public class ThoughtWorker_Precept_GenitalSize_Disapproved_Social : ThoughtWorker_Precept_Social - { - // Important Note: For the Social Worker, we measure otherPawns genitalia - protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn) - { - // We have 3 stages, which map directly to genitalia severity: - // Unfavorable(<0.4), Normal(>0.4&&<0.6), Favorable(>0.6) - if (otherPawn != null && Genital_Helper.get_AllPartsHediffList(otherPawn).Count > 0) - { - float best_size = IdeoUtility.getGenitalSize(otherPawn); - if (best_size < 0.4f) - return ThoughtState.ActiveAtStage(0); - else if (best_size < 0.6f) - return ThoughtState.ActiveAtStage(1); - else if (best_size > 0.6f) - return ThoughtState.ActiveAtStage(2); - } - // This might can happen if the pawn has no genitalia ... maybe? - return ThoughtState.Inactive; - } - } - } diff --git a/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Social.cs b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Social.cs new file mode 100644 index 0000000..42c6fc5 --- /dev/null +++ b/Source/IdeologyAddon/Ideology/PreceptWorkers/ThoughtWorker_Precept_GenitalSize_Social.cs @@ -0,0 +1,35 @@ +using RimWorld; +using rjw; +using Verse; + +namespace RJWSexperience.Ideology.PreceptWorkers +{ + public class ThoughtWorker_Precept_GenitalSize_Social : ThoughtWorker_Precept_Social + { + private ThoughtDefExtension_StageFromValue stageFromValue; + + protected ThoughtDefExtension_StageFromValue StageFromValue + { + get + { + if (stageFromValue == null) + { + stageFromValue = def.GetModExtension(); + } + return stageFromValue; + } + } + + // Important Note: For the Social Worker, we measure otherPawns genitalia + protected override ThoughtState ShouldHaveThought(Pawn p, Pawn otherPawn) + { + if (otherPawn != null && Genital_Helper.get_AllPartsHediffList(otherPawn).Count > 0) + { + float bestSize = IdeoUtility.getGenitalSize(otherPawn); + return ThoughtState.ActiveAtStage(StageFromValue.GetStageIndex(bestSize)); + } + // This might can happen if the pawn has no genitalia ... maybe? + return ThoughtState.Inactive; + } + } +} diff --git a/Source/IdeologyAddon/IdeologyAddon.csproj b/Source/IdeologyAddon/IdeologyAddon.csproj index 51feffa..96f92ee 100644 --- a/Source/IdeologyAddon/IdeologyAddon.csproj +++ b/Source/IdeologyAddon/IdeologyAddon.csproj @@ -52,10 +52,8 @@ - - - - + + @@ -89,7 +87,7 @@ - +