- using MyCollections.Managers;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using UnityEngine;
- public class CombatState : IDisposable
- {
- private HashSet<NPCController> intervenients = new HashSet<NPCController>();
- private GameObject target;
- private NPCManager npcManager;
-
- public void AddIntervenient(NPCController controller)
- {
- if (intervenients.Contains(controller))
- return;
- intervenients.Add(controller);
- Debug.Log("Added Intervenient" + intervenients.Count);
- controller.OnNPCDied += RemoveIntervenient;
- }
- public void RemoveIntervenient(NPCController controller)
- {
- intervenients.Remove(controller);
- Debug.Log("Removed Intervenient" + intervenients.Count);
- controller.OnNPCDied -= RemoveIntervenient;
- HasEnded();
- }
- public void HasEnded()
- {
- if (intervenients.Count == 0 || target == null)
- {
- Debug.Log("Combat ENDEND");
-
- GameStateManager.Instance.RemoveCombatState(this);
- Dispose();
- }
- }
-
- public CombatState(GameObject target, NPCController intervenient)
- {
-
- this.target = target;
-
- AddIntervenient(intervenient);
-
- if (npcManager == null)
- {
- npcManager = intervenient.NPCManager;
- }
- }
- public void Dispose()
- {
- Debug.Log("Dispose Combat State: ");
- npcManager.CombatState = null;
- GC.SuppressFinalize(this);
- }
- }