using System.Collections;
using System.Collections.Generic;
using Cinemachine;
using GameAnvil;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.UI;

public class Character : MonoBehaviour
{
    private Animator animator;
    private Rigidbody2D rigidbody2d;
    private Sync sync;
    private PlayerInput input;
    private CinemachineVirtualCamera camera;
    public Text optionText;
    
    private Vector2 inputDirection;
    
    void Start()
    {
        animator = GetComponentInChildren<Animator>();
        rigidbody2d = GetComponent<Rigidbody2D>();
        sync = GetComponent<Sync>();
        input = GetComponent<PlayerInput>();

        optionText = GetComponentInChildren<Canvas>().GetComponentInChildren<Text>();
        optionText.text = sync.CreatedOption.ToString();
        
        camera = FindObjectOfType<CinemachineVirtualCamera>();
        if (sync.CreatedOption == CreatedOption.LOCAL)
        {
            camera.Follow = transform;
        }
    }

    // Update is called once per frame
    void FixedUpdate()
    {
        if (sync.CreatedOption == CreatedOption.LOCAL)
        {
            float inputX = inputDirection.x;
            if (inputX > 0) inputX = 1;
            if (inputX < 0) inputX = -1;
            rigidbody2d.AddForce(new Vector2(inputX, 0), ForceMode2D.Impulse);

            animator.SetFloat("Velocity X", rigidbody2d.velocity.x);
            animator.SetFloat("Velocity Y", rigidbody2d.velocity.y);
        }
    }

    public void OnMove(InputValue inputValue)
    {
        if (sync.CreatedOption == CreatedOption.LOCAL)
        {
            if (inputDirection.y > 0)
            {
                animator.SetTrigger("Jump");
                rigidbody2d.AddForce(Vector2.up * 10, ForceMode2D.Impulse);
            }

            inputDirection = inputValue.Get<Vector2>();
        }
    }
}
