From 7a21c6472eeeadb18cd46e6aac59f6f26718d36d Mon Sep 17 00:00:00 2001 From: RMROC451 Date: Mon, 17 Jun 2024 22:55:51 -0500 Subject: [PATCH] removed hStack.RebuildOnInterval in favor of builder.AddObserver for each car in inspector car's consist. --- Directory.Build.targets | 2 +- .../CarInspector_PopulateCarPanel_Patch.cs | 35 +++++++++++-------- .../RMROC451.TweaksAndThings.csproj | 6 ---- 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/Directory.Build.targets b/Directory.Build.targets index 9dc8f41..28fc007 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -12,7 +12,7 @@ 0 1 - 1 + 2 $(MajorVersion).$(MinorVersion).$(PatchVersion) $(AssemblyVersion) $(AssemblyVersion) diff --git a/TweaksAndThings/Patches/CarInspector_PopulateCarPanel_Patch.cs b/TweaksAndThings/Patches/CarInspector_PopulateCarPanel_Patch.cs index 2a176c4..b9f7654 100644 --- a/TweaksAndThings/Patches/CarInspector_PopulateCarPanel_Patch.cs +++ b/TweaksAndThings/Patches/CarInspector_PopulateCarPanel_Patch.cs @@ -1,27 +1,16 @@ -using GalaSoft.MvvmLight.Messaging; -using Game; -using Game.Events; -using Game.Messages; +using Game.Messages; using Game.State; using HarmonyLib; using KeyValue.Runtime; -using Network; -using Network.Messages; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using Railloader; using Serilog; using System; -using System.Collections; using System.Collections.Generic; using System.Linq; -using System.Runtime.Remoting.Messaging; using TweaksAndThings.Enums; using UI.Builder; using UI.CarInspector; -using WorldStreamer2; using static Model.Car; -using static Unity.IO.LowLevel.Unsafe.AsyncReadManagerMetrics; namespace TweaksAndThings.Patches; @@ -44,10 +33,11 @@ public class CarInspector_PopulateCarPanel_Patch TweaksAndThings tweaksAndThings = SingletonPluginBase.Shared; if (!tweaksAndThings.IsEnabled) return true; + var consist = __instance._car.EnumerateCoupled(LogicalEnd.A); + builder = AddCarConsistRebuildObservers(builder, consist); + builder.HStack(delegate (UIPanelBuilder hstack) { - var consist = __instance._car.EnumerateCoupled(LogicalEnd.A); - var buttonName = $"{(consist.Any(c => c.HandbrakeApplied()) ? "Release " : "Set ")} {TextSprites.HandbrakeWheel}"; hstack.AddButtonCompact(buttonName, delegate { @@ -63,12 +53,27 @@ public class CarInspector_PopulateCarPanel_Patch hstack.Rebuild(); }).Tooltip("Connect Consist Air Lines", "Iterates over each car in this consist and connects gladhands and opens anglecocks."); } - hstack.RebuildOnInterval(1f); }); return true; } + private static UIPanelBuilder AddCarConsistRebuildObservers(UIPanelBuilder builder, IEnumerable consist) + { + foreach (Model.Car car in consist) + { + builder.AddObserver(car.KeyValueObject.Observe(PropertyChange.KeyForControl(PropertyChange.Control.Handbrake), delegate (Value value) { builder.Rebuild(); }, false)); + 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)); + } + } + + return builder; + } + public static void MrocConsistHelper(Model.Car car, MrocHelperType mrocHelperType) { IEnumerable consist = car.EnumerateCoupled(LogicalEnd.A); diff --git a/TweaksAndThings/RMROC451.TweaksAndThings.csproj b/TweaksAndThings/RMROC451.TweaksAndThings.csproj index 47d737c..5b93d89 100644 --- a/TweaksAndThings/RMROC451.TweaksAndThings.csproj +++ b/TweaksAndThings/RMROC451.TweaksAndThings.csproj @@ -27,10 +27,4 @@ - - - - D:\SteamLibrary\steamapps\common\Railroader\Mods\ForYourConvenience\ForYourConvenience.dll - -