Skip to content
Snippets Groups Projects
Controller.cs 2.77 KiB
Newer Older
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

public abstract class Controller : MonoBehaviour
{
    public event Action<int> handChange;
    [SerializeField] protected float speed;
    [SerializeField] protected float jumpForce;
    protected Animator animatorController;
    [HideInInspector] public int currentHand;
    [HideInInspector] public int opponentHand;
    [HideInInspector] protected ControlStrategy controlType;
    [HideInInspector] protected Inputs inputs;
    protected bool canMove;
    protected bool canSkill;
    protected bool myTurn;
    protected Transform target;

    public float getSpeed()
    {
        return speed;
    }

    public float getJumpForce()
    {
        return jumpForce;
    }

    public bool isSkillUsing()
    {
        return !canSkill;
    }

    public bool isMoving()
    {
        return !canMove;
    }

    public bool isMyturn()
    {
        return !myTurn;
    }

    public float getBehindBackInput()
    {
        return inputs.behindBack;
    }

    public float getCrossOverInput()
    {
        return inputs.crossOver;
    }

    public float getStepBackInput()
    {
        return inputs.stepBack;
    }

    public float getHorizontalMovementInput()
    {
        return inputs.horizontalMovement;
    }

    public float getVerticalMovementInput()
    {
        return inputs.verticalMovement;
    }

    public float getStealInput()
    {
        return inputs.steal;
    }
    
    public float getBlockInput()
    {
        return inputs.block;
    }
    public Transform getTarget()
    {
        return target;
    }

    public abstract void changeTurn();

    public void updateMovementLockStates()
    {
        canMove = canMove == true ? false : true;
        canSkill = canSkill == true ? false : true;
    }

    public void callEvent()
    {
        handChange(currentHand);
    }

    public void setListenner(Controller controller)
    {
        controller.handChange += updateOpponentHand;
    }

    public void setTarget(Transform t)
    {
        target = t;
    }

    private void updateOpponentHand(int hand)
    {
        opponentHand = hand;
    }
}

public class Inputs
{
    public float behindBack;
    public float stepBack;
    public float crossOver;
    public float horizontalMovement;
    public float verticalMovement;
    public float steal;

    public Inputs()
    {
        behindBack = 0;
        stepBack = 0;
        crossOver = 0;
        horizontalMovement = 0;
        verticalMovement = 0;
        steal = 0;

    public void resetInputs()
    {
        behindBack = 0;
        stepBack = 0;
        crossOver = 0;
        horizontalMovement = 0;
        verticalMovement = 0;
        steal = 0;
        block = 0;
    }