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 float block; public Inputs() { behindBack = 0; stepBack = 0; crossOver = 0; horizontalMovement = 0; verticalMovement = 0; steal = 0; block = 0; } public void resetInputs() { behindBack = 0; stepBack = 0; crossOver = 0; horizontalMovement = 0; verticalMovement = 0; steal = 0; block = 0; } }