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

[RequireComponent(typeof(Animator))]
[RequireComponent(typeof(Rigidbody2D))]
[RequireComponent(typeof(StepBackScript))]
[RequireComponent(typeof(CrossOverScript))]
[RequireComponent(typeof(BehindBackScript))]
[RequireComponent(typeof(IAMovementScript))]
[RequireComponent(typeof(RoubarBolaScript))]
[RequireComponent(typeof(BlockScript))]
public class OpponentController : Controller
    private GameManager gameManager;
        inputs = new Inputs();
        canMove = true;
        canSkill = true;
        changeTurn();
    }

    private void setup()
    {
        animatorController = GetComponent<Animator>();
        gameManager = FindObjectOfType<GameManager>();
    }

    private void Update()
    {
        /*
        inputs.steal = UnityEngine.Random.Range(0, 2);
        inputs.crossOver = UnityEngine.Random.Range(0, 2);
    public override void changeTurn()
            GetComponent<StepBackScript>().enabled = true;
            GetComponent<CrossOverScript>().enabled = true;
            GetComponent<BehindBackScript>().enabled = true;
            ForceBarController.shootAction -= block;
            BehindBackScript.action -= steal;
            animatorController.SetTrigger("AtkTurn");
            myTurn = false;
            disableBallCollider();
            StartCoroutine(atkTurn());    
            GetComponent<RoubarBolaScript>().enabled = true;
            GetComponent<IAMovementScript>().enabled = true;
            GetComponent<BlockScript>().enabled = true;
            ForceBarController.shootAction += block;
            BehindBackScript.action += steal;
            animatorController.SetTrigger("DefTurn");
            myTurn = true;
            enableBallCollider();
            StopCoroutine(atkTurn());  
        while (true)
        {
            yield return movement(Random.Range(0, 8));
        }
    }

    private IEnumerator movement(int choice)
    {
        switch (choice)
        {
            //W - Move
            case 0:
                rb.velocity = Vector2.up * speed;
                transform.rotation = rb.velocity.x <= 0 ? Quaternion.AngleAxis(0, Vector3.up) : Quaternion.AngleAxis(180, Vector3.up);
                yield return null;
                break;
            //A - Move
            case 1:
                rb.velocity = Vector2.left * speed;
                transform.rotation = rb.velocity.x <= 0 ? Quaternion.AngleAxis(0, Vector3.up) : Quaternion.AngleAxis(180, Vector3.up);
                yield return null;
                break;
            //S - Move
            case 2:
                rb.velocity = Vector2.down * speed;
                transform.rotation = rb.velocity.x <= 0 ? Quaternion.AngleAxis(0, Vector3.up) : Quaternion.AngleAxis(180, Vector3.up);
                yield return null;
                break;
            //D - Move
            case 3:
                rb.velocity = Vector2.right * speed;
                transform.rotation = rb.velocity.x <= 0 ? Quaternion.AngleAxis(0, Vector3.up) : Quaternion.AngleAxis(180, Vector3.up);
                yield return null;
                break;
            //J - StepBack
            case 4:
                inputs.stepBack = 1;
                yield return null;
                break;
            //K - BehindBack
            case 5:
                inputs.behindBack = 1;
                yield return null;
                break;
            //L - CrossOver
            case 6:
                inputs.crossOver = 1;
                yield return null;
                break;
            //Space - Shoot
            default:
                gameManager.shoot(Random.Range(0f, 1f), findThrowPoint(), target);
                yield return new WaitForSecondsRealtime(3);
                break;
        }
    }

    public virtual void OnDisable()
    {
        GetComponent<StepBackScript>().enabled = false;
        GetComponent<CrossOverScript>().enabled = false;
        GetComponent<BehindBackScript>().enabled = false;
        GetComponent<RoubarBolaScript>().enabled = false;
        GetComponent<IAMovementScript>().enabled = false;
        GetComponent<BlockScript>().enabled = false;
    private void block()
    {
        //do something
        if (GetComponent<Animation>() != null)
        {
            GetComponent<Animation>().Stop();
        }
        StartCoroutine(new WaitForSecondsRealtime(UnityEngine.Random.Range(0, 1)));
        inputs.block = 1;
    private void steal()
    {
        //do something
        if (GetComponent<Animation>() != null)
        {
            GetComponent<Animation>().Stop();
        }
        //StartCoroutine(new WaitForSecondsRealtime(UnityEngine.Random.Range(0, 1)));
        inputs.steal = UnityEngine.Random.Range(0, 2);
    }

    public void moveToPosition(Transform atkPosition, Transform defPosition)
    {
        if (myTurn)
        {
            rb.MovePosition(atkPosition.position);
        }
        else
        {
            rb.MovePosition(defPosition.position);
        }
    }

    private void disableBallCollider()
    {
        foreach (Transform t in GetComponentInChildren<Transform>())
        {
            if (t.CompareTag("BallCollider"))
            {
                t.GetComponent<BoxCollider2D>().enabled = false;
                return;
            }
        }
    }

    private void enableBallCollider()
    {
        foreach (Transform t in GetComponentInChildren<Transform>())
        {
            if (t.CompareTag("BallCollider"))
            {
                t.GetComponent<BoxCollider2D>().enabled = true;
                return;
            }
        }
    }

    private Transform findThrowPoint()
    {
        foreach (Transform t in GetComponentInChildren<Transform>())
        {
            if (t.CompareTag("ThrowPoint"))
            {
                return t;
            }
        }
        return null;
    }