mirror of
https://github.com/rmroc451/TweaksAndThings.git
synced 2025-12-16 17:29:37 -06:00
Merge pull request #11 from rmroc451/3-tags-now-overlap-with-icons-when-titles-are-long
fix #3 tags now overlap with icons when titles are long
This commit is contained in:
@@ -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<Model.Car> consist = car.EnumerateCoupled(LogicalEnd.A);
|
||||
|
||||
@@ -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<width=100%><align=\"right\">";
|
||||
private const string tagTitleFormat = "<align=left><margin-right={0}.5em>{1}</margin><line-height=0>";
|
||||
|
||||
private static void Postfix(Car car, TagCallout tagCallout)
|
||||
{
|
||||
TagController tagController = UnityEngine.Object.FindObjectOfType<TagController>();
|
||||
TweaksAndThings tweaksAndThings = SingletonPluginBase<TweaksAndThings>.Shared;
|
||||
tagCallout.callout.Title = $"<align=left>{car.DisplayName}<line-height=0>";
|
||||
|
||||
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<align=\"right\">{TextSprites.CycleWaybills}{TextSprites.HandbrakeWheel}";
|
||||
}
|
||||
else if (car.EndAirSystemIssue())
|
||||
tagCallout.callout.Title =
|
||||
$"{tagCallout.callout.Title}\n<align=\"right\">{TextSprites.CycleWaybills}";
|
||||
else if (car.HandbrakeApplied())
|
||||
tagCallout.callout.Title =
|
||||
$"{tagCallout.callout.Title}\n<align=\"right\">{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();
|
||||
}
|
||||
@@ -13,6 +13,8 @@
|
||||
<GameAssembly Include="Definition" />
|
||||
|
||||
<GameAssembly Include="UnityEngine.CoreModule" />
|
||||
<GameAssembly Include="UnityEngine.UI" />
|
||||
<GameAssembly Include="Unity.TextMeshPro" />
|
||||
|
||||
<GameAssembly Include="System.Net.Http" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -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.");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user