using System.Collections;
using UnityEngine;

public class Air : ActiveBlock
{
    public float fallingAnimationTime = 1.0f;
    public float fallingDistance = 10.0f;
    public bool burnAfterReading = true;

    int DeleteCount = 2;

    public override int GetInitative()
    {
        return -1;
    }

    public override IEnumerator OnWalkedOnByPlayer(Character player, Vector3 moveDirection)
    {
        player.stuck = true;
        player.respawnNeeded = true;

        //Very hacky, but it solved a weird bug where falling off the left-hand-side of the track didn't kill you, it just got you stuck down there forever
        //You have to leave the camera's sight in order to die from falling
        yield return StartCoroutine(player.AnimateToPosition(transform.position + Vector3.down * fallingDistance,Character.Animation.Hit, fallingAnimationTime));
        yield return StartCoroutine(player.AnimateToPosition(transform.position + Vector3.down * 100, Character.Animation.Hit, 0.01f));
        
        player.transform.localScale = Vector3.one;
    }

    public override IEnumerator OnRoundEnd(PlayerData[] allPlayers)
    {
        isFinished = true;

        if (burnAfterReading)
        {
            DeleteCount--;
            if (DeleteCount == 0)
                Destroy(gameObject);
        }
        yield break;
    }

    private IEnumerator LerpScale(Transform target, Vector3 endScale, float time)
    {
        Vector3 startScale = target.localScale;
        float elapsedTime = 0;

        while(elapsedTime < time)
        {
            target.localScale = Vector3.Slerp(startScale, endScale, (elapsedTime / time));
            yield return new WaitForEndOfFrame();
            elapsedTime += Time.deltaTime;
        }
        target.localScale = endScale;
    }
}
