diff --git a/Languages/English/Keyed/RJW_Sexperience.xml b/Languages/English/Keyed/RJW_Sexperience.xml
index ce674a9..4e03722 100644
--- a/Languages/English/Keyed/RJW_Sexperience.xml
+++ b/Languages/English/Keyed/RJW_Sexperience.xml
@@ -87,6 +87,8 @@
Set how much lust can change from a single sex act
Enable Bastard relation
Child is marked as a bastard if they have only one parent or their parents are (or was) married
+ Debug
+ Enable debug logs
Reset to default
diff --git a/RJWSexperience/RJWSexperience/Configurations.cs b/RJWSexperience/RJWSexperience/Configurations.cs
index 4aa0e62..7ad757a 100644
--- a/RJWSexperience/RJWSexperience/Configurations.cs
+++ b/RJWSexperience/RJWSexperience/Configurations.cs
@@ -19,6 +19,7 @@ namespace RJWSexperience
public const bool MinSexableFromLifestageDefault = true;
public const float MinSexablePercentDefault = 0.2f;
public const float VirginRatioDefault = 0.01f;
+ public const bool DebugDefault = false;
private float maxLustDeviation = MaxInitialLustDefault;
private float avgLust = AvgLustDefault;
@@ -33,6 +34,7 @@ namespace RJWSexperience
private float minSexablePercent = MinSexablePercentDefault;
private float virginRatio = VirginRatioDefault;
private float maxSingleLustChange = MaxSingleLustChangeDefault;
+ private bool debug = DebugDefault;
public float MaxLustDeviation { get => maxLustDeviation; }
public float AvgLust { get => avgLust; }
@@ -47,6 +49,7 @@ namespace RJWSexperience
public float MinSexablePercent { get => minSexablePercent; }
public float VirginRatio { get => virginRatio; }
public float MaxSingleLustChange { get => maxSingleLustChange; }
+ public bool Debug { get => debug; }
private bool selectionLocked = false;
@@ -68,6 +71,7 @@ namespace RJWSexperience
minSexableFromLifestage = MinSexableFromLifestageDefault;
minSexablePercent = MinSexablePercentDefault;
virginRatio = VirginRatioDefault;
+ debug = DebugDefault;
}
public override void ExposeData()
@@ -85,6 +89,7 @@ namespace RJWSexperience
Scribe_Values.Look(ref minSexableFromLifestage, "MinSexableFromLifestage", MinSexableFromLifestageDefault, true);
Scribe_Values.Look(ref minSexablePercent, "MinSexablePercent", MinSexablePercentDefault, true);
Scribe_Values.Look(ref virginRatio, "VirginRatio", VirginRatioDefault, true);
+ Scribe_Values.Look(ref debug, "Debug", DebugDefault, true);
Scribe_Values.Look(ref selectionLocked, "SelectionLocked");
base.ExposeData();
}
@@ -127,6 +132,7 @@ namespace RJWSexperience
}
listmain.CheckboxLabeled(Keyed.Option_EnableBastardRelation_Label, ref enableBastardRelation, Keyed.Option_EnableBastardRelation_Desc);
+ listmain.CheckboxLabeled(Keyed.Option_Debug_Label, ref debug, Keyed.Option_Debug_Desc);
if (listmain.ButtonText(Keyed.Button_ResetToDefault))
{
diff --git a/RJWSexperience/RJWSexperience/Keyed.cs b/RJWSexperience/RJWSexperience/Keyed.cs
index 41c5f13..0ef50f9 100644
--- a/RJWSexperience/RJWSexperience/Keyed.cs
+++ b/RJWSexperience/RJWSexperience/Keyed.cs
@@ -89,6 +89,8 @@ namespace RJWSexperience
public static readonly string Option_MaxSingleLustChange_Desc = "RSOption_MaxSingleLustChange_Desc".Translate();
public static readonly string Option_EnableBastardRelation_Label = "RSOption_EnableBastardRelation_Label".Translate();
public static readonly string Option_EnableBastardRelation_Desc = "RSOption_EnableBastardRelation_Desc".Translate();
+ public static readonly string Option_Debug_Label = "RSOption_Debug_Label".Translate();
+ public static readonly string Option_Debug_Desc = "RSOption_Debug_Desc".Translate();
public static readonly string Button_ResetToDefault = "Button_ResetToDefault".Translate();
public static string Translate(this PartnerOrderMode mode)
diff --git a/RJWSexperience/RJWSexperience/Logs/DebugLogProvider.cs b/RJWSexperience/RJWSexperience/Logs/DebugLogProvider.cs
new file mode 100644
index 0000000..38d978f
--- /dev/null
+++ b/RJWSexperience/RJWSexperience/Logs/DebugLogProvider.cs
@@ -0,0 +1,9 @@
+using rjw.Modules.Shared.Logs;
+
+namespace RJWSexperience.Logs
+{
+ public class DebugLogProvider : ILogProvider
+ {
+ public bool IsActive => SexperienceMod.Settings.Debug;
+ }
+}
diff --git a/RJWSexperience/RJWSexperience/Logs/LogManager.cs b/RJWSexperience/RJWSexperience/Logs/LogManager.cs
new file mode 100644
index 0000000..a47274b
--- /dev/null
+++ b/RJWSexperience/RJWSexperience/Logs/LogManager.cs
@@ -0,0 +1,107 @@
+using rjw.Modules.Shared.Logs;
+using System;
+using Verse;
+
+namespace RJWSexperience.Logs
+{
+ // Copy of RJW code because of hardcoded mod name prefix. Maybe TODO: update RJW's version to accept prefix from LogProvider
+ public static class LogManager
+ {
+ private class Logger : ILog
+ {
+ private readonly string _loggerTypeName;
+ private readonly ILogProvider _logProvider;
+
+ public Logger(string typeName, ILogProvider logProvider = null)
+ {
+ _loggerTypeName = typeName;
+ _logProvider = logProvider;
+ }
+
+ public void Debug(string message)
+ {
+ LogDebug(CreateLogMessage(message));
+ }
+ public void Debug(string message, Exception e)
+ {
+ LogDebug(CreateLogMessage(message, e));
+ }
+
+ public void Message(string message)
+ {
+ LogMessage(CreateLogMessage(message));
+ }
+ public void Message(string message, Exception e)
+ {
+ LogMessage(CreateLogMessage(message, e));
+ }
+
+ public void Warning(string message)
+ {
+ LogWarning(CreateLogMessage(message));
+ }
+ public void Warning(string message, Exception e)
+ {
+ LogWarning(CreateLogMessage(message, e));
+ }
+
+ public void Error(string message)
+ {
+ LogError(CreateLogMessage(message));
+ }
+ public void Error(string message, Exception e)
+ {
+ LogError(CreateLogMessage(message, e));
+ }
+
+ private string CreateLogMessage(string message)
+ {
+ return $"[Sexperience] [{_loggerTypeName}] {message}";
+ }
+ private string CreateLogMessage(string message, Exception exception)
+ {
+ return $"{CreateLogMessage(message)}{Environment.NewLine}{exception}";
+ }
+
+ private void LogDebug(string message)
+ {
+ if (_logProvider?.IsActive != false)
+ {
+ Log.Message(message);
+ }
+ }
+ private void LogMessage(string message)
+ {
+ if (_logProvider?.IsActive != false)
+ {
+ Log.Message(message);
+ }
+ }
+ private void LogWarning(string message)
+ {
+ if (_logProvider?.IsActive != false)
+ {
+ Log.Warning(message);
+ }
+ }
+ private void LogError(string message)
+ {
+ if (_logProvider?.IsActive != false)
+ {
+ Log.Error(message);
+ }
+ }
+ }
+
+ public static ILog GetLogger()
+ where TLogProvider : ILogProvider, new()
+ {
+ return new Logger(typeof(TType).Name, new TLogProvider());
+ }
+ public static ILog GetLogger(string staticTypeName)
+ where TLogProvider : ILogProvider, new()
+ {
+ return new Logger(staticTypeName, new TLogProvider());
+ }
+ }
+}
diff --git a/RJWSexperience/RJWSexperience/Patches/RJW_Patch.cs b/RJWSexperience/RJWSexperience/Patches/RJW_Patch.cs
index 0f92abb..b6b6218 100644
--- a/RJWSexperience/RJWSexperience/Patches/RJW_Patch.cs
+++ b/RJWSexperience/RJWSexperience/Patches/RJW_Patch.cs
@@ -3,6 +3,7 @@ using RimWorld;
using rjw;
using rjw.Modules.Interactions.Enums;
using RJWSexperience.ExtensionMethods;
+using RJWSexperience.Logs;
using UnityEngine;
using Verse;
using Verse.AI;
@@ -96,7 +97,7 @@ namespace RJWSexperience
if (lustDelta == 0)
return;
- rjw.Modules.Shared.Logs.LogManager.GetLogger().Message($"{props.pawn.NameShortColored}'s lust changed by {lustDelta} (from {lust})");
+ LogManager.GetLogger("RJW_Patch_SatisfyPersonal").Message($"{props.pawn.NameShortColored}'s lust changed by {lustDelta} (from {lust})");
props.pawn.records.AddTo(VariousDefOf.Lust, lustDelta);
}
@@ -223,11 +224,12 @@ namespace RJWSexperience
if (partner != null)
return true; // Not masturbation
- Log.Message($"CasualSex_Helper.FindSexLocation for {pawn.NameShortColored}");
+ var log = LogManager.GetLogger("RJW_Patch_CasualSex_Helper_FindSexLocation");
+ log.Message($"Called for {pawn.NameShortColored}");
if (!pawn.Faction?.IsPlayer ?? true)
{
- Log.Message("Not player faction");
+ log.Message("Not player faction");
return true;
}
@@ -235,12 +237,12 @@ namespace RJWSexperience
if (bucket == null)
{
- Log.Message("Bucket not found");
+ log.Message("Bucket not found");
return true;
}
__result = bucket.RandomAdjacentCell8Way();
- Log.Message($"Bucket location: {__result}");
+ log.Message($"Bucket location: {__result}");
return false;
}
}
diff --git a/RJWSexperience/RJWSexperience/RJWSexperience.csproj b/RJWSexperience/RJWSexperience/RJWSexperience.csproj
index 9837a44..078d258 100644
--- a/RJWSexperience/RJWSexperience/RJWSexperience.csproj
+++ b/RJWSexperience/RJWSexperience/RJWSexperience.csproj
@@ -74,6 +74,8 @@
+
+