public void Evalute(Goal lastCompletedGoal) { var goalsCompleted = true; for (int goal = 0; goal < Goals.Count; goal++) { if (Goals[goal].Completed) { continue; } goalsCompleted = false; break; } completed = goalsCompleted; if (!completed) { return; } active = false; if (OnStageCompleted == null) { return; } OnStageCompleted(this); Delegate[] completedDelegates = OnStageCompleted.GetInvocationList(); for (int i = 0; i < completedDelegates.Length; i++) { OnStageCompleted -= completedDelegates[i] as Action <StageS>; } if (OnStageActivated == null) { return; } Delegate[] activatedDelegates = OnStageActivated.GetInvocationList(); for (int i = 0; i < activatedDelegates.Length; i++) { OnStageActivated -= activatedDelegates[i] as Action <StageS>; } }
public void Activate() { active = true; OnStageActivated?.Invoke(this); // maybe find a way to not use ? }