using UnityEngine; namespace Wizard.Dialog.Setting; public class ItemToggle : Item { [SerializeField] private SettingBase m_parant; [SerializeField] private UILabel m_titleLabel; [SerializeField] private UILabel _subTextLabel; [SerializeField] private UILabel m_stateLabel; [SerializeField] private UIToggle m_toggle; [SerializeField] private GameObject m_separatorLineObj; [SerializeField] private UISprite _spriteON; [SerializeField] private UISprite _spriteOFF; [SerializeField] private BoxCollider _collider; private string m_OnText; private string m_OffText; private bool m_isPlaySe; private void Awake() { m_titleLabel.text = string.Empty; if (m_stateLabel != null) { m_stateLabel.text = string.Empty; } if (m_separatorLineObj != null) { m_separatorLineObj.SetActive(value: false); } _collider = m_toggle.GetComponent(); if (_subTextLabel != null) { _subTextLabel.gameObject.SetActive(value: false); _subTextLabel.text = string.Empty; } AddChangeCallback(delegate { UpdateStateLabel(); if (m_isPlaySe) { GameMgr.GetIns().GetSoundMgr().PlaySe(m_toggle.value ? Se.TYPE.SYS_TOGGLE_ON : Se.TYPE.SYS_TOGGLE_OFF); } else { m_isPlaySe = true; } }); } public void SetValue(bool value, bool isDisablePlayse = true) { m_toggle.value = value; if (isDisablePlayse) { m_isPlaySe = false; } } public bool GetValue() { return m_toggle.value; } public void SetTitleLabel(string title) { m_titleLabel.text = title; } public void SetSutTextLabel(string text) { _subTextLabel.gameObject.SetActive(value: true); _subTextLabel.text = text; } public void SetStateText(string onText, string offText) { m_OnText = onText; m_OffText = offText; UpdateStateLabel(); } public void SetActive_StateText(bool isActive) { m_stateLabel.gameObject.SetActive(isActive); } public void SetTitleTextLocalPos(Vector3 localPos) { m_titleLabel.transform.localPosition = localPos; } public void SetStateTextLocalPos(Vector3 localPos) { m_stateLabel.transform.localPosition = localPos; } public void SetToggleLocalPos(Vector3 localPos) { m_toggle.transform.localPosition = localPos; } private void UpdateStateLabel() { if (!string.IsNullOrEmpty(m_OnText) && !string.IsNullOrEmpty(m_OffText)) { m_stateLabel.text = (m_toggle.value ? m_OnText : m_OffText); } } public void SetToggleLooks(bool isNormal) { UIManager.SetObjectToGrey(m_toggle.gameObject, !isNormal); bool value = GetValue(); SetValue(!value, isDisablePlayse: false); SetValue(value, isDisablePlayse: false); _collider.enabled = isNormal; } public void SetLabelLooks(bool isNormal) { UIManager.SetObjectToGrey(m_stateLabel.gameObject, !isNormal); UIManager.SetObjectToGrey(m_titleLabel.gameObject, !isNormal); } public void SetSpriteONName(string spriteName, bool isMakePixelPerfect, bool isCollisionResize) { _spriteON.spriteName = spriteName; if (isMakePixelPerfect) { _spriteON.MakePixelPerfect(); } if (isCollisionResize) { _collider.size = new Vector3(_spriteON.width, _spriteON.height); } } public void SetSpriteOFFName(string spriteName, bool isMakePixelPerfect, bool isCollisionResize) { _spriteOFF.spriteName = spriteName; if (isMakePixelPerfect) { _spriteOFF.MakePixelPerfect(); } if (isCollisionResize) { _collider.size = new Vector3(_spriteOFF.width, _spriteOFF.height); } } public void SetButtonEnable(bool isEnable) { UIButton component = m_toggle.GetComponent(); if (null != component && component.enabled != isEnable) { component.enabled = isEnable; } } public void SetValidator(UIToggle.Validate validator) { m_toggle.validator = validator; } public override void AddChangeCallback(EventDelegate.Callback callback) { EventDelegate.Add(m_toggle.onChange, callback); } public void ClearChangeCallback() { m_toggle.onChange.Clear(); } public void AddChangeCallback(EventDelegate callback) { m_toggle.onChange.Add(callback); } public override void SetActive_SeparatorLine(bool isActive) { m_separatorLineObj.SetActive(isActive); } public void SetScrollView(UIScrollView view) { _collider.gameObject.AddMissingComponent().scrollView = view; } public void SetToggleEnable(bool isEnable) { if (!(m_toggle != null)) { return; } m_toggle.enabled = isEnable; if (isEnable) { return; } TweenColor[] componentsInChildren = m_toggle.GetComponentsInChildren(); if (componentsInChildren != null) { TweenColor[] array = componentsInChildren; for (int i = 0; i < array.Length; i++) { array[i].enabled = true; } } } }