diff --git a/ExtendedPlayerInventory/BepInExPlugin.cs b/ExtendedPlayerInventory/BepInExPlugin.cs index 06e1bc6..debf133 100644 --- a/ExtendedPlayerInventory/BepInExPlugin.cs +++ b/ExtendedPlayerInventory/BepInExPlugin.cs @@ -633,8 +633,14 @@ public static void Postfix(Hud __instance) if (!modEnabled.Value || !addEquipmentRow.Value || Player.m_localPlayer == null) return; - float gameScale = __instance.GetComponent().scaleFactor; + if (__instance == null) + return; + + CanvasScaler canvasScaler = __instance.GetComponent(); + if (canvasScaler == null) + return; + float gameScale = canvasScaler.scaleFactor; Vector3 mousePos = Input.mousePosition; if (!modEnabled.Value) @@ -648,25 +654,30 @@ public static void Postfix(Hud __instance) if (lastMousePos == Vector3.zero) lastMousePos = mousePos; + if (Hud.instance == null) + return; Transform hudRoot = Hud.instance.transform.Find("hudroot"); - + if (hudRoot == null) + return; if (AedenthornUtils.CheckKeyHeld(modKeyOne.Value) && AedenthornUtils.CheckKeyHeld(modKeyTwo.Value)) { + Transform quickAccessBar = hudRoot.Find("QuickAccessBar"); + if (quickAccessBar == null) + return; + + RectTransform quickAccessRectTransform = quickAccessBar.GetComponent(); + if (quickAccessRectTransform == null) + return; + + Rect quickSlotsRect = new Rect( + quickAccessRectTransform.anchoredPosition.x * gameScale, + quickAccessRectTransform.anchoredPosition.y * gameScale + Screen.height - quickAccessRectTransform.sizeDelta.y * gameScale * quickAccessScale.Value, + quickAccessRectTransform.sizeDelta.x * gameScale * quickAccessScale.Value * (3 / 8f), + quickAccessRectTransform.sizeDelta.y * gameScale * quickAccessScale.Value + ); - - Rect quickSlotsRect = Rect.zero; - if (hudRoot.Find("QuickAccessBar")?.GetComponent() != null) - { - quickSlotsRect = new Rect( - hudRoot.Find("QuickAccessBar").GetComponent().anchoredPosition.x * gameScale, - hudRoot.Find("QuickAccessBar").GetComponent().anchoredPosition.y * gameScale + Screen.height - hudRoot.Find("QuickAccessBar").GetComponent().sizeDelta.y * gameScale * quickAccessScale.Value, - hudRoot.Find("QuickAccessBar").GetComponent().sizeDelta.x * gameScale * quickAccessScale.Value * (3 / 8f), - hudRoot.Find("QuickAccessBar").GetComponent().sizeDelta.y * gameScale * quickAccessScale.Value - ); - } - if (quickSlotsRect.Contains(lastMousePos) && (currentlyDragging == "" || currentlyDragging == "QuickAccessBar")) { quickAccessX.Value += (mousePos.x - lastMousePos.x) / gameScale; @@ -679,7 +690,9 @@ public static void Postfix(Hud __instance) } } else + { currentlyDragging = ""; + } lastMousePos = mousePos; }