sea-battle/Assets/Scripts/Pirate/EnemyCommand.cs
2026-01-09 08:45:22 +03:00

60 lines
1.6 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyCommand : MonoBehaviour
{
[Header("Ñïèñîê âðàãîâ")]
public List<EnemyCombat> enemies = new();
[Header("Ññûëêà íà êîìàíäó ïèðàòîâ")]
public PirateCommand pirateTeam;
[Header("Òàéìèíãè")]
public Vector2 shootIntervalRange = new Vector2(10f, 15f);
private void Start()
{
StartCoroutine(ShootingRoutine());
}
private IEnumerator ShootingRoutine()
{
while (true)
{
float waitTime = Random.Range(shootIntervalRange.x, shootIntervalRange.y);
yield return new WaitForSeconds(waitTime);
AssignRandomEnemyToShoot();
}
}
private void AssignRandomEnemyToShoot()
{
if (enemies.Count == 0 || pirateTeam == null || pirateTeam.pirates.Count == 0) return;
// ôèëüòðóåì àêòèâíûõ âðàãîâ
List<EnemyCombat> freeEnemies = enemies.FindAll(e => e.IsActiveTarget());
if (freeEnemies.Count == 0) return;
EnemyCombat enemy = freeEnemies[Random.Range(0, freeEnemies.Count)];
// âûáèðàåì ñëó÷àéíîãî ïèðàòa èç êîìàíäû (èìèòàöèÿ ñòðåëüáû)
List<Pirate> activePirates = pirateTeam.pirates;
if (activePirates.Count == 0) return;
Pirate targetPirate = activePirates[Random.Range(0, activePirates.Count)];
// äàåì âðàãó öåëü
enemy.SetTarget(targetPirate.transform);
}
public void ClearAllTargets()
{
foreach (var enemy in enemies)
{
enemy.SetTarget(null);
}
}
}