/// <summary> /// Destroy the current campaign /// </summary> private void DestroyCampaign(xPromoCampaign campaignToDestroy) { if (videoPlayer.isPlaying) { videoPlayer.enabled = false; videoPlayer.Stop(); } if (campaignToDestroy != null) { DestroyImmediate(campaignToDestroy.gameObject); } }
/// <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(); }