Newer
Older
Dreamsturbia-Project-IADE-Unity3D / Assets / Scripts / PlayerController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Cinemachine;
public class PlayerController : MonoBehaviour
{
    [SerializeField]
    private CinemachineFreeLook cinemachineFreeLook;
    [HideInInspector]
    public Mana manaScript;
    [HideInInspector]
    public Health healthScript;
    [HideInInspector]
    public Rigidbody rb;

    [HideInInspector]
    public int directionPushAndPull = 1;
    [HideInInspector]
    public bool pushAndPull = false;
    [HideInInspector]
    public BoxScript currentTarget = null;
    private float pushAndPullCoolDown = 0.5f;

    public bool intention = true;

    private Text intentText;


    public List<AbilitieAndCode> abilities;

    
    

    // Focus
    [HideInInspector]
    public float timerFocusTotal;
    private float timerFocus;
    [HideInInspector]
    public bool focusTrigger = false;
    private bool endFocus = false;
    [HideInInspector]
    public float timeMultiplier;


    //Dash
    [HideInInspector]
    public float immortalityTimer;
    [HideInInspector]
    public bool dashing = false;

    //Inputs
    [HideInInspector]
    public float xInput;
    [HideInInspector]
    public float zInput;

    private Rigidbody currentTargetrb;

    [SerializeField]
    //private Animator animator;
    private float animationTimer;

    //WorldLimiter
    [HideInInspector]
    public Vector3 transpassedCoordinate = Vector3.zero;
    PostProcessingController postProcessingController;

    void Start()
    {
        manaScript = GetComponent<Mana>();
        healthScript = GetComponent<Health>();
        rb = GetComponent<Rigidbody>();
        timeMultiplier = 1;
        intentText = GameObject.FindGameObjectWithTag("PushPullText").GetComponent<Text>();
        postProcessingController = Camera.main.GetComponent<PostProcessingController>();

        if (StoredTeleport.teleported)
        {
            healthScript.deathPos = StoredTeleport.position;
            StoredTeleport.teleported = false;
            transform.position = StoredTeleport.position;
        }
}

    void Update()
    {
        zInput = Input.GetAxis("Vertical");
        xInput = Input.GetAxis("Horizontal");

        if (Input.GetKeyDown(KeyCode.Q)) intention = !intention;

        if (intention)
        {
            if (Input.GetKeyDown(abilities[0].code))
            {
                //Attack
                //animator.SetTrigger("Attack");
            }
            if (Input.GetKeyDown(abilities[5].code))
            {
                //Parry
                abilities[5].ability.Effects(this);
            }
            intentText.text = "Combat";
        }
        else
        {
            intentText.text = "Push And Pull";
            if (Input.GetKey(abilities[3].code) || Input.GetKey(abilities[4].code))
            {
                //PushAndPull
                
                if (Input.GetKeyDown(abilities[3].code))
                {
                    directionPushAndPull = 1;
                }
                if (Input.GetKeyDown(abilities[4].code))
                {
                    directionPushAndPull = -1;
                }
                if (!pushAndPull)
                {
                    abilities[3].ability.Effects(this);
                    pushAndPull = true;
                    if (currentTarget != null)
                        currentTargetrb = currentTarget.GetComponent<Rigidbody>();
                }
            }
            else EndPushAndPull();
        }
            if((Input.GetKeyDown(abilities[1].code) && !focusTrigger) || endFocus)
            {
                //Focus
                abilities[1].ability.Effects(this);
                timerFocus = timerFocusTotal;
                endFocus = false;
            }
            if (Input.GetKeyDown(abilities[2].code))
            {
            //Dash
            //  animator.SetBool("Dash", true);
           //animator.SetTrigger("DashTrigger");
                abilities[2].ability.Effects(this);
            }
        
        Timer();
        cinemachineFreeLook.m_XAxis.m_MaxSpeed = 300 * timeMultiplier;
        cinemachineFreeLook.m_YAxis.m_MaxSpeed = 2 * timeMultiplier;
        
    }
    public void Attack()
    {
        abilities[0].ability.Effects(this);
    }
    private void Timer()
    {
        //Focus Timer
        if (timerFocus > 0) timerFocus -= Time.deltaTime * timeMultiplier;
        else if (focusTrigger) { endFocus = true; focusTrigger = false; }

        //Dash Immortality Timer
        if (immortalityTimer > 0) immortalityTimer -= Time.deltaTime * timeMultiplier;
        else { healthScript.immortality = false; dashing = false; }

        if (pushAndPullCoolDown > 0) pushAndPullCoolDown -= Time.deltaTime * timeMultiplier;
       

    }
    private void FixedUpdate()
    {
        
        if (pushAndPull) abilities[3].ability.Effects(this);
        if (currentTarget == null) pushAndPull = false;

    }
    public void EndPushAndPull()
    {
        if (currentTarget != null)
        {
            currentTarget.Manipulation(false);
            if(currentTarget.CompareTag("Box"))
            currentTargetrb.velocity = Vector3.zero;
            currentTarget = null;
            
        }
    }
    
}