using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using DG.Tweening;
using System;
using SC.InputSystem;

namespace SC
{
    public class ButtonGazeEffect : PointEffectBase
    {
        /// <summary>
        /// 初始值
        /// </summary>
        private float initLocalScaleValue = 0f;
        /// <summary>
        /// 目标值
        /// </summary>
        public float endLocalScaleValue = 0.1f;
        /// <summary>
        /// 初始是否显示Mesh
        /// </summary>
        private bool InitMeshRenderState=false;

        private MeshRenderer _meshRenderer;
        protected MeshRenderer meshRenderer {
            get {
                if (_meshRenderer == null) {
                    try {
                        _meshRenderer = GetComponent<MeshRenderer>();
                        InitMeshRenderState = _meshRenderer.enabled;
                    } catch (Exception e) {
                        Debug.Log(e);
                    }
                }
                return _meshRenderer;
            }
        }

        private AutoClick _autoClick;
        protected AutoClick autoClick {
            get {
                if (_autoClick == null) {
                    try {
                        _autoClick = GetComponentInParent<AutoClick>();
                    } catch (Exception e) {
                        Debug.Log(e);
                    }
                }
                return _autoClick;
            }
        }

        public override void OnPointerEnter(PointerEventData eventData) {
            base.OnPointerEnter(eventData);
            if(!autoClick)
                return;

            if (!InitMeshRenderState && meshRenderer) {
                meshRenderer.enabled = true;
            }

            transform.DOScaleZ(endLocalScaleValue, autoClick.autoClickTime).SetAutoKill(true).SetId("entertween");
        }

        public override void OnPointerClick(PointerEventData eventData) {
            base.OnPointerClick(eventData);
            if(!autoClick)
                return;

            if (!InitMeshRenderState && meshRenderer) {
                meshRenderer.enabled = false;
            }
            DOTween.Kill("entertween");
            transform.DOScaleZ(initLocalScaleValue, 0).SetAutoKill(true);
        }

        public override void OnPointerExit(PointerEventData eventData) {
            base.OnPointerExit(eventData);
            if(!autoClick)
                return;

            if (!InitMeshRenderState && meshRenderer) {
                meshRenderer.enabled = false;
            }
            DOTween.Kill("entertween");
            transform.DOScaleZ(initLocalScaleValue, 0).SetAutoKill(true);
        }

    }
}