// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: MIT-0

using System;
using UnityEngine;

namespace SampleTests.UI
{
    public sealed class WaitUnitilCondition : WaitWithTimeOut
    {
        private readonly Func<bool> _evaluateCondition;

        public override bool keepWaiting
        {
            get
            {
                bool currentValue = _evaluateCondition();
                return currentValue && base.keepWaiting;
            }
        }

        public WaitUnitilCondition(Func<bool> evaluateCondition, float timeoutSec = 10)
            : base(timeoutSec, () => Time.realtimeSinceStartup)
        {
            _evaluateCondition = evaluateCondition ?? throw new ArgumentNullException(nameof(evaluateCondition));
        }
    }
}