using System; using Azerion.BlueStack.Internal; namespace Azerion.BlueStack.API { //TODO: rename RewardedVideoAd with RewardedAd if there are other types of Rewarded Ads than just video. public class RewardedVideoAd { private IRewardedVideoAdClient _rewardedVideoAdClient; //TODO: rename RewardedVideoAd with Rewarded for events to make the naming consistent with other ad format public event EventHandler OnRewardedVideoAdLoaded; public event EventHandler OnRewardedVideoAdError; public event EventHandler OnRewardedVideoAdClicked; public event EventHandler OnRewardedVideoAdClosed; public event EventHandler OnRewardedVideoAdAppeared; public event EventHandler OnUserRewardEarned; public RewardedVideoAd(string placementId) : this(placementId, BlueStackAds.GetClientsFactory().CreatRewardedVideoAdClient()) { } internal RewardedVideoAd(string placementId, IRewardedVideoAdClient rewardedVideoAdClient) { _rewardedVideoAdClient = rewardedVideoAdClient; _rewardedVideoAdClient.Create(placementId); ConfigureEvents(); } private void ConfigureEvents() { _rewardedVideoAdClient.OnRewardedVideoLoaded += (sender, args) => { OnRewardedVideoAdLoaded?.Invoke(this, args); }; _rewardedVideoAdClient.OnRewardedVideoError += (sender, args) => { OnRewardedVideoAdError?.Invoke(this, args); }; _rewardedVideoAdClient.OnRewardedVideoClosed += (sender, args) => { OnRewardedVideoAdClosed?.Invoke(this, args); }; _rewardedVideoAdClient.OnRewardedVideoClicked += (sender, args) => { OnRewardedVideoAdClicked?.Invoke(this, args); }; _rewardedVideoAdClient.OnRewardedVideoAppeared += (sender, args) => { OnRewardedVideoAdAppeared?.Invoke(this, args); }; _rewardedVideoAdClient.OnUserRewardEarned += (sender, args) => { OnUserRewardEarned?.Invoke(this, args); }; } public void Load() { Preference preference = new Preference(); _rewardedVideoAdClient.Load(preference.getIPreferenceClient()); } public void Load(Preference preference) { _rewardedVideoAdClient.Load(preference.getIPreferenceClient()); } public void Show() { _rewardedVideoAdClient.Show(); } public void Destroy() { _rewardedVideoAdClient.Destroy(); } } }