SamsonGame/Assets/Scripts/Game/UI/RewardButtons/BaseRewardSection.cs

87 lines
2.2 KiB
C#

using System.Collections;
using UnityEngine;
namespace RND
{
public enum EnumRewardResult { SKIP, FAIL, NEED_REWARD }
public delegate void RewardResult(EnumRewardResult result);
public abstract class BaseRewardSection : MonoBehaviour
{
[SerializeField] private float _delayForShowingSkipButton = 3f;
[SerializeField] private SkipButton _skipButton = null;
protected abstract RewardButton RewardButton { get; }
private Coroutine _skipButtonShowDelay;
private RewardResult _resultCallback;
private void Awake()
{
_skipButton.SetHandler(OnClickSkipButton);
RewardButton.SetHandler(RewardButtonCallback);
}
public void SetCallback(RewardResult callback) => _resultCallback = callback;
public void SetPlacement(string placement) => RewardButton.SetPlacement(placement);
public void Begin()
{
#if APP_HAS_ADS
RewardButton.Begin();
ShowSkipButtonAfterTime();
#else
HideRewardButton();
ShowSkipButtonImmediately();
#endif
}
public void HideRewardButton()
{
RewardButton.gameObject.Hide();
}
public void Show()
{
gameObject.SetActive(true);
}
public void Hide()
{
gameObject.SetActive(false);
}
private void ShowSkipButtonImmediately()
{
_skipButton.ShowView();
}
private void ShowSkipButtonAfterTime()
{
if (_skipButtonShowDelay != null)
StopCoroutine(_skipButtonShowDelay);
_skipButtonShowDelay = StartCoroutine(ShowSkipButtonAfterTimeRoutine());
}
private IEnumerator ShowSkipButtonAfterTimeRoutine()
{
_skipButton.HideView();
yield return new WaitForSeconds(_delayForShowingSkipButton);
_skipButton.ShowView();
}
private void RewardButtonCallback(bool result)
{
_resultCallback?.Invoke(result ? EnumRewardResult.NEED_REWARD : EnumRewardResult.FAIL);
}
private void OnClickSkipButton()
{
_resultCallback?.Invoke(EnumRewardResult.SKIP);
}
}
}