using SRDebugger.UI.Other; using SRF; using UnityEngine; using UnityEngine.UI; namespace SRDebugger.UI { public class MobileMenuController : SRMonoBehaviourEx { private Button _closeButton; [SerializeField] private float _maxMenuWidth = 185f; [SerializeField] private float _peekAmount = 45f; private float _targetXPosition; [RequiredField] public RectTransform Content; [RequiredField] public RectTransform Menu; [RequiredField] public Button OpenButton; [RequiredField] public SRTabController TabController; public float PeekAmount { get { return _peekAmount; } } public float MaxMenuWidth { get { return _maxMenuWidth; } } protected override void OnEnable() { base.OnEnable(); RectTransform rectTransform = Menu.parent as RectTransform; LayoutElement component = Menu.GetComponent(); component.ignoreLayout = true; Menu.pivot = new Vector2(1f, 1f); Menu.offsetMin = new Vector2(1f, 0f); Menu.offsetMax = new Vector2(1f, 1f); Menu.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, Mathf.Clamp(rectTransform.rect.width - PeekAmount, 0f, MaxMenuWidth)); Menu.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, rectTransform.rect.height); Menu.anchoredPosition = new Vector2(0f, 0f); if (_closeButton == null) { CreateCloseButton(); } OpenButton.gameObject.SetActive(true); TabController.ActiveTabChanged += TabControllerOnActiveTabChanged; } protected override void OnDisable() { base.OnDisable(); LayoutElement component = Menu.GetComponent(); component.ignoreLayout = false; Content.anchoredPosition = new Vector2(0f, 0f); _closeButton.gameObject.SetActive(false); OpenButton.gameObject.SetActive(false); TabController.ActiveTabChanged -= TabControllerOnActiveTabChanged; } private void CreateCloseButton() { GameObject gameObject = Content.CreateChild("CloseButton"); RectTransform rectTransform = gameObject.AddComponent(); gameObject.AddComponent().ignoreLayout = true; rectTransform.anchorMin = new Vector2(0f, 0f); rectTransform.anchorMax = new Vector2(1f, 1f); rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, Content.rect.width); rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, Content.rect.height); gameObject.AddComponent().color = new Color(0f, 0f, 0f, 0f); _closeButton = gameObject.AddComponent