using UnityEngine; using UnityEngine.Events; using System; public class LevelManager : MonoBehaviour, ITask { public static LevelManager Instance; [Header("Nastavení levelu")] [Tooltip("Kolik itemů musí hráč trefit pro splnění levelu")] public int itemsToScore = 3; [Header("Event – vyvolá se po trefení všech itemů")] public UnityEvent OnAllItemsScored; private int scoredCount = 0; public string TaskID { get; set; } public TaskType TaskType { get; set; } public string TaskName { get; set; } public (double, double) TaskLocation { get; set; } public bool IsCompleted { get; private set; } = false; protected Action OnCompleted; public void RegisterItem() { scoredCount++; Debug.Log($"Trefeno: {scoredCount} / {itemsToScore}"); if (scoredCount >= itemsToScore) { OnAllItemsScored?.Invoke(); } } public void ResetCounter() { scoredCount = 0; } public int GetScoredCount() => scoredCount; public int GetTotalCount() => itemsToScore; public void Initialize(Action onCompleted) { OnCompleted = onCompleted; IsCompleted = false; ResetCounter(); } public void ExitTask(Action onExit) { onExit?.Invoke(this); } public void Complete() { if (IsCompleted) return; IsCompleted = true; OnCompleted?.Invoke(this); } }