﻿using UnityEngine;
using UnityEngine.UI;

namespace JLGames.RocketDriver.Samples.LuaDemo
{
    public class SyncSize : MonoBehaviour
    {
        [SerializeField] private InputField m_Source;
        [SerializeField] private RectTransform m_Target;

        private Vector2 m_MinSize;

        private void Awake()
        {
            m_MinSize = m_Target.sizeDelta;
        }

        public void DoSync(string value)
        {
            // 计算字符串的宽度和高度
            var generator = new TextGenerator();
            var settings = m_Source.textComponent.GetGenerationSettings(m_Source.textComponent.rectTransform.rect.size);
            var width = generator.GetPreferredWidth(value, settings);
            width = Mathf.Max(width, m_MinSize.x);
            var height = generator.GetPreferredHeight(value, settings);
            height = Mathf.Max(height, m_MinSize.y);
            // 更新元素的大小
            var size = new Vector2(width, height);
            m_Target.sizeDelta = size;
            ((RectTransform) m_Source.transform).sizeDelta = size;
        }
    }
}