|
- using System;
-
- using HarmonyLib;
- using System.Reflection;
- using UnityEngine;
-
- namespace CLre.Fixes
- {
- [Bugfix(name = "ScrollSpeedImprovement",
- description = "Improve mouse wheel scroll speed in inventory",
- more = "https://trello.com/c/elL8IVdn/4-scroll-menus-are-insensitive",
- component = BugfixType.HarmonyPatch, id = 5)]
- [HarmonyPatch]
- class InventoryPanelScrollEngine_ScrollPanelByMouseWheel_Patch
- {
- [HarmonyPrefix]
- public static bool BeforeMethodCall(ref object panelScrollComponent, ref float scrollValue)
- {
- if (panelScrollComponent == null) return true; // If it's null, we don't try to handle it.
- // We, perhaps dangerously, assume that we'll only get a panelScrollComponent.
- PropertyInfo scrollbar = panelScrollComponent.GetType().GetProperty("scrollbar", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
- UnityEngine.UI.Scrollbar sb = scrollbar.GetValue(panelScrollComponent) as UnityEngine.UI.Scrollbar;
- float num = -scrollValue * (sb.size * 0.3f);
- float num2 = sb.value;
- num2 = Mathf.Clamp01(num2 + num);
- sb.value = num2;
- return false; // Tell harmony not to invoke the original method
- }
-
-
- [HarmonyTargetMethod]
- public static MethodBase Target()
- {
- MethodInfo methodtopatch = AccessTools.Method("Game.UI.InventoryPanelScrollEngine:ScrollPanelByMouseWheel");
- //if (null == methodtopatch) API.Utility.Logging.MetaLog("Intercepting Game.UI.InventoryPanelScrollEngine:ScrollPanelByMouseWheel() failed");
- return methodtopatch;
- }
- }
- }
|