summaryrefslogtreecommitdiff
path: root/GameCode/PlayerAPI.cs
diff options
context:
space:
mode:
Diffstat (limited to 'GameCode/PlayerAPI.cs')
-rw-r--r--GameCode/PlayerAPI.cs172
1 files changed, 172 insertions, 0 deletions
diff --git a/GameCode/PlayerAPI.cs b/GameCode/PlayerAPI.cs
new file mode 100644
index 0000000..3edf9c5
--- /dev/null
+++ b/GameCode/PlayerAPI.cs
@@ -0,0 +1,172 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+public class PlayerAPI : MonoBehaviour
+{
+ public Player player;
+
+ public CharacterData data;
+
+ private GeneralInput input;
+
+ private bool movedThisFrame;
+
+ private bool attackedThisFrame;
+
+ private bool blockedThisFrame;
+
+ private void Awake()
+ {
+ player = GetComponent<Player>();
+ data = GetComponent<CharacterData>();
+ input = GetComponent<GeneralInput>();
+ }
+
+ public void Move(Vector2 direction)
+ {
+ direction = Vector2.ClampMagnitude(direction, 1f);
+ movedThisFrame = true;
+ data.input.direction = direction;
+ }
+
+ public void Jump()
+ {
+ data.jump.Jump();
+ }
+
+ public void Attack()
+ {
+ attackedThisFrame = true;
+ data.input.shootWasPressed = true;
+ data.input.shootIsPressed = true;
+ }
+
+ public void Block()
+ {
+ data.input.shieldWasPressed = true;
+ }
+
+ public void SetAimDirection(Vector2 direction)
+ {
+ data.input.aimDirection = direction;
+ }
+
+ public void AimForOtherPlayer()
+ {
+ Player otherPlayer = PlayerManager.instance.GetOtherPlayer(player);
+ if ((bool)otherPlayer)
+ {
+ data.input.aimDirection = otherPlayer.transform.position - base.transform.position;
+ }
+ }
+
+ public Vector2 TowardsOtherPlayer()
+ {
+ if (PlayerManager.instance.players.Count < 2)
+ {
+ return Vector2.zero;
+ }
+ return PlayerManager.instance.GetOtherPlayer(player).transform.position - base.transform.position;
+ }
+
+ public RaycastHit2D RayCastDirection(Vector2 direction, float distance)
+ {
+ return Physics2D.Raycast(base.transform.position, direction, distance);
+ }
+
+ public bool CheckGroundBelow(Vector2 pos, float range)
+ {
+ return data.ThereIsGroundBelow(pos, range);
+ }
+
+ public bool CanBlock()
+ {
+ return !data.block.IsOnCD();
+ }
+
+ public Player GetOtherPlayer()
+ {
+ return PlayerManager.instance.GetOtherPlayer(player);
+ }
+
+ public Vector3 OtherPlayerPosition()
+ {
+ Player otherPlayer = PlayerManager.instance.GetOtherPlayer(player);
+ if ((bool)otherPlayer)
+ {
+ return otherPlayer.transform.position;
+ }
+ return Vector3.zero;
+ }
+
+ public Vector3 PlayerPosition()
+ {
+ return base.transform.position;
+ }
+
+ public List<BulletWrapper> GetAllBullets()
+ {
+ List<BulletWrapper> list = new List<BulletWrapper>();
+ ProjectileHit[] array = Object.FindObjectsOfType<ProjectileHit>();
+ for (int i = 0; i < array.Length; i++)
+ {
+ BulletWrapper bulletWrapper = new BulletWrapper();
+ bulletWrapper.projectileHit = array[i].GetComponent<ProjectileHit>();
+ bulletWrapper.projectileMovement = array[i].GetComponent<MoveTransform>();
+ bulletWrapper.damage = bulletWrapper.projectileHit.damage;
+ bulletWrapper.velocity = bulletWrapper.projectileMovement.velocity;
+ list.Add(bulletWrapper);
+ }
+ return list;
+ }
+
+ public SpawnedAttack[] GetAllSpawnedAttacks()
+ {
+ return Object.FindObjectsOfType<SpawnedAttack>();
+ }
+
+ public bool CanShoot()
+ {
+ return player.data.weaponHandler.gun.IsReady();
+ }
+
+ public BulletWrapper GetMyBullet()
+ {
+ BulletWrapper bulletWrapper = new BulletWrapper();
+ GameObject objectToSpawn = player.data.weaponHandler.gun.projectiles[0].objectToSpawn;
+ MoveTransform component = objectToSpawn.GetComponent<MoveTransform>();
+ ProjectileHit component2 = objectToSpawn.GetComponent<ProjectileHit>();
+ bulletWrapper.projectileMovement = component;
+ bulletWrapper.projectileHit = component2;
+ bulletWrapper.damage = component2.damage;
+ bulletWrapper.velocity = player.data.aimDirection.normalized * component.localForce.magnitude + component.worldForce;
+ return bulletWrapper;
+ }
+
+ private void Update()
+ {
+ if (blockedThisFrame)
+ {
+ blockedThisFrame = false;
+ }
+ else
+ {
+ data.input.shieldWasPressed = false;
+ }
+ if (movedThisFrame)
+ {
+ movedThisFrame = false;
+ }
+ else
+ {
+ data.input.direction = Vector3.zero;
+ }
+ if (attackedThisFrame)
+ {
+ attackedThisFrame = false;
+ return;
+ }
+ data.input.shootWasPressed = false;
+ data.input.shootIsPressed = false;
+ }
+}