diff --git a/Assets/Scripts/Const/Const.Ads.cs b/Assets/Scripts/Const/Const.Ads.cs new file mode 100644 index 00000000..f9a23e2a --- /dev/null +++ b/Assets/Scripts/Const/Const.Ads.cs @@ -0,0 +1,45 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public partial class Const +{ + public static class AdsEvent + { + public static string StartGame = "start_game"; + public static string FinishGame = "finish_game"; + + public static string GameWin = "game_success"; + public static string GameLose = "game_fail"; + + public static string ClickMoreGame = "click_game_button"; + public static string ClickLevel = "click_stage_button"; + public static string ClickTip = "click_tip_button"; + + public static string EndRetry = "game_retry"; + public static string EndNext = "game_next"; + public static string EndSelect = "game_select_stage"; + + public static string UnlockTip = "unlock_tip"; + + public static string PanelMainShowed = "mainpage_show"; + public static string PanelLevelShowed = "stage_page_show"; + public static string PanelLevelBack = "stage_page_click_back"; + public static string PanelLevelHome = "stage_page_click_home"; + } + + public static class AdsEvtID + { + public static string Level = "game_level"; + } + + public static class AdsEvtValue + { + public static string UnlockSound = "sound_unlock"; + + public static string GamingSelect = "gaming_select"; + public static string EndRetry = "end_game_retry"; + public static string EndNext = "end_game_next"; + public static string EndSelect = "end_game_select"; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Const/Const.Ads.cs.meta b/Assets/Scripts/Const/Const.Ads.cs.meta new file mode 100644 index 00000000..8cc699fe --- /dev/null +++ b/Assets/Scripts/Const/Const.Ads.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bdd0dff9eb7634477b565d3b30529aee +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Game/GameLogic.cs b/Assets/Scripts/Game/GameLogic.cs index c61e7f6d..ec69d331 100644 --- a/Assets/Scripts/Game/GameLogic.cs +++ b/Assets/Scripts/Game/GameLogic.cs @@ -26,6 +26,7 @@ public class GameLogic : MonoBehaviour mUIGame.DelPlay = PlayFilm; ToukaStageCommonEvent.Instance.StageStartEvent(PlayerData.Instance.CurrentLevel); + ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.StartGame, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString()); } private void PlayFilm(int[] pSoundOrder) @@ -66,6 +67,7 @@ public class GameLogic : MonoBehaviour UIManager.Instance.CloseUI(); ToukaStageCommonEvent.Instance.StageTimeEvent(PlayerData.Instance.CurrentLevel); + ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.FinishGame, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString()); PanelResult tUIResult = UIManager.Instance.OpenUI(); bool tHasComplete = PlayerData.Instance.EndingCountOfLevel(PlayerData.Instance.CurrentLevelID) == tLvData.Endings.Count; @@ -81,12 +83,14 @@ public class GameLogic : MonoBehaviour AudioManager.Instance.PlaySound(AudioClipType.Win); ToukaStageCommonEvent.Instance.StageSuccessEvent(PlayerData.Instance.CurrentLevel); + ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.GameWin, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString()); } else { AudioManager.Instance.PlaySound(AudioClipType.Lose); ToukaStageCommonEvent.Instance.StageFailureEvent(PlayerData.Instance.CurrentLevel); + ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.GameLose, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString()); } tUIResult.Init(PlayerData.Instance.CurrentLevelID, tEdData.EndingName, tEdData.IsGoodEnding, PlayerData.Instance.IsNextLevelPassed(), tHasNew, tHasComplete); } @@ -96,6 +100,7 @@ public class GameLogic : MonoBehaviour tUIResult.Init(PlayerData.Instance.CurrentLevelID, "", false, PlayerData.Instance.IsNextLevelPassed(), false, true); ToukaStageCommonEvent.Instance.StageFailureEvent(PlayerData.Instance.CurrentLevel); + ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.GameLose, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString()); } tUIResult.DelAgain = PlayAgain; diff --git a/Assets/Scripts/Storage/PlayerData.cs b/Assets/Scripts/Storage/PlayerData.cs index c5dd7975..a9b70fdf 100644 --- a/Assets/Scripts/Storage/PlayerData.cs +++ b/Assets/Scripts/Storage/PlayerData.cs @@ -35,6 +35,15 @@ public class PlayerData : StorageBase } } + public bool HasShowedReview + { + get + { + return mHasShowedReview; + } + } + [SerializeField] private bool mHasShowedReview = false; + [SerializeField] private Dictionary> mEndingDic = new Dictionary>(); [SerializeField] private Dictionary> mEndingAdTipDic = new Dictionary>(); @@ -132,8 +141,23 @@ public class PlayerData : StorageBase } } + public int EndingAdTipCountOfLevel(int pLevelID) + { + if (mEndingAdTipDic.ContainsKey(pLevelID)) + { + return mEndingAdTipDic[pLevelID].Count; + } + + return 0; + } + public bool HasWatchedEndingAdTip(int pLevelID, int pEndingID) { return mEndingAdTipDic.ContainsKey(pLevelID) && mEndingAdTipDic[pLevelID].Contains(pEndingID); } + + public void MarkReviewShowed() + { + mHasShowedReview = true; + } } \ No newline at end of file diff --git a/Assets/Scripts/UI/CustomControl/ButtonEndings.cs b/Assets/Scripts/UI/CustomControl/ButtonEndings.cs index 72f2425c..e5fc5c49 100644 --- a/Assets/Scripts/UI/CustomControl/ButtonEndings.cs +++ b/Assets/Scripts/UI/CustomControl/ButtonEndings.cs @@ -89,6 +89,8 @@ public class ButtonEndings : MonoBehaviour private void OnClick() { + ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.ClickTip, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString()); + ShowTip(false); DelClick?.Invoke(); } diff --git a/Assets/Scripts/UI/CustomControl/EndingCell.cs b/Assets/Scripts/UI/CustomControl/EndingCell.cs index fdd5e6cc..f2940412 100644 --- a/Assets/Scripts/UI/CustomControl/EndingCell.cs +++ b/Assets/Scripts/UI/CustomControl/EndingCell.cs @@ -93,7 +93,7 @@ public class EndingCell : MonoBehaviour private void OnClickAdTip() { - ToukaSDKManager.Instance.PlayRewardAd("WatchTip", WatchAdSucceed, () => + ToukaSDKManager.Instance.PlayRewardAd(Const.AdsEvtValue.UnlockSound, WatchAdSucceed, () => { UIManager.Instance.OpenUI(); }); @@ -105,5 +105,7 @@ public class EndingCell : MonoBehaviour mBtnTip.gameObject.SetActive(true); mBtnAdTip.gameObject.SetActive(false); OnClickTip(); + + ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.UnlockTip, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString()); } } \ No newline at end of file diff --git a/Assets/Scripts/UI/PanelEndings.cs b/Assets/Scripts/UI/PanelEndings.cs index 6464f13f..f5a0f486 100644 --- a/Assets/Scripts/UI/PanelEndings.cs +++ b/Assets/Scripts/UI/PanelEndings.cs @@ -47,6 +47,11 @@ public class PanelEndings : BasePanel mCvsBg.DOFade(1, 0.3f); mRctBg.DOAnchorPosY(100, 0.3f); + + if (PlayerData.Instance.EndingAdTipCountOfLevel(mLevelID) < mLvData.Endings.Count) + { + ToukaSDKManager.Instance.LogEventByUmengAdShow(Const.AdsEvtValue.UnlockSound); + } } private void RefreshEndingList() diff --git a/Assets/Scripts/UI/PanelGame.cs b/Assets/Scripts/UI/PanelGame.cs index 2bdfcedc..940d579e 100644 --- a/Assets/Scripts/UI/PanelGame.cs +++ b/Assets/Scripts/UI/PanelGame.cs @@ -117,15 +117,19 @@ public class PanelGame : BasePanel private void OnClickMoreGame() { + ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.ClickMoreGame, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString()); + ToukaUtils.OpenMoreGames(); } private void OnClickLevel() { + ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.ClickLevel, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString()); + PanelLevel tUILevel = UIManager.Instance.OpenUI(); tUILevel.Init(true); - ToukaSDKManager.Instance.PlayInterstitialAd("GameOpenLevel"); + ToukaSDKManager.Instance.PlayInterstitialAd(Const.AdsEvtValue.GamingSelect); } private void OnClickMenu() diff --git a/Assets/Scripts/UI/PanelLevel.cs b/Assets/Scripts/UI/PanelLevel.cs index 0f50ad92..6ebd6718 100644 --- a/Assets/Scripts/UI/PanelLevel.cs +++ b/Assets/Scripts/UI/PanelLevel.cs @@ -36,6 +36,8 @@ public class PanelLevel : BasePanel mRctScream.gameObject.SetActive(false); mGobOpMask.SetActive(false); + + ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.PanelLevelShowed); } public override void OnClose() @@ -43,6 +45,7 @@ public class PanelLevel : BasePanel base.OnClose(); AudioManager.Instance.PlaySound(AudioClipType.UIClose); + ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.PanelLevelBack); } public void Init(bool pOpenInLevel) @@ -77,6 +80,8 @@ public class PanelLevel : BasePanel private void OnClickBackToMain() { + ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.PanelLevelHome); + GameManager.Instance.LoadMain(); } } \ No newline at end of file diff --git a/Assets/Scripts/UI/PanelMain.cs b/Assets/Scripts/UI/PanelMain.cs index 40e12cda..66f6a414 100644 --- a/Assets/Scripts/UI/PanelMain.cs +++ b/Assets/Scripts/UI/PanelMain.cs @@ -95,6 +95,8 @@ public class PanelMain : BasePanel { ShowMainPart(); } + + ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.PanelMainShowed); } public override void OnClose() diff --git a/Assets/Scripts/UI/PanelResult.cs b/Assets/Scripts/UI/PanelResult.cs index 2070f776..f3e2a79e 100644 --- a/Assets/Scripts/UI/PanelResult.cs +++ b/Assets/Scripts/UI/PanelResult.cs @@ -28,6 +28,9 @@ public class PanelResult : BasePanel [SerializeField] ButtonEndings mBtnEndings; + private bool mReviewShowed = false; + private const int REVIEW_LEVEL = 1; + private void Awake() { UIUtils.BindBtn(mBtnAgain1, OnClickAgain, AudioClipType.Click_Normal); @@ -76,26 +79,53 @@ public class PanelResult : BasePanel { mBtnEndings.ShowTip(!pIsWin && !pHasComplete); } + + if (!PlayerData.Instance.HasShowedReview && PlayerData.Instance.CurrentLevel == REVIEW_LEVEL) + { + ToukaUtils.OpenSystemReviewPop(); + mReviewShowed = true; + } + else + { + mReviewShowed = false; + } } private void OnClickAgain() { + ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.EndRetry, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString()); + DelAgain?.Invoke(); + + if (!mReviewShowed) + { + ToukaSDKManager.Instance.PlayInterstitialAd(Const.AdsEvtValue.EndRetry); + } } private void OnClickNext() { + ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.EndNext, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString()); + GameManager.Instance.NextLevel(); - ToukaSDKManager.Instance.PlayInterstitialAd("NextLevel"); + if (!mReviewShowed) + { + ToukaSDKManager.Instance.PlayInterstitialAd(Const.AdsEvtValue.EndNext); + } } private void OnClickChoose() { + ToukaSDKManager.Instance.LogEventByUmeng(Const.AdsEvent.EndSelect, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString()); + PanelLevel tUILevel = UIManager.Instance.OpenUI(); tUILevel.Init(true); - ToukaSDKManager.Instance.PlayInterstitialAd("EndOpenLevel"); + if (!mReviewShowed) + { + ToukaSDKManager.Instance.PlayInterstitialAd(Const.AdsEvtValue.EndSelect); + } } private void OnClickEndings()