﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Arugula.Animation;
using TMPro;

namespace Arugula.Games
{
    public class ElasticCallout : Callout
    {
        public TextMeshPro label;
        public bool showOnStart = true;
        public Vector3 bump;
        public Tween.Options showTween;
        public Tween.Options hideTween;

        Elastomer elastomer;
        ITween<Vector3> scaler;

        private void Awake()
        {
            elastomer = GetComponent<Elastomer>();
        }

        private void Start()
        {
            if (showOnStart)
                Show();
        }

        public override void Show()
        {
            if (Visible)
                return;

            gameObject.SetActive(true);
            Visible = true;
            ClearTween();
            transform.localScale = Vector3.one * 0.01f;
            transform.ScaleTo(Vector3.one, showTween);
            elastomer.ZeroOut();
            elastomer.ArtificialMove((Random.value > 0.5f ? 1 : -1) * transform.TransformDirection(bump));
        }

        public override void Hide()
        {
            Visible = false;
            ClearTween();
            scaler = transform.ScaleTo(Vector3.one * 0.01f, hideTween);
            scaler.OnFinished += (x) => { if (x) gameObject.SetActive(false); };
        }

        void ClearTween()
        {
            if (scaler != null && !scaler.Finished)
                scaler.Finish(false);
        }
    }
}