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
+
+