Hide log spam behind Debug option

This commit is contained in:
amevarashi 2022-04-21 23:36:14 +05:00
parent fbf894e5a0
commit ad7c00d665
7 changed files with 135 additions and 5 deletions

View File

@ -87,6 +87,8 @@
<RSOption_MaxSingleLustChange_Desc>Set how much lust can change from a single sex act</RSOption_MaxSingleLustChange_Desc> <RSOption_MaxSingleLustChange_Desc>Set how much lust can change from a single sex act</RSOption_MaxSingleLustChange_Desc>
<RSOption_EnableBastardRelation_Label>Enable Bastard relation</RSOption_EnableBastardRelation_Label> <RSOption_EnableBastardRelation_Label>Enable Bastard relation</RSOption_EnableBastardRelation_Label>
<RSOption_EnableBastardRelation_Desc>Child is marked as a bastard if they have only one parent or their parents are (or was) married</RSOption_EnableBastardRelation_Desc> <RSOption_EnableBastardRelation_Desc>Child is marked as a bastard if they have only one parent or their parents are (or was) married</RSOption_EnableBastardRelation_Desc>
<RSOption_Debug_Label>Debug</RSOption_Debug_Label>
<RSOption_Debug_Desc>Enable debug logs</RSOption_Debug_Desc>
<Button_ResetToDefault>Reset to default</Button_ResetToDefault> <Button_ResetToDefault>Reset to default</Button_ResetToDefault>
<!-- Sex types --> <!-- Sex types -->

View File

@ -19,6 +19,7 @@ namespace RJWSexperience
public const bool MinSexableFromLifestageDefault = true; public const bool MinSexableFromLifestageDefault = true;
public const float MinSexablePercentDefault = 0.2f; public const float MinSexablePercentDefault = 0.2f;
public const float VirginRatioDefault = 0.01f; public const float VirginRatioDefault = 0.01f;
public const bool DebugDefault = false;
private float maxLustDeviation = MaxInitialLustDefault; private float maxLustDeviation = MaxInitialLustDefault;
private float avgLust = AvgLustDefault; private float avgLust = AvgLustDefault;
@ -33,6 +34,7 @@ namespace RJWSexperience
private float minSexablePercent = MinSexablePercentDefault; private float minSexablePercent = MinSexablePercentDefault;
private float virginRatio = VirginRatioDefault; private float virginRatio = VirginRatioDefault;
private float maxSingleLustChange = MaxSingleLustChangeDefault; private float maxSingleLustChange = MaxSingleLustChangeDefault;
private bool debug = DebugDefault;
public float MaxLustDeviation { get => maxLustDeviation; } public float MaxLustDeviation { get => maxLustDeviation; }
public float AvgLust { get => avgLust; } public float AvgLust { get => avgLust; }
@ -47,6 +49,7 @@ namespace RJWSexperience
public float MinSexablePercent { get => minSexablePercent; } public float MinSexablePercent { get => minSexablePercent; }
public float VirginRatio { get => virginRatio; } public float VirginRatio { get => virginRatio; }
public float MaxSingleLustChange { get => maxSingleLustChange; } public float MaxSingleLustChange { get => maxSingleLustChange; }
public bool Debug { get => debug; }
private bool selectionLocked = false; private bool selectionLocked = false;
@ -68,6 +71,7 @@ namespace RJWSexperience
minSexableFromLifestage = MinSexableFromLifestageDefault; minSexableFromLifestage = MinSexableFromLifestageDefault;
minSexablePercent = MinSexablePercentDefault; minSexablePercent = MinSexablePercentDefault;
virginRatio = VirginRatioDefault; virginRatio = VirginRatioDefault;
debug = DebugDefault;
} }
public override void ExposeData() public override void ExposeData()
@ -85,6 +89,7 @@ namespace RJWSexperience
Scribe_Values.Look(ref minSexableFromLifestage, "MinSexableFromLifestage", MinSexableFromLifestageDefault, true); Scribe_Values.Look(ref minSexableFromLifestage, "MinSexableFromLifestage", MinSexableFromLifestageDefault, true);
Scribe_Values.Look(ref minSexablePercent, "MinSexablePercent", MinSexablePercentDefault, true); Scribe_Values.Look(ref minSexablePercent, "MinSexablePercent", MinSexablePercentDefault, true);
Scribe_Values.Look(ref virginRatio, "VirginRatio", VirginRatioDefault, true); Scribe_Values.Look(ref virginRatio, "VirginRatio", VirginRatioDefault, true);
Scribe_Values.Look(ref debug, "Debug", DebugDefault, true);
Scribe_Values.Look(ref selectionLocked, "SelectionLocked"); Scribe_Values.Look(ref selectionLocked, "SelectionLocked");
base.ExposeData(); base.ExposeData();
} }
@ -127,6 +132,7 @@ namespace RJWSexperience
} }
listmain.CheckboxLabeled(Keyed.Option_EnableBastardRelation_Label, ref enableBastardRelation, Keyed.Option_EnableBastardRelation_Desc); 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)) if (listmain.ButtonText(Keyed.Button_ResetToDefault))
{ {

View File

@ -89,6 +89,8 @@ namespace RJWSexperience
public static readonly string Option_MaxSingleLustChange_Desc = "RSOption_MaxSingleLustChange_Desc".Translate(); 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_Label = "RSOption_EnableBastardRelation_Label".Translate();
public static readonly string Option_EnableBastardRelation_Desc = "RSOption_EnableBastardRelation_Desc".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 readonly string Button_ResetToDefault = "Button_ResetToDefault".Translate();
public static string Translate(this PartnerOrderMode mode) public static string Translate(this PartnerOrderMode mode)

View File

@ -0,0 +1,9 @@
using rjw.Modules.Shared.Logs;
namespace RJWSexperience.Logs
{
public class DebugLogProvider : ILogProvider
{
public bool IsActive => SexperienceMod.Settings.Debug;
}
}

View File

@ -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<TType, TLogProvider>()
where TLogProvider : ILogProvider, new()
{
return new Logger(typeof(TType).Name, new TLogProvider());
}
public static ILog GetLogger<TLogProvider>(string staticTypeName)
where TLogProvider : ILogProvider, new()
{
return new Logger(staticTypeName, new TLogProvider());
}
}
}

View File

@ -3,6 +3,7 @@ using RimWorld;
using rjw; using rjw;
using rjw.Modules.Interactions.Enums; using rjw.Modules.Interactions.Enums;
using RJWSexperience.ExtensionMethods; using RJWSexperience.ExtensionMethods;
using RJWSexperience.Logs;
using UnityEngine; using UnityEngine;
using Verse; using Verse;
using Verse.AI; using Verse.AI;
@ -96,7 +97,7 @@ namespace RJWSexperience
if (lustDelta == 0) if (lustDelta == 0)
return; return;
rjw.Modules.Shared.Logs.LogManager.GetLogger<SexperienceMod>().Message($"{props.pawn.NameShortColored}'s lust changed by {lustDelta} (from {lust})"); LogManager.GetLogger<DebugLogProvider>("RJW_Patch_SatisfyPersonal").Message($"{props.pawn.NameShortColored}'s lust changed by {lustDelta} (from {lust})");
props.pawn.records.AddTo(VariousDefOf.Lust, lustDelta); props.pawn.records.AddTo(VariousDefOf.Lust, lustDelta);
} }
@ -223,11 +224,12 @@ namespace RJWSexperience
if (partner != null) if (partner != null)
return true; // Not masturbation return true; // Not masturbation
Log.Message($"CasualSex_Helper.FindSexLocation for {pawn.NameShortColored}"); var log = LogManager.GetLogger<DebugLogProvider>("RJW_Patch_CasualSex_Helper_FindSexLocation");
log.Message($"Called for {pawn.NameShortColored}");
if (!pawn.Faction?.IsPlayer ?? true) if (!pawn.Faction?.IsPlayer ?? true)
{ {
Log.Message("Not player faction"); log.Message("Not player faction");
return true; return true;
} }
@ -235,12 +237,12 @@ namespace RJWSexperience
if (bucket == null) if (bucket == null)
{ {
Log.Message("Bucket not found"); log.Message("Bucket not found");
return true; return true;
} }
__result = bucket.RandomAdjacentCell8Way(); __result = bucket.RandomAdjacentCell8Way();
Log.Message($"Bucket location: {__result}"); log.Message($"Bucket location: {__result}");
return false; return false;
} }
} }

View File

@ -74,6 +74,8 @@
<Compile Include="Harmony.cs" /> <Compile Include="Harmony.cs" />
<Compile Include="IngestionOutcomeDoers.cs" /> <Compile Include="IngestionOutcomeDoers.cs" />
<Compile Include="JobDrivers.cs" /> <Compile Include="JobDrivers.cs" />
<Compile Include="Logs\DebugLogProvider.cs" />
<Compile Include="Logs\LogManager.cs" />
<Compile Include="Patches\DefInjection.cs" /> <Compile Include="Patches\DefInjection.cs" />
<Compile Include="Patches\GetGizmos.cs" /> <Compile Include="Patches\GetGizmos.cs" />
<Compile Include="Recipe_HymenSurgery.cs" /> <Compile Include="Recipe_HymenSurgery.cs" />