IEnumerator CoReward(BoolDelegate onFinish, AdPlacementType placementType) { RewardResult rewardResult = new RewardResult(); string errorMsg = string.Empty; WaitForSecondsRealtime checkInterval = new WaitForSecondsRealtime(0.3f); List <CustomMediation.AD_NETWORK> adPriority = GetAdsNetworkPriority(placementType); for (int i = 0; i < adPriority.Count; i++) { bool checkAdNetworkDone = false; IAdsNetworkHelper adsHelper = GetAdsNetworkHelper(adPriority[i]); if (adsHelper == null) { continue; } adsHelper.Reward(placementType, (result) => { checkAdNetworkDone = true; rewardResult = result; }); while (!checkAdNetworkDone) { yield return(checkInterval); } if (rewardResult.type == RewardResult.Type.Finished) { currentAdsHelper = adsHelper; break; } if (rewardResult.type == RewardResult.Type.Canceled) { break; } //if a reward ads was shown and user skipped it, stop looking for more ads } /*for (int i = 0; i < adsNetworkHelpers.Count; i++) * { * bool checkAdNetworkDone = false; * adsNetworkHelpers[i].Reward(placementType, (result) => * { * checkAdNetworkDone = true; rewardResult = result; * }); * while (!checkAdNetworkDone) * { * yield return checkInterval; * } * if (rewardResult.type == RewardResult.Type.Finished) * { * currentAdsHelper = adsNetworkHelpers[i]; * break; * } * if (rewardResult.type == RewardResult.Type.Canceled) { break; } //if a reward ads was shown and user skipped it, stop looking for more ads * }*/ onFinish(rewardResult.type == RewardResult.Type.Finished); Manager.LoadingAnimation(false); if (rewardResult.type == RewardResult.Type.LoadFailed) { ShowError(rewardResult.message, placementType); } }
internal override RewardResult CalculateReward(Formula formulaToCheck) { var isFormulaReturningRewardResultVisitor = new IsFormulaReturningRewardResultVisitor(); isFormulaReturningRewardResultVisitor.Visit(formulaToCheck); if (!isFormulaReturningRewardResultVisitor.IsReturningRewardResult) { throw new Exception("expected formula which returns reward"); } using (var fileResults = WriteFilesAndExecuteMrmc(formulaToCheck, true)) { var resultEnumerator = File.ReadLines(fileResults.FilePath).GetEnumerator(); var rewardResultValue = 0.0; while (resultEnumerator.MoveNext()) { var result = resultEnumerator.Current; if (!String.IsNullOrEmpty(result)) { var parsed = MrmcRewardParser.Match(result); if (parsed.Success) { var state = Int32.Parse(parsed.Groups["state"].Value); var probabilityOfState = _initialStates[state]; double rewardOfState; if (parsed.Groups["reward"].Value == "inf") { rewardOfState = double.PositiveInfinity; } else { rewardOfState = Double.Parse(parsed.Groups["reward"].Value, CultureInfo.InvariantCulture); } rewardResultValue += probabilityOfState * rewardOfState; //TODO: Calculate reward _in_ initial state? } else { throw new Exception("Expected different output of MRMC"); } } } var rewardResult = new RewardResult(); rewardResult.Value = rewardResultValue; return(rewardResult); } }
IEnumerator CoRequestInterstitialRewardedNoShow(AdPlacement.Type placementType, RewardDelegate onAdLoaded = null, bool showLoading = true) { RewardResult rewardResult = new RewardResult(); string errorMsg = string.Empty; WaitForSecondsRealtime checkInterval = new WaitForSecondsRealtime(0.05f); var adPriority = GetAdsNetworkPriority(placementType); for (int i = 0; i < adPriority.Count; i++) { bool checkAdNetworkDone = false; IAdsNetworkHelper adsHelper = GetAdsNetworkHelper(adPriority[i]); if (adsHelper == null) { continue; } adsHelper.RequestInterstitialRewardedNoShow(placementType, (success) => { checkAdNetworkDone = true; rewardResult = success; }); while (!checkAdNetworkDone) //Wait for ads load to complete { yield return(checkInterval); } if (rewardResult.type == RewardResult.Type.Finished) { currentRewardInterAdsHelper = adsHelper; break; } if (rewardResult.type == RewardResult.Type.Canceled) { break; } //if a reward ads was shown and user skipped it, stop looking for more ads } if (showLoading) { Manager.LoadingAnimation(false); } onAdLoaded?.Invoke(rewardResult); }
public void ShowRewardBasedVideo(RewardDelegate onVideoCompleted = null, string rewardVideoAdId = AdMobConst.REWARD_ID) { if (onVideoCompleted != null) { this.adsVideoRewardedCallback = onVideoCompleted; } //this.reward = false; rewardResult = new RewardResult(RewardResult.Type.Canceled); if (this.rewardBasedVideo.IsLoaded()) { this.showingAds = true; this.rewardBasedVideo.Show(); return; } Manager.LoadingAnimation(true); this.rewardBasedVideo.OnAdLoaded += RewardBasedVideo_OnAdLoaded; this.rewardBasedVideo.OnAdFailedToLoad += RewardBasedVideo_OnAdFailedToLoad; RequestRewardBasedVideo(rewardVideoAdId); StartCoroutine(CoTimeoutLoadReward()); }