popcorn/popcorn/Assets/MyGame/Scripts/AdManager.cs

140 lines
4.2 KiB
C#
Raw Normal View History

2021-10-18 09:18:09 +00:00
using System;
using UnityEngine;
public sealed class AdManager : SingletonMonoBehaviour<AdManager> {
//-- ironSource --//
#if UNITY_IOS
2021-10-29 11:28:12 +00:00
private static readonly string IRONSOURCE_APP_KEY = "11bc8b5ad";
2021-10-18 09:18:09 +00:00
#else
2021-10-29 11:28:12 +00:00
private static readonly string IRONSOURCE_APP_KEY = "11bc928bd";
2021-10-18 09:18:09 +00:00
#endif
2021-11-12 05:27:38 +00:00
private Action<bool> _rewardAdCallback = null;
private readonly int ASYNC_FRAME_LIMIT = 60;
private int _async_frame_count = 0;
private bool _rewardAdOpen = false;
private bool _rewardAdClose = false;
private bool _rewardAdFinish = false;
private float _timeScale = 0.0f;
2021-11-12 05:49:40 +00:00
2021-10-18 09:18:09 +00:00
void Awake(){
#if DEVELOPMENT_BUILD
2021-10-29 11:28:12 +00:00
IronSource.Agent.validateIntegration ();
IronSource.Agent.setAdaptersDebug(true);
2021-10-18 09:18:09 +00:00
#endif
2021-10-29 11:28:12 +00:00
IronSource.Agent.init (IRONSOURCE_APP_KEY);
2021-10-18 09:18:09 +00:00
}
void Start(){
LoadBannerAds();
ShowBannerAd();
}
void Update (){
2021-11-12 05:27:38 +00:00
if(_rewardAdOpen){
_rewardAdOpen = false;
pauseGame();
}else if(_rewardAdClose){
if(_rewardAdFinish){
_rewardAdClose = false;
this.RewardAdCallbackClose(_rewardAdFinish);
}else if(ASYNC_FRAME_LIMIT > _async_frame_count){
_async_frame_count++;
}else{
_rewardAdClose = false;
this.RewardAdCallbackClose(_rewardAdFinish);
}
}
2021-10-18 09:18:09 +00:00
}
void OnApplicationPause(bool isPaused) {
2021-10-29 11:28:12 +00:00
IronSource.Agent.onApplicationPause(isPaused);
2021-10-18 09:18:09 +00:00
}
//-- Banners Ads --//
public void LoadBannerAds(){
2021-10-29 11:28:12 +00:00
IronSource.Agent.loadBanner(IronSourceBannerSize.SMART, IronSourceBannerPosition.BOTTOM);
2021-10-18 09:18:09 +00:00
}
public void ShowBannerAd(){
2021-10-29 11:28:12 +00:00
IronSource.Agent.displayBanner();
2021-10-18 09:18:09 +00:00
}
public void HideBanner(){
2021-10-29 11:28:12 +00:00
IronSource.Agent.hideBanner();
2021-10-18 09:18:09 +00:00
}
2021-11-12 05:27:38 +00:00
public void InitializeRewardedAds(){
IronSourceEvents.onRewardedVideoAdOpenedEvent += RewardedVideoAdOpenedEvent;
IronSourceEvents.onRewardedVideoAdClosedEvent += RewardedVideoAdClosedEvent;
IronSourceEvents.onRewardedVideoAvailabilityChangedEvent += RewardedVideoAvailabilityChangedEvent;
IronSourceEvents.onRewardedVideoAdStartedEvent += RewardedVideoAdStartedEvent;
IronSourceEvents.onRewardedVideoAdRewardedEvent += RewardedVideoAdRewardedEvent;
IronSourceEvents.onRewardedVideoAdShowFailedEvent += RewardedVideoAdShowFailedEvent;
}
private void RewardedVideoAdOpenedEvent(){
_rewardAdOpen = true;
}
private void RewardedVideoAdClosedEvent(){
_rewardAdClose = true;
}
private void RewardedVideoAvailabilityChangedEvent(bool available){
}
private void RewardedVideoAdStartedEvent(){
}
private void RewardedVideoAdRewardedEvent(IronSourcePlacement placement){
_rewardAdFinish = true;
}
private void RewardedVideoAdShowFailedEvent (IronSourceError error){
_rewardAdClose = true;
}
2021-10-18 09:18:09 +00:00
public bool IsLoadedRewardVideo(){
#if DEVELOPMENT_BUILD || UNITY_EDITOR
return !UsayaStorageManager.LoadOrDefault(UsayaStorageFilename.Settings_Data, "DebugAlwaysVideoFailToLoad", false);
#endif
2021-10-29 11:28:12 +00:00
return IronSource.Agent.isRewardedVideoAvailable();
2021-10-18 09:18:09 +00:00
}
public void ShowRewardVideo(Action<bool> callback){
2021-10-29 11:28:12 +00:00
#if UNITY_EDITOR
2021-10-18 09:18:09 +00:00
callback(true);
2021-10-29 11:28:12 +00:00
#else
_rewardAdCallback = callback;
if(_rewardAdCallback == null){
return;
}else if(IsLoadedRewardVideo()){
_rewardAdOpen = false;
_rewardAdFinish = false;
_rewardAdClose = false;
_async_frame_count = 0;
IronSource.Agent.showRewardedVideo();
}else{
_rewardAdCallback(false);
}
#endif
2021-10-18 09:18:09 +00:00
}
2021-11-12 05:27:38 +00:00
private void RewardAdCallbackClose(bool success){
resumeGame();
_rewardAdCallback(success);
}
private void pauseGame(){
SoundManager.Instance.PauseBGM();
SoundManager.Instance.StopSE();
if(Time.timeScale > 0.0f){
_timeScale = Time.timeScale;
// TimeManager.Instance.Stop();
}
}
private void resumeGame(){
SoundManager.Instance.ReplayBGM();
if(_timeScale > 0.0f){
Time.timeScale = _timeScale;
// TimeManager.Instance.ChangeTimeScale(_timeScale);
_timeScale = 0.0f;
}
}
2021-10-18 09:18:09 +00:00
}