From fbd08b007c06381270960082bef772e0c43e4fd8 Mon Sep 17 00:00:00 2001 From: RMROC451 Date: Sat, 27 Jul 2024 22:31:33 -0500 Subject: [PATCH] #33 double primary click any car/loco to follow --- .../Patches/CarPickable_Activate_Patch.cs | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 TweaksAndThings/Patches/CarPickable_Activate_Patch.cs diff --git a/TweaksAndThings/Patches/CarPickable_Activate_Patch.cs b/TweaksAndThings/Patches/CarPickable_Activate_Patch.cs new file mode 100644 index 0000000..9d3922f --- /dev/null +++ b/TweaksAndThings/Patches/CarPickable_Activate_Patch.cs @@ -0,0 +1,52 @@ +using HarmonyLib; +using Railloader; +using RollingStock; +using UnityEngine; + + +namespace RMROC451.TweaksAndThings.Patches; + +[HarmonyPatch(typeof(CarPickable))] +[HarmonyPatch(nameof(CarPickable.Activate), typeof(PickableActivateEvent))] +[HarmonyPatchCategory("RMROC451TweaksAndThings")] +internal class CarPickable_Activate_Patch +{ + + static float clicked = 0; + static float clicktime = 0; + static float clickdelay = 0.5f; + + private static bool Prefix(CarPickable __instance, PickableActivateEvent evt) + { + TweaksAndThingsPlugin tweaksAndThings = SingletonPluginBase.Shared; + if (!tweaksAndThings.IsEnabled) return true; + + if (OnPointerDown(evt)) + { + CameraSelector.shared.FollowCar(__instance.car); + return false; + } + + return true; + } + + public static bool OnPointerDown(PickableActivateEvent evt) + { + bool output = false; + if (evt.Activation == PickableActivation.Primary) + { + clicked++; + if (clicked == 1) clicktime = Time.time; + + if (clicked > 1 && Time.time - clicktime < clickdelay) + { + clicked = 0; + clicktime = 0; + output = true; + + } + else if (clicked > 2 || Time.time - clicktime > 1) clicked = 0; + } + return output; + } +}