chicken_dy/Assets/Scripts/UI/PanelGame.cs

286 lines
8.6 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
public class PanelGame : BasePanel
{
public Action<int[]> 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<PanelGameAni>();
#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<int> tSoundOrderList = new List<int>();
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<Sprite>(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<PanelLevel>();
tUILevel.Init(true);
//TKGSDKManager.Instance.ShowInterstitialAd(TKGIVAdPositionName.gaming_select);
}
private void OnClickMenu()
{
UIManager.Instance.OpenUI<PanelSettings>();
}
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<PanelEndings>();
tUIEndings.Init(PlayerData.Instance.CurrentLevelID);
}
});
}
else
{
PanelEndings tUIEndings = UIManager.Instance.OpenUI<PanelEndings>();
tUIEndings.Init(PlayerData.Instance.CurrentLevelID);
}
}
private void OnClickShowEndingsDirectly()
{
PanelEndings tUIEndings = UIManager.Instance.OpenUI<PanelEndings>();
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<Sprite>(Const.Path.GetSoundPic(PlayerData.Instance.CurrentLevelID, pIndex)));
if (mCurSlotIndex < mTotalSlot - 1)
{
OnClickSlot(mCurSlotIndex + 1);
}
AudioManager.Instance.PlaySound(ResourceManager.Instance.LoadRes<AudioClip>(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);
}
}