From c8302ea177fa16c789e7026dbd5c5998021aaf2e Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Mon, 24 Feb 2025 00:24:49 +0100 Subject: [PATCH] Refactor ObjectFieldMultiplier with code style improvements and minor optimizations --- .../TerraTech/ModuleShieldGeneratorManager.cs | 14 +++-- .../TerraTech/ObjectFieldMultiplier.cs | 51 +++++++++++-------- 2 files changed, 40 insertions(+), 25 deletions(-) diff --git a/Projects/TerraTech/TerraTech/ModuleShieldGeneratorManager.cs b/Projects/TerraTech/TerraTech/ModuleShieldGeneratorManager.cs index a6bde89..72fffad 100644 --- a/Projects/TerraTech/TerraTech/ModuleShieldGeneratorManager.cs +++ b/Projects/TerraTech/TerraTech/ModuleShieldGeneratorManager.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using BepInEx.Configuration; using HarmonyLib; namespace TerraTech { @@ -17,12 +15,18 @@ namespace TerraTech { [HarmonyPrefix] [HarmonyPatch(typeof(ModuleShieldGenerator), "OnAttached")] - static void PostfixCreate(ModuleShieldGenerator __instance) => manager.OnObjectAttached(__instance); + static void PostfixCreate(ModuleShieldGenerator __instance) { + manager.OnObjectAttached(__instance); + } [HarmonyPrefix] [HarmonyPatch(typeof(ModuleShieldGenerator), "OnDetaching")] - static void PostfixDestroy(ModuleShieldGenerator __instance) => manager.OnObjectDetached(__instance); + static void PostfixDestroy(ModuleShieldGenerator __instance) { + manager.OnObjectDetached(__instance); + } - public static void DoPatch() => manager.ApplyAll(); + public static void DoPatch() { + manager.ApplyAll(); + } } } diff --git a/Projects/TerraTech/TerraTech/ObjectFieldMultiplier.cs b/Projects/TerraTech/TerraTech/ObjectFieldMultiplier.cs index 958efb1..10cdb52 100644 --- a/Projects/TerraTech/TerraTech/ObjectFieldMultiplier.cs +++ b/Projects/TerraTech/TerraTech/ObjectFieldMultiplier.cs @@ -39,7 +39,7 @@ namespace TerraTech { public void CaptureOriginal() { originalValue = GetValue(); if (Main.debug.Value) - Console.WriteLine(string.Format("Captured original value for {0}: {1}", fieldName, originalValue)); + Console.WriteLine("Captured original value for {0}: {1}", fieldName, originalValue); } public void Apply() { @@ -49,8 +49,7 @@ namespace TerraTech { var newValue = (TValue)(originalDynamic * multiplierDynamic); if (Main.debug.Value) - Console.WriteLine(string.Format("Applying to {0}: {1} * {2} = {3}", fieldName, originalValue, - multiplier.Value, newValue)); + Console.WriteLine("Applying to {0}: {1} * {2} = {3}", fieldName, originalValue, multiplier.Value, newValue); SetValue(newValue); } catch (Exception e) { @@ -61,7 +60,7 @@ namespace TerraTech { public void Restore() { if (Main.debug.Value) - Console.WriteLine(string.Format("Restoring {0} to original value: {1}", fieldName, originalValue)); + Console.WriteLine("Restoring {0} to original value: {1}", fieldName, originalValue); SetValue(originalValue); } @@ -69,17 +68,17 @@ namespace TerraTech { if (!Main.debug.Value) return; var currentValue = GetValue(); - Console.WriteLine( - $"{prefix} {parentTraverse}; {fieldName}: {currentValue} (original: {originalValue}, multiplier: {multiplier.Value})"); + Console.WriteLine("{0} {1}; {2}: {3} (original: {4}, multiplier: {5})", prefix, parentTraverse, fieldName, currentValue, originalValue, multiplier.Value); } } public class MultipliedObject { private readonly Traverse objectTraverse; - private readonly List> fields = new List>(); + private readonly List> fields; public MultipliedObject(T instance) { objectTraverse = Traverse.Create(instance); + fields = new List>(); } public void AddField(string fieldName, ConfigEntry multiplier) { @@ -87,37 +86,46 @@ namespace TerraTech { } public void CaptureFrom() { - fields.ForEach(f => f.CaptureOriginal()); + foreach (var field in fields) { + field.CaptureOriginal(); + } } public void ApplyTo() { - fields.ForEach(f => f.Apply()); + foreach (var field in fields) { + field.Apply(); + } } public void RestoreTo() { - fields.ForEach(f => f.Restore()); + foreach (var field in fields) { + field.Restore(); + } } public void LogValues(string prefix) { if (!Main.debug.Value) return; - fields.ForEach(f => f.LogValue(prefix)); + foreach (var field in fields) { + field.LogValue(prefix); + } } } public class MultipliedObjectManager where T : class { - private readonly Dictionary> managedObjects = new Dictionary>(); + private readonly Dictionary> managedObjects; private readonly Action> configureObject; public MultipliedObjectManager(Action> configureObject) { this.configureObject = configureObject; + managedObjects = new Dictionary>(); } public void OnObjectAttached(T instance) { if (!managedObjects.ContainsKey(instance)) { if (Main.debug.Value) - Console.WriteLine(string.Format("{0}.OnAttached", typeof(T).Name)); + Console.WriteLine("{0}.OnAttached", typeof(T).Name); var multipliedObject = new MultipliedObject(instance); configureObject(multipliedObject); @@ -131,9 +139,10 @@ namespace TerraTech { } public void OnObjectDetached(T instance) { - if (managedObjects.TryGetValue(instance, out var multipliedObject)) { + MultipliedObject multipliedObject; + if (managedObjects.TryGetValue(instance, out multipliedObject)) { if (Main.debug.Value) { - Console.WriteLine($"{typeof(T).Name}.OnDetaching"); + Console.WriteLine("{0}.OnDetaching", typeof(T).Name); multipliedObject.LogValues("Restoring"); } @@ -145,7 +154,7 @@ namespace TerraTech { public void ApplyAll() { if (Main.debug.Value) - Console.WriteLine($"Modifying {managedObjects.Count} {typeof(T).Name}"); + Console.WriteLine("Modifying {0} {1}", managedObjects.Count, typeof(T).Name); foreach (var instance in managedObjects.Keys) { RestoreTo(instance); ApplyTo(instance); @@ -153,13 +162,15 @@ namespace TerraTech { } private void ApplyTo(T instance) { - if (managedObjects.TryGetValue(instance, out var obj)) - obj.ApplyTo() + MultipliedObject obj; + if (managedObjects.TryGetValue(instance, out obj)) + obj.ApplyTo(); } private void RestoreTo(T instance) { - if (managedObjects.TryGetValue(instance, out var obj)) - obj.RestoreTo() + MultipliedObject obj; + if (managedObjects.TryGetValue(instance, out obj)) + obj.RestoreTo(); } } }