rather than wait for the next callout refresh ever 1s, call update if the inspector observers fire off.

This commit is contained in:
2024-06-23 02:04:53 -05:00
parent 0adcbfa787
commit 6693a762c9

View File

@@ -2,6 +2,7 @@
using Game.State; using Game.State;
using HarmonyLib; using HarmonyLib;
using KeyValue.Runtime; using KeyValue.Runtime;
using Model.OpsNew;
using Railloader; using Railloader;
using RMROC451.TweaksAndThings.Enums; using RMROC451.TweaksAndThings.Enums;
using RMROC451.TweaksAndThings.Extensions; using RMROC451.TweaksAndThings.Extensions;
@@ -11,6 +12,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using UI.Builder; using UI.Builder;
using UI.CarInspector; using UI.CarInspector;
using UI.Tags;
using static Model.Car; using static Model.Car;
namespace RMROC451.TweaksAndThings.Patches; namespace RMROC451.TweaksAndThings.Patches;
@@ -61,27 +63,29 @@ public class CarInspector_PopulateCarPanel_Patch
private static UIPanelBuilder AddCarConsistRebuildObservers(UIPanelBuilder builder, IEnumerable<Model.Car> consist) private static UIPanelBuilder AddCarConsistRebuildObservers(UIPanelBuilder builder, IEnumerable<Model.Car> consist)
{ {
TagController tagController = UnityEngine.Object.FindFirstObjectByType<TagController>();
foreach (Model.Car car in consist) foreach (Model.Car car in consist)
{ {
builder = AddObserver(builder, car, PropertyChange.KeyForControl(PropertyChange.Control.Handbrake)); builder = AddObserver(builder, car, PropertyChange.KeyForControl(PropertyChange.Control.Handbrake), tagController);
foreach (LogicalEnd logicalEnd in ends) foreach (LogicalEnd logicalEnd in ends)
{ {
builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.IsCoupled, car.LogicalToEnd(logicalEnd))); builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.IsCoupled, car.LogicalToEnd(logicalEnd)), tagController);
builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.IsAirConnected, car.LogicalToEnd(logicalEnd))); builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.IsAirConnected, car.LogicalToEnd(logicalEnd)), tagController);
builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.Anglecock, car.LogicalToEnd(logicalEnd))); builder = AddObserver(builder, car, KeyValueKeyFor(EndGearStateKey.Anglecock, car.LogicalToEnd(logicalEnd)), tagController);
} }
} }
return builder; return builder;
} }
private static UIPanelBuilder AddObserver(UIPanelBuilder builder, Model.Car car, string key) private static UIPanelBuilder AddObserver(UIPanelBuilder builder, Model.Car car, string key, TagController tagController)
{ {
builder.AddObserver( builder.AddObserver(
car.KeyValueObject.Observe( car.KeyValueObject.Observe(
key, key,
delegate (Value value) delegate (Value value)
{ {
tagController.UpdateTag(car, car.TagCallout, OpsController.Shared);
builder.Rebuild(); builder.Rebuild();
}, },
false false