using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using DG.Tweening; public class PanelGame : BasePanel { public Action DelPlay; [SerializeField] LevelOpening mLvOpening; [SerializeField] Text mTxtTitle; [SerializeField] Button mBtnTip; [SerializeField] Button mBtnMoreGame; [SerializeField] Button mBtnShareGame; [SerializeField] Button mBtnLevel; [SerializeField] Button mBtnMenu; [SerializeField] ButtonEndings mBtnEndings; [SerializeField] ButtonSlot[] mBtnSlots; [SerializeField] GameObject[] mGobArrows; [SerializeField] ButtonSound[] mBtnSounds; [SerializeField] GameObject mGobChooseTip; [SerializeField] GameObject mGobTapTip; [SerializeField] GameObject mGobPlay; [SerializeField] Button mBtnPlay; [SerializeField] GameObject mGobPlayProgress; [SerializeField] Image mImgPlayProgress; [SerializeField] Animator mAtrAction; [SerializeField] GameObject mGobOpMask; private int mTotalSlot; private int mCurSlotIndex; private int[] mSoundOrder; private PanelGameAni mAni; private void Awake() { UIUtils.BindBtn(mBtnTip, OnClickEndings); UIUtils.BindBtn(mBtnMoreGame, OnClickMoreGame); UIUtils.BindBtn(mBtnShareGame, OnClickShareGame); UIUtils.BindBtn(mBtnLevel, OnClickLevel, AudioClipType.Click_Normal); UIUtils.BindBtn(mBtnMenu, OnClickMenu, AudioClipType.Click_Tip); UIUtils.BindBtn(mBtnPlay, OnClickPlay, AudioClipType.Click_Play); mBtnEndings.DelClick = OnClickShowEndingsDirectly; mAni = GetComponent(); #if H5_DY mBtnShareGame.gameObject.SetActive(false); #elif H5_WX mBtnShareGame.gameObject.SetActive(true); #endif } public void Init(bool pWithOpening = false) { if (pWithOpening) { mLvOpening.Enter(PlayerData.Instance.CurrentLevel, ShowStage); } else { mLvOpening.gameObject.SetActive(false); ShowStage(); } #if ANDROID_TW mBtnMoreGame.gameObject.SetActive(false); #else mBtnMoreGame.gameObject.SetActive(false); #endif } public void RiseSlot(int pIndex) { mBtnSlots[pIndex].RiseUp(); } private void ShowStage() { LevelData tLvData = GameConfig.Instance.GetLevelData(PlayerData.Instance.CurrentLevelID); mTxtTitle.text = PlayerData.Instance.CurrentLevel + tLvData.LevelName.Substring(tLvData.LevelName.IndexOf('.')); mBtnEndings.Init(PlayerData.Instance.CurrentLevelID, PlayerData.Instance.EndingCountOfLevel(PlayerData.Instance.CurrentLevelID), tLvData.Endings.Count); mTotalSlot = tLvData.SlotCount; mCurSlotIndex = 0; mSoundOrder = new int[mTotalSlot]; for (int i = 0; i < mSoundOrder.Length; i++) { mSoundOrder[i] = -1; } for (int i = 0; i < mBtnSlots.Length; i++) { mBtnSlots[i].gameObject.SetActive(i < mTotalSlot); mBtnSlots[i].Init(i); mBtnSlots[i].ShowCurrent(i == mCurSlotIndex); mBtnSlots[i].DelClick = OnClickSlot; } for (int i = 0; i < mGobArrows.Length; i++) { mGobArrows[i].SetActive(i < mTotalSlot - 1); } List tSoundOrderList = new List(); if (!string.IsNullOrEmpty(tLvData.SoundOrder)) { for (int i = 0; i < tLvData.SoundOrder.Length; i++) { tSoundOrderList.Add(int.Parse(tLvData.SoundOrder[i].ToString())); } } int tIndex = 0; for (int i = 0; i < mBtnSounds.Length; i++) { if (tSoundOrderList.Count == mBtnSounds.Length) { tIndex = tSoundOrderList[i] - 1; } else { tIndex = i; } mBtnSounds[i].Init(tIndex); mBtnSounds[i].SetSoundPic(ResourceManager.Instance.LoadRes(Const.Path.GetSoundPic(PlayerData.Instance.CurrentLevelID, tIndex))); mBtnSounds[i].DelClick = OnClickSound; } mGobChooseTip.SetActive(false); mGobTapTip.SetActive(false); mGobPlay.SetActive(false); mGobPlayProgress.SetActive(false); mAtrAction.gameObject.SetActive(false); mGobOpMask.SetActive(false); mAni.Init(); TimerManager.Instance.Schedule(() => mGobChooseTip.SetActive(true), 0.5f); } private void OnClickMoreGame() { //TKGSDKManager.Instance.LogEvent(Const.AdsEvent.ClickMoreGame, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString()); //TKGSDKManager.Instance.OpenMoreGame(); } private void OnClickShareGame() { Debug.Log("PanelGame - OnClickShareGame"); TKGSDKManager.Instance.ShareShareAppMessageByType(TKGSDKManager.ShareType.ShareAppOriginImg); } private void OnClickLevel() { //TKGSDKManager.Instance.LogEvent(Const.AdsEvent.ClickLevel, Const.AdsEvtID.Level, PlayerData.Instance.CurrentLevel.ToString()); PanelLevel tUILevel = UIManager.Instance.OpenUI(); tUILevel.Init(true); //TKGSDKManager.Instance.ShowInterstitialAd(TKGIVAdPositionName.gaming_select); } private void OnClickMenu() { UIManager.Instance.OpenUI(); } private void OnClickEndings() { if (!PlayerData.Instance.HasWatchedEndingAdTip(GameConfig.Instance.LevelSort[PlayerData.Instance.CurrentLevel-1], 0)) { TKGSDKManager.Instance.ShowRewardAd(TKGRVPositionName.RV_GetTips, (_isReward) => { if (_isReward) { Debug.Log("CURR LEVEL : " + PlayerData.Instance.CurrentLevel); PlayerData.Instance.AddEndingAdTip(GameConfig.Instance.LevelSort[PlayerData.Instance.CurrentLevel-1], 0); PanelEndings tUIEndings = UIManager.Instance.OpenUI(); tUIEndings.Init(PlayerData.Instance.CurrentLevelID); } }); } else { PanelEndings tUIEndings = UIManager.Instance.OpenUI(); tUIEndings.Init(PlayerData.Instance.CurrentLevelID); } } private void OnClickShowEndingsDirectly() { PanelEndings tUIEndings = UIManager.Instance.OpenUI(); tUIEndings.Init(PlayerData.Instance.CurrentLevelID); } private void OnClickPlay() { mGobTapTip.SetActive(false); mGobPlay.SetActive(false); mGobOpMask.SetActive(true); for (int i = 0; i < mBtnSlots.Length; i++) { mBtnSlots[i].ShowCurrent(false); } mAni.ReadyPlay(0.5f); TimerManager.Instance.Schedule(Action, 0.5f); } private void Action() { mAtrAction.gameObject.SetActive(true); mAtrAction.Play("Action"); AudioManager.Instance.PlaySound(AudioClipType.Click_Play); TimerManager.Instance.Schedule(PlayActionSound, 1f); } private void PlayActionSound() { AudioManager.Instance.PlaySound(AudioClipType.Action); TimerManager.Instance.Schedule(StartPlay, 1f); } private void StartPlay() { DelPlay?.Invoke(mSoundOrder); mGobPlayProgress.SetActive(true); mImgPlayProgress.fillAmount = 0; mImgPlayProgress.DOFillAmount(1, mSoundOrder.Length * 1.5f).SetEase(Ease.Linear); } private void OnClickSlot(int pIndex) { mCurSlotIndex = pIndex; for (int i = 0; i < mBtnSlots.Length; i++) { mBtnSlots[i].ShowCurrent(i == mCurSlotIndex); } } private void OnClickSound(int pIndex) { mSoundOrder[mCurSlotIndex] = pIndex; mBtnSlots[mCurSlotIndex].SetSoundPic(ResourceManager.Instance.LoadRes(Const.Path.GetSoundPic(PlayerData.Instance.CurrentLevelID, pIndex))); if (mCurSlotIndex < mTotalSlot - 1) { OnClickSlot(mCurSlotIndex + 1); } AudioManager.Instance.PlaySound(ResourceManager.Instance.LoadRes(Const.Path.GetSound(PlayerData.Instance.CurrentLevelID, pIndex))); CheckOrder(); } private void CheckOrder() { bool tAllSet = true; for (int i = 0; i < mSoundOrder.Length; i++) { if (mSoundOrder[i] < 0) { tAllSet = false; break; } } mGobChooseTip.SetActive(!tAllSet); mGobTapTip.SetActive(tAllSet); mGobPlay.SetActive(tAllSet); } }