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_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_Debug_Label>Debug</RSOption_Debug_Label>
<RSOption_Debug_Desc>Enable debug logs</RSOption_Debug_Desc>
<Button_ResetToDefault>Reset to default</Button_ResetToDefault>
<!-- Sex types -->

View File

@ -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))
{

View File

@ -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)

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.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<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);
}
@ -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<DebugLogProvider>("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;
}
}

View File

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