diff --git a/TweaksAndThings/Patches/CarInspector_PopulateCarPanel_Patch.cs b/TweaksAndThings/Patches/CarInspector_PopulateCarPanel_Patch.cs index b9f7654..42efc20 100644 --- a/TweaksAndThings/Patches/CarInspector_PopulateCarPanel_Patch.cs +++ b/TweaksAndThings/Patches/CarInspector_PopulateCarPanel_Patch.cs @@ -62,18 +62,34 @@ public class CarInspector_PopulateCarPanel_Patch { foreach (Model.Car car in consist) { - builder.AddObserver(car.KeyValueObject.Observe(PropertyChange.KeyForControl(PropertyChange.Control.Handbrake), delegate (Value value) { builder.Rebuild(); }, false)); + builder = AddObserver(builder, car, PropertyChange.KeyForControl(PropertyChange.Control.Handbrake)); foreach (LogicalEnd logicalEnd in ends) { - builder.AddObserver(car.KeyValueObject.Observe(KeyValueKeyFor(EndGearStateKey.IsCoupled, car.LogicalToEnd(logicalEnd)), delegate (Value value) { builder.Rebuild(); }, false)); - builder.AddObserver(car.KeyValueObject.Observe(KeyValueKeyFor(EndGearStateKey.IsAirConnected, car.LogicalToEnd(logicalEnd)), delegate (Value value) { builder.Rebuild(); }, false)); - builder.AddObserver(car.KeyValueObject.Observe(KeyValueKeyFor(EndGearStateKey.Anglecock, car.LogicalToEnd(logicalEnd)), delegate (Value value) { builder.Rebuild(); }, false)); + builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.IsCoupled, car.LogicalToEnd(logicalEnd))); + builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.IsAirConnected, car.LogicalToEnd(logicalEnd))); + builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.Anglecock, car.LogicalToEnd(logicalEnd))); } } return builder; } + private static UIPanelBuilder AddObserver(UIPanelBuilder builder, Model.Car car, string key) + { + builder.AddObserver( + car.KeyValueObject.Observe( + key, + delegate (Value value) + { + builder.Rebuild(); + }, + false + ) + ); + + return builder; + } + public static void MrocConsistHelper(Model.Car car, MrocHelperType mrocHelperType) { IEnumerable consist = car.EnumerateCoupled(LogicalEnd.A); diff --git a/TweaksAndThings/Patches/TagConroller_UpdateTag_Patch.cs b/TweaksAndThings/Patches/TagController_UpdateTag_Patch.cs similarity index 54% rename from TweaksAndThings/Patches/TagConroller_UpdateTag_Patch.cs rename to TweaksAndThings/Patches/TagController_UpdateTag_Patch.cs index 38d85e6..c123f3c 100644 --- a/TweaksAndThings/Patches/TagConroller_UpdateTag_Patch.cs +++ b/TweaksAndThings/Patches/TagController_UpdateTag_Patch.cs @@ -1,67 +1,58 @@ using HarmonyLib; -using JetBrains.Annotations; using Model; -using Model.AI; using Model.OpsNew; using Railloader; -using Serilog; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Net.Sockets; -using System.Text; -using System.Threading.Tasks; -using Track; -using TweaksAndThings; using UI; -using UI.Builder; -using UI.CarInspector; using UI.Tags; using UnityEngine; -using static Model.Car; -using tat = TweaksAndThings.TweaksAndThings; namespace TweaksAndThings.Patches; [HarmonyPatch(typeof(TagController))] [HarmonyPatch(nameof(TagController.UpdateTag), typeof(Car), typeof(TagCallout), typeof(OpsController))] [HarmonyPatchCategory("RMROC451TweaksAndThings")] -public class TagConroller_UpdateTag_Patch +public class TagController_UpdateTag_Patch { + private const string tagTitleAndIconDelimeter = "\n"; + private const string tagTitleFormat = "{1}"; + private static void Postfix(Car car, TagCallout tagCallout) { TagController tagController = UnityEngine.Object.FindObjectOfType(); TweaksAndThings tweaksAndThings = SingletonPluginBase.Shared; - tagCallout.callout.Title = $"{car.DisplayName}"; if (!tweaksAndThings.IsEnabled || !tweaksAndThings.settings.HandBrakeAndAirTagModifiers) { return; } - tagCallout.gameObject.SetActive( - tagCallout.gameObject.activeSelf && - (!GameInput.IsShiftDown || (GameInput.IsShiftDown && car.CarOrEndGearIssue())) - ); - if (tagCallout.gameObject.activeSelf && GameInput.IsShiftDown && car.CarOrEndGearIssue()) { + ProceedWithPostFix(car, tagCallout, tagController); + return; + } + + private static void ProceedWithPostFix(Car car, TagCallout tagCallout, TagController tagController) + { + bool isAltDownWithCarIssue = GameInput.IsAltDown && car.CarOrEndGearIssue(); + tagCallout.callout.Title = string.Format(tagTitleFormat, "{0}", car.DisplayName); + tagCallout.gameObject.SetActive( + tagCallout.gameObject.activeSelf && + (!GameInput.IsAltDown || isAltDownWithCarIssue) + ); + + if (tagCallout.gameObject.activeSelf && isAltDownWithCarIssue) + { tagController.ApplyImageColor(tagCallout, Color.black); } - if (car.CarAndEndGearIssue()) - { - tagCallout.callout.Title = - $"{tagCallout.callout.Title}\n{TextSprites.CycleWaybills}{TextSprites.HandbrakeWheel}"; - } - else if (car.EndAirSystemIssue()) - tagCallout.callout.Title = - $"{tagCallout.callout.Title}\n{TextSprites.CycleWaybills}"; - else if (car.HandbrakeApplied()) - tagCallout.callout.Title = - $"{tagCallout.callout.Title}\n{TextSprites.HandbrakeWheel}"; - - - return; + tagCallout.callout.Title = + (car.CarAndEndGearIssue(), car.EndAirSystemIssue(), car.HandbrakeApplied()) switch + { + (true, _, _) => $"{tagCallout.callout.Title}{tagTitleAndIconDelimeter}{TextSprites.CycleWaybills}{TextSprites.HandbrakeWheel}".Replace("{0}", "2"), + (_, true, _) => $"{tagCallout.callout.Title}{tagTitleAndIconDelimeter}{TextSprites.CycleWaybills}".Replace("{0}", "1"), + (_, _, true) => $"{tagCallout.callout.Title}{tagTitleAndIconDelimeter}{TextSprites.HandbrakeWheel}".Replace("{0}", "1"), + _ => car.DisplayName + }; } } @@ -80,6 +71,7 @@ public static class ModelCarExtensions public static bool CarOrEndGearIssue(this Model.Car car) => car.EndAirSystemIssue() || car.HandbrakeApplied(); + public static bool CarAndEndGearIssue(this Model.Car car) => car.EndAirSystemIssue() && car.HandbrakeApplied(); } diff --git a/TweaksAndThings/RMROC451.TweaksAndThings.csproj b/TweaksAndThings/RMROC451.TweaksAndThings.csproj index 5b93d89..af81fa5 100644 --- a/TweaksAndThings/RMROC451.TweaksAndThings.csproj +++ b/TweaksAndThings/RMROC451.TweaksAndThings.csproj @@ -13,6 +13,8 @@ + + diff --git a/TweaksAndThings/TweaksAndThings.cs b/TweaksAndThings/TweaksAndThings.cs index abdf47e..7c0d939 100644 --- a/TweaksAndThings/TweaksAndThings.cs +++ b/TweaksAndThings/TweaksAndThings.cs @@ -94,7 +94,7 @@ namespace TweaksAndThings builder.Rebuild(); } ) - ).Tooltip("Enable Tag Updates", $"Will add {TextSprites.CycleWaybills} to the car tag title having Air System issues. Also prepends {TextSprites.HandbrakeWheel} if there is a handbrake set.\n\nHolding Shift while tags are displayed only shows tag titles that have issues."); + ).Tooltip("Enable Tag Updates", $"Will add {TextSprites.CycleWaybills} to the car tag title having Air System issues. Also prepends {TextSprites.HandbrakeWheel} if there is a handbrake set.\n\nHolding Left Alt while tags are displayed only shows tag titles that have issues."); }); }