using UnityEngine; using UnityEngine.Localization; using UOP1.StateMachine; using UOP1.StateMachine.ScriptableObjects; [CreateAssetMenu(fileName = "IsANewLineDisplayed", menuName = "State Machines/Conditions/Is A New Line Displayed")] public class IsANewLineDisplayedSO : StateConditionSO { [SerializeField] private DialogueLineChannelSO _onLineDisplayed = default; protected override Condition CreateCondition() => new IsANewLineDisplayedCondition(_onLineDisplayed); } public class IsANewLineDisplayedCondition : Condition { private DialogueLineChannelSO _sayLineEvent; private bool _isAnewLineDisplayed = false; public IsANewLineDisplayedCondition(DialogueLineChannelSO sayLineEvent) { _sayLineEvent = sayLineEvent; } protected override bool Statement() { return _isAnewLineDisplayed; } public override void OnStateEnter() { if (_sayLineEvent != null) { _sayLineEvent.OnEventRaised += OnLineDisplayed; } } public override void OnStateExit() { if (_sayLineEvent != null) { _sayLineEvent.OnEventRaised -= OnLineDisplayed; } _isAnewLineDisplayed = false; } private void OnLineDisplayed(LocalizedString line, ActorSO actor) { _isAnewLineDisplayed = true; } }