From ad7c00d6656f28fef8b91cd2e788b21f3f6f5a0e Mon Sep 17 00:00:00 2001 From: amevarashi Date: Thu, 21 Apr 2022 23:36:14 +0500 Subject: [PATCH] Hide log spam behind Debug option --- Languages/English/Keyed/RJW_Sexperience.xml | 2 + .../RJWSexperience/Configurations.cs | 6 + RJWSexperience/RJWSexperience/Keyed.cs | 2 + .../RJWSexperience/Logs/DebugLogProvider.cs | 9 ++ .../RJWSexperience/Logs/LogManager.cs | 107 ++++++++++++++++++ .../RJWSexperience/Patches/RJW_Patch.cs | 12 +- .../RJWSexperience/RJWSexperience.csproj | 2 + 7 files changed, 135 insertions(+), 5 deletions(-) create mode 100644 RJWSexperience/RJWSexperience/Logs/DebugLogProvider.cs create mode 100644 RJWSexperience/RJWSexperience/Logs/LogManager.cs 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 @@ + +