diff --git a/TweaksAndThings/Images/BleedCar.png b/TweaksAndThings/Images/BleedCar.png new file mode 100644 index 0000000..69d6424 Binary files /dev/null and b/TweaksAndThings/Images/BleedCar.png differ diff --git a/TweaksAndThings/Images/BleedConsist.png b/TweaksAndThings/Images/BleedConsist.png new file mode 100644 index 0000000..36ec48f Binary files /dev/null and b/TweaksAndThings/Images/BleedConsist.png differ diff --git a/TweaksAndThings/Images/ConnectAir.png b/TweaksAndThings/Images/ConnectAir.png new file mode 100644 index 0000000..17f6f80 Binary files /dev/null and b/TweaksAndThings/Images/ConnectAir.png differ diff --git a/TweaksAndThings/Images/ConsistReleaseBrake.png b/TweaksAndThings/Images/ConsistReleaseBrake.png new file mode 100644 index 0000000..d8aecc9 Binary files /dev/null and b/TweaksAndThings/Images/ConsistReleaseBrake.png differ diff --git a/TweaksAndThings/Images/ConsistSetBrake.png b/TweaksAndThings/Images/ConsistSetBrake.png new file mode 100644 index 0000000..28641c1 Binary files /dev/null and b/TweaksAndThings/Images/ConsistSetBrake.png differ diff --git a/TweaksAndThings/Images/Follow.png b/TweaksAndThings/Images/Follow.png new file mode 100644 index 0000000..71ec35d Binary files /dev/null and b/TweaksAndThings/Images/Follow.png differ diff --git a/TweaksAndThings/Images/Hourglass_icon.png b/TweaksAndThings/Images/Hourglass_icon.png new file mode 100644 index 0000000..201031e Binary files /dev/null and b/TweaksAndThings/Images/Hourglass_icon.png differ diff --git a/TweaksAndThings/Images/Map_pin_icon.png b/TweaksAndThings/Images/Map_pin_icon.png new file mode 100644 index 0000000..266fdcb Binary files /dev/null and b/TweaksAndThings/Images/Map_pin_icon.png differ diff --git a/TweaksAndThings/Images/OilCan.png b/TweaksAndThings/Images/OilCan.png new file mode 100644 index 0000000..240c3d5 Binary files /dev/null and b/TweaksAndThings/Images/OilCan.png differ diff --git a/TweaksAndThings/Images/ReleaseBrake.png b/TweaksAndThings/Images/ReleaseBrake.png new file mode 100644 index 0000000..60efe04 Binary files /dev/null and b/TweaksAndThings/Images/ReleaseBrake.png differ diff --git a/TweaksAndThings/Images/SetBrake.png b/TweaksAndThings/Images/SetBrake.png new file mode 100644 index 0000000..da7a7b2 Binary files /dev/null and b/TweaksAndThings/Images/SetBrake.png differ diff --git a/TweaksAndThings/Images/Thumbs.db b/TweaksAndThings/Images/Thumbs.db new file mode 100644 index 0000000..457bccd Binary files /dev/null and b/TweaksAndThings/Images/Thumbs.db differ diff --git a/TweaksAndThings/Patches/CarPickable_HandleShowContextMenu_Patch.cs b/TweaksAndThings/Patches/CarPickable_HandleShowContextMenu_Patch.cs index 931fa63..64b3a74 100644 --- a/TweaksAndThings/Patches/CarPickable_HandleShowContextMenu_Patch.cs +++ b/TweaksAndThings/Patches/CarPickable_HandleShowContextMenu_Patch.cs @@ -1,4 +1,5 @@ -using HarmonyLib; +using Game.State; +using HarmonyLib; using Model; using Railloader; using RMROC451.TweaksAndThings.Enums; @@ -8,6 +9,8 @@ using System; using System.Linq; using UI; using UI.ContextMenu; +using UnityEngine; +using ContextMenu = UI.ContextMenu.ContextMenu; namespace RMROC451.TweaksAndThings.Patches; @@ -34,45 +37,66 @@ internal class CarPickable_HandleShowContextMenu_Patch { trainController.SelectedCar = ((trainController.SelectedCar == car) ? null : car); }); + if (!car.EnumerateCoupled().Any(c => !c.SupportsBleed())) { - shared.AddButton(ContextMenuQuadrant.Brakes, $"Bleed Consist", SpriteName.Bleed, delegate + Sprite bleedConsist = MapWindow_OnClick_Patch.LoadTexture("BleedConsist.png", "BleedConsist"); + shared.AddButton(ContextMenuQuadrant.Brakes, $"Bleed Consist", bleedConsist, delegate { CarInspector_PopulateCarPanel_Patch.MrocConsistHelper(car, MrocHelperType.BleedAirSystem, buttonsHaveCost); }); } if (car.SupportsBleed()) { - shared.AddButton(ContextMenuQuadrant.Brakes, "Bleed", SpriteName.Bleed, car.SetBleed); + Sprite bleedCar = MapWindow_OnClick_Patch.LoadTexture("BleedCar.png", "BleedCar"); + shared.AddButton(ContextMenuQuadrant.Brakes, "Bleed", bleedCar, car.SetBleed); } - shared.AddButton(ContextMenuQuadrant.Brakes, $"{(car.EnumerateCoupled().Any(c => c.HandbrakeApplied()) ? "Release " : "Set ")} Consist", SpriteName.Handbrake, delegate + string text = car.EnumerateCoupled().Any(c => c.HandbrakeApplied()) ? "Release " : "Set "; + Sprite consistBrakes = MapWindow_OnClick_Patch.LoadTexture($"Consist{text.Trim()}Brake.png", $"{text.Trim()}Consist"); + shared.AddButton(ContextMenuQuadrant.Brakes, $"{text}Consist", consistBrakes, delegate { CarInspector_PopulateCarPanel_Patch.MrocConsistHelper(car, MrocHelperType.Handbrake, buttonsHaveCost); }); - shared.AddButton(ContextMenuQuadrant.Brakes, car.air.handbrakeApplied ? "Release Handbrake" : "Apply Handbrake", SpriteName.Handbrake, delegate + + + string textCar = car.HandbrakeApplied() ? "Release " : "Set "; + Sprite carBrakes = MapWindow_OnClick_Patch.LoadTexture($"{text.Trim()}Brake.png", $"{text.Trim()}Consist"); + shared.AddButton(ContextMenuQuadrant.Brakes, $"{textCar}Handbrake", carBrakes, delegate { bool apply = !car.air.handbrakeApplied; car.SetHandbrake(apply); }); + if (car.EnumerateCoupled().Any(c => c.EndAirSystemIssue())) { - shared.AddButton(ContextMenuQuadrant.General, $"Air Up Consist", SpriteName.Select, delegate + Sprite connectAir = MapWindow_OnClick_Patch.LoadTexture($"ConnectAir.png", "ConnectAir"); + shared.AddButton(ContextMenuQuadrant.General, $"Air Up Consist", connectAir, delegate { CarInspector_PopulateCarPanel_Patch.MrocConsistHelper(car, MrocHelperType.GladhandAndAnglecock, buttonsHaveCost); }); } - shared.AddButton(ContextMenuQuadrant.General, $"Follow", SpriteName.Inspect, delegate + if (StateManager.IsHost && car.EnumerateCoupled().Any(c => c.NeedsOiling || c.HasHotbox)) + { + Sprite oilCan = MapWindow_OnClick_Patch.LoadTexture("OilCan.png", "OilCan"); + shared.AddButton(ContextMenuQuadrant.General, $"Oil Consist", oilCan, delegate + { + CarInspector_PopulateCarPanel_Patch.MrocConsistHelper(car, MrocHelperType.Oil, buttonsHaveCost); + }); + } + + Sprite follow = MapWindow_OnClick_Patch.LoadTexture($"Follow.png", "ConnectAir"); + shared.AddButton(ContextMenuQuadrant.General, $"Follow", follow, delegate { CameraSelector.shared.FollowCar(car); }); string secondaryLine = car.Waybill.HasValue ? $"{Environment.NewLine}{car.Waybill.Value.Destination.DisplayName}" : string.Empty; secondaryLine = secondaryLine.Length > 10 + Environment.NewLine.Length ? $"{secondaryLine.Substring(0, 7 + Environment.NewLine.Length)}..." : secondaryLine; - shared.Show($"{car.DisplayName}{secondaryLine}"); + shared.Show($"{car.EnumerateCoupled().Count()} Cars{Environment.NewLine}{car.DisplayName}{secondaryLine}"); shared.BuildItemAngles(); shared.StartCoroutine(shared.AnimateButtonsShown()); return false; diff --git a/TweaksAndThings/RMROC451.TweaksAndThings.csproj b/TweaksAndThings/RMROC451.TweaksAndThings.csproj index 8069656..710333b 100644 --- a/TweaksAndThings/RMROC451.TweaksAndThings.csproj +++ b/TweaksAndThings/RMROC451.TweaksAndThings.csproj @@ -55,4 +55,47 @@ + + + + + + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + +