LunarInfantry/Assets/Scripts/Enemy.cs
2026-01-11 04:22:09 -08:00

57 lines
1.6 KiB
C#

using UnityEngine;
public class Enemy : Entity
{
public int turnSpeed;
public float minimumAttackRange;
private PlayerEntity closestPlayer;
//no weapons yet for enemies so...
public float damage;
void Start()
{
turnSpeed = Random.Range(0, 100);
}
[ContextMenu("ForceTurn")]
public void StartTurn()
{
closestPlayer = FindClosestPlayer();
if (Vector3.Distance(transform.position, closestPlayer.transform.position) > minimumAttackRange)
{
EnemyMovement.instance.PathfindToTarget(closestPlayer.currentTile.neighbors[Random.Range(0, closestPlayer.currentTile.neighbors.Count)], this);
}
else
{
Attack(closestPlayer);
TurnHandler.instance.UpdateTurns();
}
}
protected override void FinishedMovement()
{
base.FinishedMovement();
TurnHandler.instance.UpdateTurns();
}
private PlayerEntity FindClosestPlayer()
{
PlayerEntity currentClosestPlayer = null;
foreach (PlayerEntity player in TurnHandler.instance.playerEntities)
{
if (!currentClosestPlayer || Vector3.Distance(player.transform.position, transform.position) < Vector3.Distance(currentClosestPlayer.transform.position, transform.position))
{
currentClosestPlayer = player;
}
}
return currentClosestPlayer;
}
protected override void OnKillEffects()
{
TurnHandler.instance.enemyEntities.Remove(this);
Destroy(gameObject);
}
public void Attack(PlayerEntity target)
{
target.TakeDamage(damage);
}
}