﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

namespace Tap.Tilt
{
    public class AnimatorController : ObjectController
    {
        public Animator animator;

        public string hoverParam = "hover";
        public AnimatorControllerParameterType hoverParamType = AnimatorControllerParameterType.Trigger;

        public string touchParam = "touch";
        public AnimatorControllerParameterType touchParamType = AnimatorControllerParameterType.Trigger;

        public string endParam = "end";
        public AnimatorControllerParameterType endParamType = AnimatorControllerParameterType.Trigger;

        public override void TouchInput(ControlData controlData)
        {
            string touchType = controlData.type;
            TouchData[] touches = controlData.touches;
            
            // touchType will be touchstart, touchend, touchcancel, or touchmove
            switch (touchType)
            {
                case "touchstart":
                    Touch();
                    break;
                case "touchmove":
                    break;
                case "touchend":
                    EndTouch();
                    break;
                case "touchcancel":
                    break;
            }
            // update the lastTouches
            lastTouches = touches;
        }

        private void Touch()
        {
            switch (touchParamType)
            {
                case AnimatorControllerParameterType.Trigger:
                    animator.SetTrigger(touchParam);
                    break;
                case AnimatorControllerParameterType.Bool:
                    animator.SetBool(touchParam, true);
                    break;
                case AnimatorControllerParameterType.Float:
                    animator.SetFloat(touchParam, 1f);
                    break;
                case AnimatorControllerParameterType.Int:
                    animator.SetInteger(touchParam, 1);
                    break;
            }
        }

        private void EndTouch()
        {
            switch (touchParamType)
            {
                case AnimatorControllerParameterType.Trigger:
                    //animator.SetTrigger(touchParam);
                    break;
                case AnimatorControllerParameterType.Bool:
                    animator.SetBool(touchParam, false);
                    break;
                case AnimatorControllerParameterType.Float:
                    animator.SetFloat(touchParam, 0);
                    break;
                case AnimatorControllerParameterType.Int:
                    animator.SetInteger(touchParam, 0);
                    break;
            }
        }

        public override void Dimmer()
        {
            switch (hoverParamType)
            {
                case AnimatorControllerParameterType.Trigger:
                    break;
                case AnimatorControllerParameterType.Bool:
                    animator.SetBool(hoverParam, false);
                    break;
                case AnimatorControllerParameterType.Float:
                    animator.SetFloat(hoverParam, 0);
                    break;
                case AnimatorControllerParameterType.Int:
                    animator.SetInteger(hoverParam, 0);
                    break;
            }
        }

        public override void Indicate()
        {
            switch (hoverParamType)
            {
                case AnimatorControllerParameterType.Trigger:
                    animator.SetTrigger(hoverParam);
                    break;
                case AnimatorControllerParameterType.Bool:
                    animator.SetBool(hoverParam, true);
                    break;
                case AnimatorControllerParameterType.Float:
                    animator.SetFloat(hoverParam, 1f);
                    break;
                case AnimatorControllerParameterType.Int:
                    animator.SetInteger(hoverParam, 1);
                    break;
            }
        }

    }
}
