You've already forked Darklings-FightingGame
mirror of
https://github.com/izzy2lost/Darklings-FightingGame.git
synced 2026-03-10 11:35:19 -07:00
418 lines
14 KiB
C#
418 lines
14 KiB
C#
using UnityEngine;
|
|
|
|
public class CpuController : BaseController
|
|
{
|
|
private Transform _otherPlayer;
|
|
private int _movementInputX;
|
|
private float _distance;
|
|
private float _arcanaTimer;
|
|
private float _attackTimer;
|
|
private float _movementTimer;
|
|
private bool _crouch;
|
|
private bool _jump;
|
|
private bool _reset;
|
|
|
|
public void SetOtherPlayer(Transform otherPlayer)
|
|
{
|
|
_otherPlayer = otherPlayer;
|
|
}
|
|
|
|
void FixedUpdate()
|
|
{
|
|
if (GameplayManager.Instance.HasGameStarted)
|
|
{
|
|
if (!TrainingSettings.CpuOff || !SceneSettings.IsTrainingMode)
|
|
{
|
|
NetworkInput.ONE_LIGHT_INPUT = false;
|
|
NetworkInput.ONE_MEDIUM_INPUT = false;
|
|
NetworkInput.ONE_HEAVY_INPUT = false;
|
|
NetworkInput.ONE_ARCANA_INPUT = false;
|
|
NetworkInput.ONE_GRAB_INPUT = false;
|
|
NetworkInput.ONE_SHADOW_INPUT = false;
|
|
NetworkInput.TWO_LIGHT_INPUT = false;
|
|
NetworkInput.TWO_MEDIUM_INPUT = false;
|
|
NetworkInput.TWO_HEAVY_INPUT = false;
|
|
NetworkInput.TWO_ARCANA_INPUT = false;
|
|
NetworkInput.TWO_GRAB_INPUT = false;
|
|
NetworkInput.TWO_SHADOW_INPUT = false;
|
|
_reset = false;
|
|
Movement();
|
|
bool attacked = true;
|
|
if (_distance <= 80)
|
|
Attack();
|
|
if (!attacked)
|
|
Specials();
|
|
|
|
}
|
|
else
|
|
{
|
|
if (!_reset)
|
|
{
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_UP_INPUT = false;
|
|
NetworkInput.ONE_DOWN_INPUT = false;
|
|
NetworkInput.ONE_RIGHT_INPUT = false;
|
|
NetworkInput.ONE_LEFT_INPUT = false;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_UP_INPUT = false;
|
|
NetworkInput.TWO_DOWN_INPUT = false;
|
|
NetworkInput.TWO_RIGHT_INPUT = false;
|
|
NetworkInput.TWO_LEFT_INPUT = false;
|
|
}
|
|
|
|
_reset = true;
|
|
InputDirection = Vector2Int.zero;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
InputDirection = Vector2Int.zero;
|
|
}
|
|
}
|
|
|
|
private void Movement()
|
|
{
|
|
_distance = Mathf.Abs(_otherPlayer.transform.position.x - transform.position.x);
|
|
_movementTimer -= Time.deltaTime;
|
|
_jump = false;
|
|
if (_movementTimer < 0)
|
|
{
|
|
int movementRandom;
|
|
if (_distance <= 80)
|
|
{
|
|
movementRandom = Random.Range(0, 6);
|
|
}
|
|
else
|
|
{
|
|
movementRandom = Random.Range(0, 9);
|
|
}
|
|
int jumpRandom = Random.Range(0, 12);
|
|
int crouchRandom = Random.Range(0, 12);
|
|
int standingRandom = Random.Range(0, 4);
|
|
int dashRandom = Random.Range(0, 8);
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_UP_INPUT = false;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_UP_INPUT = false;
|
|
}
|
|
switch (movementRandom)
|
|
{
|
|
case 0:
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_RIGHT_INPUT = false;
|
|
NetworkInput.ONE_LEFT_INPUT = false;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_RIGHT_INPUT = false;
|
|
NetworkInput.TWO_LEFT_INPUT = false;
|
|
}
|
|
_movementInputX = 0;
|
|
break;
|
|
case > 0 and <= 4:
|
|
_movementInputX = (int)(transform.localScale.x * -1);
|
|
if (_movementInputX == 1.0f)
|
|
{
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_RIGHT_INPUT = false;
|
|
NetworkInput.ONE_LEFT_INPUT = true;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_RIGHT_INPUT = false;
|
|
NetworkInput.TWO_LEFT_INPUT = true;
|
|
}
|
|
}
|
|
else if (_movementInputX == -1.0f)
|
|
{
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_LEFT_INPUT = false;
|
|
NetworkInput.ONE_RIGHT_INPUT = true;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_LEFT_INPUT = false;
|
|
NetworkInput.TWO_RIGHT_INPUT = true;
|
|
}
|
|
}
|
|
break;
|
|
case > 5:
|
|
_movementInputX = (int)(transform.localScale.x * 1);
|
|
if (_movementInputX == 1.0f)
|
|
{
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_RIGHT_INPUT = false;
|
|
NetworkInput.ONE_LEFT_INPUT = true;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_RIGHT_INPUT = false;
|
|
NetworkInput.TWO_LEFT_INPUT = true;
|
|
}
|
|
}
|
|
else if (_movementInputX == -1.0f)
|
|
{
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_LEFT_INPUT = false;
|
|
NetworkInput.ONE_RIGHT_INPUT = true;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_LEFT_INPUT = false;
|
|
NetworkInput.TWO_RIGHT_INPUT = true;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
if (jumpRandom == 2)
|
|
{
|
|
_jump = true;
|
|
_movementInputX = (int)(transform.localScale.x * 1.0f);
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_UP_INPUT = true;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_UP_INPUT = true;
|
|
}
|
|
}
|
|
if (crouchRandom == 2)
|
|
{
|
|
_crouch = true;
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_DOWN_INPUT = true;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_DOWN_INPUT = true;
|
|
}
|
|
}
|
|
if (standingRandom == 2)
|
|
{
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_DOWN_INPUT = false;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_DOWN_INPUT = false;
|
|
}
|
|
}
|
|
InputDirection = new Vector2Int(_movementInputX, 0);
|
|
_movementTimer = Random.Range(0.2f, 0.35f);
|
|
}
|
|
}
|
|
|
|
private void Attack()
|
|
{
|
|
if (IsControllerEnabled)
|
|
{
|
|
_attackTimer -= Time.deltaTime;
|
|
if (_attackTimer < 0)
|
|
{
|
|
int lowRandom = Random.Range(0, 2);
|
|
int attackRandom = Random.Range(0, 7);
|
|
if (attackRandom <= 2)
|
|
{
|
|
if (lowRandom == 0)
|
|
{
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_DOWN_INPUT = false;
|
|
NetworkInput.ONE_LIGHT_INPUT = true;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_DOWN_INPUT = false;
|
|
NetworkInput.TWO_LIGHT_INPUT = true;
|
|
}
|
|
}
|
|
else if (lowRandom == 1)
|
|
{
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_DOWN_INPUT = true;
|
|
NetworkInput.ONE_LIGHT_INPUT = true;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_DOWN_INPUT = true;
|
|
NetworkInput.TWO_LIGHT_INPUT = true;
|
|
}
|
|
}
|
|
}
|
|
else if (attackRandom <= 4 && attackRandom > 2)
|
|
{
|
|
if (lowRandom == 0)
|
|
{
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_DOWN_INPUT = false;
|
|
NetworkInput.ONE_MEDIUM_INPUT = true;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_DOWN_INPUT = false;
|
|
NetworkInput.TWO_MEDIUM_INPUT = true;
|
|
}
|
|
}
|
|
else if (lowRandom == 1)
|
|
{
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_DOWN_INPUT = false;
|
|
NetworkInput.ONE_MEDIUM_INPUT = true;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_DOWN_INPUT = true;
|
|
NetworkInput.TWO_MEDIUM_INPUT = true;
|
|
}
|
|
}
|
|
}
|
|
else if (attackRandom <= 6 && attackRandom > 4)
|
|
{
|
|
if (lowRandom == 0)
|
|
{
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_DOWN_INPUT = false;
|
|
NetworkInput.ONE_HEAVY_INPUT = true;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_DOWN_INPUT = false;
|
|
NetworkInput.TWO_HEAVY_INPUT = true;
|
|
}
|
|
}
|
|
else if (lowRandom == 1)
|
|
{
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_DOWN_INPUT = true;
|
|
NetworkInput.ONE_HEAVY_INPUT = true;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_DOWN_INPUT = true;
|
|
NetworkInput.TWO_HEAVY_INPUT = true;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_GRAB_INPUT = true;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_GRAB_INPUT = true;
|
|
}
|
|
}
|
|
_attackTimer = Random.Range(0.15f, 0.3f);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void Specials()
|
|
{
|
|
if (IsControllerEnabled)
|
|
{
|
|
_arcanaTimer -= Time.deltaTime;
|
|
if (_arcanaTimer < 0)
|
|
{
|
|
int arcanaRandom = Random.Range(0, 2);
|
|
int lowRandom = Random.Range(0, 2);
|
|
if (arcanaRandom == 0)
|
|
{
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_SHADOW_INPUT = true;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_SHADOW_INPUT = true;
|
|
}
|
|
}
|
|
else if (arcanaRandom == 1)
|
|
{
|
|
if (lowRandom == 0)
|
|
{
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_DOWN_INPUT = false;
|
|
NetworkInput.ONE_ARCANA_INPUT = true;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_DOWN_INPUT = false;
|
|
NetworkInput.TWO_ARCANA_INPUT = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (_player.IsPlayerOne)
|
|
{
|
|
NetworkInput.ONE_DOWN_INPUT = true;
|
|
NetworkInput.ONE_ARCANA_INPUT = true;
|
|
}
|
|
else
|
|
{
|
|
NetworkInput.TWO_DOWN_INPUT = true;
|
|
NetworkInput.TWO_ARCANA_INPUT = true;
|
|
}
|
|
|
|
}
|
|
_attackTimer = Random.Range(0.15f, 0.35f);
|
|
_arcanaTimer = Random.Range(0.4f, 0.85f);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public override bool Crouch()
|
|
{
|
|
return _crouch;
|
|
}
|
|
|
|
public override bool StandUp()
|
|
{
|
|
return !_crouch;
|
|
}
|
|
|
|
public override bool Jump()
|
|
{
|
|
return _jump;
|
|
}
|
|
|
|
public override void ActivateInput()
|
|
{
|
|
if (!TrainingSettings.CpuOff)
|
|
{
|
|
base.ActivateInput();
|
|
}
|
|
}
|
|
|
|
public override void DeactivateInput()
|
|
{
|
|
if (!TrainingSettings.CpuOff)
|
|
{
|
|
base.DeactivateInput();
|
|
}
|
|
}
|
|
} |