/// <summary> /// Has reached the max views number? /// </summary> private bool HasReachTotalMaxViews(xPromoCampaignData campaignData) { for (int i = 0; i < trackingData.campaigns.Length; i++) { if (string.Compare(trackingData.campaigns[i].campaignId, campaignData.campaignId, StringComparison.InvariantCulture) == 0) { return(trackingData.campaigns[i].views >= campaignData.maxViews); } } return(false); }
/// <summary> /// Returns true if all the required assets for an specific campaign are already downloaded /// NOTE: Here we are not checking if we have downloaded the latest version of the asset /// </summary> private bool AllRequiredAssetsAreDownloaded(xPromoCampaignData campaignItem, bool logWarnings = false) { // If was using an embedded prefab, everything is downloaded if (!string.IsNullOrEmpty(campaignItem.embeddedPrefab)) { return(true); } if (!string.IsNullOrEmpty(campaignItem.video)) { if (!xPromoDownloadManager.Instance.ExistsInStorage(campaignItem.video)) { if (logWarnings) { Log($"Asset {campaignItem.video} was not still downloaded."); } return(false); } } if (!string.IsNullOrEmpty(campaignItem.gameLogo)) { if (!xPromoDownloadManager.Instance.ExistsInStorage(campaignItem.gameLogo)) { if (logWarnings) { Log($"Asset {campaignItem.gameLogo} was not still downloaded."); } return(false); } } if (!string.IsNullOrEmpty(campaignItem.gameScreenshot)) { if (!xPromoDownloadManager.Instance.ExistsInStorage(campaignItem.gameScreenshot)) { if (logWarnings) { Log($"Asset {campaignItem.gameScreenshot} was not still downloaded."); } return(false); } } return(true); }
/// <summary> /// Show the specified campaign /// </summary> public void ShowCampaign(xPromoCampaignData campaignItem) { if (activeCampaign != null) { activeCampaign.Hide(); DestroyCampaign(activeCampaign); } if (AllRequiredAssetsAreDownloaded(campaignItem, true)) { this.campaignItem = campaignItem; CreateCurrentCampaign(campaignItem); } else { // About to stop showing promo, hook here to have the UI can react acordingly. OnHide?.Invoke(); Log($"Warning: Not all assets are yet downloaded for the new campaign: {campaignItem.campaignId}"); activeCampaign = null; } }
/// <summary> /// Create the campaign that is stored in campaignItem /// </summary> private void CreateCurrentCampaign(xPromoCampaignData campaignItem) { GameObject prefab = null; if (string.IsNullOrEmpty(campaignItem.embeddedPrefab)) { prefab = basicLayoutPrefab; } else { var idx = GetEmbeddedCampaignElementIdx(campaignItem.embeddedPrefab); if (idx != -1) { prefab = _embeddedCampaignsElements[idx].gameObject; } if (idx == -1 || prefab == null) { Log($"Cannot find the prefab {campaignItem.embeddedPrefab} in the embedded list."); return; } } // [Analytics] // Also here the UI can react to the promo being shown by moving out of the way. OnShow?.Invoke(); // Increment the number of views IncrementViewsOnCampaign(campaignItem.campaignId); var activeCampaignGO = GameObject.Instantiate(prefab, xPromoRoot.Instance.transform); activeCampaign = activeCampaignGO.GetComponent <xPromoCampaign>(); // Change the images and video only for the basic layout if (string.IsNullOrEmpty(campaignItem.embeddedPrefab)) { if (!string.IsNullOrEmpty(campaignItem.gameScreenshot)) { Texture2D tex = new Texture2D(ImageWidth, ImageHeight); tex.LoadImage(xPromoDownloadManager.Instance.GetData(campaignItem.gameScreenshot)); activeCampaign.gameScreenshot.texture = tex; activeCampaign.gameScreenshot.gameObject.SetActive(true); } else { activeCampaign.gameScreenshot.gameObject.SetActive(false); } if (!string.IsNullOrEmpty(campaignItem.gameLogo)) { Texture2D tex = new Texture2D(ImageWidth, ImageHeight); tex.LoadImage(xPromoDownloadManager.Instance.GetData(campaignItem.gameLogo)); activeCampaign.gameLogo.texture = tex; activeCampaign.gameLogo.gameObject.SetActive(true); } else { activeCampaign.gameLogo.gameObject.SetActive(false); } if (!string.IsNullOrEmpty(campaignItem.video)) { videoPlayer.enabled = true; videoPlayer.url = $"file://{Application.persistentDataPath}/{campaignItem.video}"; videoPlayer.Play(); activeCampaign.video.gameObject.SetActive(true); } else { activeCampaign.video.gameObject.SetActive(false); videoPlayer.Stop(); videoPlayer.enabled = false; } var isoCode = "";// [REMOVED_REF] LordUILocalization.Instance.GetCurrentLanguageIsoCode(); var buttonText = GetLocalizationText(isoCode, campaignItem.buttonText); if (buttonText != null) { activeCampaign.buttonText.text = buttonText; } } else { // Embedded campaign if (!string.IsNullOrEmpty(activeCampaign.videoClipName)) { videoPlayer.enabled = true; string videofilename = activeCampaign.videoClipName.Contains(".") ? activeCampaign.videoClipName : $"{activeCampaign.videoClipName}.mp4"; videoPlayer.url = Path.Combine(Application.streamingAssetsPath, videofilename); videoPlayer.Play(); activeCampaign.video.gameObject.SetActive(true); } else { videoPlayer.Stop(); videoPlayer.enabled = false; } } // Logger logger.LogTrackingData(trackingData); activeCampaign.Show(); }