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

140 lines
4.2 KiB
C#

using System;
using UnityEngine;
public sealed class AdManager : SingletonMonoBehaviour<AdManager> {
//-- ironSource --//
#if UNITY_IOS
private static readonly string IRONSOURCE_APP_KEY = "11bc8b5ad";
#else
private static readonly string IRONSOURCE_APP_KEY = "11bc928bd";
#endif
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;
void Awake(){
#if DEVELOPMENT_BUILD
IronSource.Agent.validateIntegration ();
IronSource.Agent.setAdaptersDebug(true);
#endif
IronSource.Agent.init (IRONSOURCE_APP_KEY);
}
void Start(){
LoadBannerAds();
ShowBannerAd();
}
void Update (){
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);
}
}
}
void OnApplicationPause(bool isPaused) {
IronSource.Agent.onApplicationPause(isPaused);
}
//-- Banners Ads --//
public void LoadBannerAds(){
IronSource.Agent.loadBanner(IronSourceBannerSize.SMART, IronSourceBannerPosition.BOTTOM);
}
public void ShowBannerAd(){
IronSource.Agent.displayBanner();
}
public void HideBanner(){
IronSource.Agent.hideBanner();
}
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;
}
public bool IsLoadedRewardVideo(){
#if DEVELOPMENT_BUILD || UNITY_EDITOR
return !UsayaStorageManager.LoadOrDefault(UsayaStorageFilename.Settings_Data, "DebugAlwaysVideoFailToLoad", false);
#endif
return IronSource.Agent.isRewardedVideoAvailable();
}
public void ShowRewardVideo(Action<bool> callback){
#if UNITY_EDITOR
callback(true);
#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
}
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;
}
}
}