using System.Xml.Serialization;
using UnityEngine;
public class CanonPlacementManager : MonoBehaviour
{
public static CanonPlacementManager instance;
[Tooltip("How many canons are allowed per level")]
public int allowedCanonCount = 2; // Now editable via Inspector
private int currentCanonCount = 0;
[Header("Assign the blinking arrows manually")]
public GameObject[] blinkingArrows;
void Awake()
{
instance = this;
}
public void DecrementCanonCount()
{
currentCanonCount--;
}
//public bool CanPlaceCanon()
//{
// return currentCanonCount < allowedCanonCount && !gameManager.gameStarted;
//}
public int GetCanonCount()
{
return currentCanonCount;
}
public void CanonPlaced(GameObject canonInstance)
{
currentCanonCount++;
// Enable firing if CanonController is attached
CanonController controller = canonInstance.GetComponent<CanonController>();
if (controller != null)
{
controller.canFire = true;
}
else
{
Debug.LogWarning("CanonPlaced: Missing CanonController on canonInstance");
}
// Start enemy spawn only once
if (currentCanonCount == 2)
{
Debug.Log("Spawning Enemies");
//EnemySpawner.instance?.StartSpawningEnemies();
}
if (currentCanonCount >= allowedCanonCount)
{
foreach (GameObject arrow in blinkingArrows)
{
arrow.SetActive(false);
}
}
Debug.Log("Placed Cannon " + currentCanonCount);
}
public void ResetCanonCount()
{
currentCanonCount = 0;
foreach (GameObject arrow in blinkingArrows)
{
ArrowBlinker blinker = arrow.GetComponent<ArrowBlinker>();
if (blinker != null)
blinker.StopBlinking();
}
}
public void StartCanonFire()
{
CanonController[] canons = FindObjectsByType<CanonController>(FindObjectsInactive.Exclude, FindObjectsSortMode.None);
foreach (CanonController canon in canons)
{
canon.canFire = true;
}
}
public void StopCanonFire()
{
CanonController[] canons = FindObjectsByType<CanonController>(FindObjectsInactive.Exclude, FindObjectsSortMode.None);
foreach (CanonController canon in canons)
{
canon.canFire = false;
}
}
}