r2mods/ilspy_dump/ror2_csproj/RoR2.UI/PickerPanelSizeAdjuster.cs

73 lines
1.9 KiB
C#
Raw Normal View History

2024-10-04 07:26:37 +00:00
using System;
using UnityEngine;
namespace RoR2.UI;
public class PickerPanelSizeAdjuster : MonoBehaviour
{
[SerializeField]
private PickupPickerPanel pickerPanel;
[SerializeField]
private RectTransform rectToAdjust;
[Tooltip("How many rows can we have before we begin to adjust")]
[SerializeField]
private int minRows = 5;
[SerializeField]
[Tooltip("After this many rows, we will not adjust the size any higher")]
private int maxRows = 7;
[Tooltip("How much should we adjust the window for each new row")]
[SerializeField]
private float adjustmentPerRow;
[SerializeField]
[Tooltip("This will be set automatically")]
private float objectHeight;
private bool capturedDefaults;
private void Awake()
{
PickupPickerPanel pickupPickerPanel = pickerPanel;
pickupPickerPanel.OnPanelSetupComplete = (Action)Delegate.Combine(pickupPickerPanel.OnPanelSetupComplete, new Action(AdjustPickerPanelSize));
}
private void CaptureDefaults()
{
if (capturedDefaults)
{
return;
}
RectTransform buttonContainer = pickerPanel.buttonContainer;
if (buttonContainer != null && buttonContainer.childCount > 0)
{
RectTransform component = buttonContainer.GetChild(0).GetComponent<RectTransform>();
if (component != null)
{
objectHeight = component.rect.height;
}
}
capturedDefaults = true;
}
private void AdjustPickerPanelSize()
{
int num = Mathf.Max(1, pickerPanel.maxColumnCount);
int value = pickerPanel.buttonContainer.childCount / num;
value = Mathf.Clamp(value, minRows, maxRows) - minRows;
rectToAdjust.ForceUpdateRectTransforms();
CaptureDefaults();
if (value > 0)
{
float num2 = adjustmentPerRow / 2f * (float)value;
Vector2 offsetMin = rectToAdjust.offsetMin;
rectToAdjust.offsetMin = new Vector2(offsetMin.x, offsetMin.y - num2);
offsetMin = rectToAdjust.offsetMax;
rectToAdjust.offsetMax = new Vector2(offsetMin.x, offsetMin.y + num2);
}
}
}