chicken_dy/Assets/Scripts/UI/CustomControl/EndingCell.cs

104 lines
2.9 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class EndingCell : MonoBehaviour
{
[SerializeField] Text mTxtEndingName;
[SerializeField] GameObject mGobCheck;
[SerializeField] GameObject mGobGood;
[SerializeField] Button mBtnTip;
[SerializeField] Button mBtnAdTip;
[SerializeField] GameObject mGobPlayingTip;
private int mLevelID;
private int mEndingID;
private EndingData mEdData;
private List<AudioClip> mTipSoundList;
private TimerUnit mTipPlayTimer;
private int mTipIndex;
private void Awake()
{
UIUtils.BindBtn(mBtnTip, OnClickTip);
UIUtils.BindBtn(mBtnAdTip, OnClickAdTip, AudioType.Click_Tip);
}
private void OnDisable()
{
if (mTipPlayTimer != null)
{
mTipPlayTimer.Destroy();
mTipPlayTimer = null;
}
}
public void Init(int pLevelID, int pEndingID)
{
mLevelID = pLevelID;
mEndingID = pEndingID;
mEdData = GameConfig.Instance.GetLevelData(mLevelID).Endings[pEndingID];
mTxtEndingName.text = mEdData.EndingName;
mGobCheck.SetActive(PlayerData.Instance.HasUnlockedEnding(mLevelID, mEndingID));
mGobGood.SetActive(mEdData.IsGoodEnding);
bool tHasWatchedAdTip = PlayerData.Instance.HasWatchedEndingAdTip(mLevelID, mEndingID);
mBtnTip.gameObject.SetActive(tHasWatchedAdTip);
mBtnAdTip.gameObject.SetActive(!tHasWatchedAdTip);
mGobPlayingTip.SetActive(false);
}
private void OnClickTip()
{
string[] tTemplateEndingStrs = mEdData.EndingCode.Split(';');
mTipSoundList = new List<AudioClip>();
for (int i = 0; i < tTemplateEndingStrs[0].Length; i++)
{
int tSoundIndex = tTemplateEndingStrs[0][i] == 'X' ? 0 : (int.Parse(tTemplateEndingStrs[0][i].ToString()) - 1);
mTipSoundList.Add(ResourceManager.Instance.LoadRes<AudioClip>(Const.Path.GetSound(mLevelID, tSoundIndex)));
}
if (mTipPlayTimer == null)
{
mTipPlayTimer = TimerManager.Instance.CreateTimerUnit();
}
mTipIndex = 0;
mTipPlayTimer.CancelTimer();
mTipPlayTimer.StartTimer(PlayOneTip, 0.3f);
mGobPlayingTip.SetActive(true);
}
private void PlayOneTip()
{
AudioManager.Instance.PlaySound(mTipSoundList[mTipIndex]);
mTipIndex++;
if (mTipIndex < mTipSoundList.Count)
{
mTipPlayTimer.StartTimer(PlayOneTip, 1f);
}
else
{
mGobPlayingTip.SetActive(false);
}
}
private void OnClickAdTip()
{
//UIManager.Instance.OpenUI<PanelNoAdsTip>();
//return;
PlayerData.Instance.AddEndingAdTip(mLevelID, mEndingID);
mBtnTip.gameObject.SetActive(true);
mBtnAdTip.gameObject.SetActive(false);
OnClickTip();
}
}