Skip to content
Snippets Groups Projects
Controller.cs 2.28 KiB
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;
    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;

    public float getSpeed()
    {
        return speed;
    }

    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 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;
    }

    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;
    }
}