100 lines
2.6 KiB
C#
100 lines
2.6 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using DG.Tweening;
|
|
|
|
public class PanelEndings : BasePanel
|
|
{
|
|
[SerializeField] CanvasGroup mCvsBg;
|
|
[SerializeField] RectTransform mRctBg;
|
|
|
|
[SerializeField] Button mBtnMask;
|
|
[SerializeField] GameObject mGobComplete;
|
|
[SerializeField] Transform mCtnEndings;
|
|
[SerializeField] GameObject mTplEndingCell;
|
|
|
|
private int mLevelID;
|
|
private LevelData mLvData;
|
|
private List<EndingCell> mEndingList = new List<EndingCell>();
|
|
private List<EndingCell> mAvailableCells = new List<EndingCell>();
|
|
|
|
private void Awake()
|
|
{
|
|
UIUtils.BindBtn(mBtnMask, OnClickMask);
|
|
}
|
|
|
|
public override void OnClose()
|
|
{
|
|
base.OnClose();
|
|
|
|
AudioManager.Instance.PlaySound(AudioClipType.UIClose);
|
|
}
|
|
|
|
public void Init(int pLevelID)
|
|
{
|
|
mLevelID = pLevelID;
|
|
mLvData = GameConfig.Instance.GetLevelData(pLevelID);
|
|
|
|
mRctBg.sizeDelta = new Vector2(mRctBg.sizeDelta.x, 150 + mLvData.Endings.Count * 60);
|
|
|
|
mGobComplete.SetActive(PlayerData.Instance.EndingCountOfLevel(mLevelID) == mLvData.Endings.Count);
|
|
|
|
RefreshEndingList();
|
|
|
|
mCvsBg.alpha = 0;
|
|
mRctBg.anchoredPosition = new Vector2(0, -160);
|
|
|
|
mCvsBg.DOFade(1, 0.3f);
|
|
mRctBg.DOAnchorPosY(100, 0.3f);
|
|
|
|
if (PlayerData.Instance.EndingAdTipCountOfLevel(mLevelID) < mLvData.Endings.Count)
|
|
{
|
|
//TKGSDKManager.Instance.LogRewardAdBtnShow(Const.AdsEvtValue.UnlockSound);
|
|
}
|
|
}
|
|
|
|
private void RefreshEndingList()
|
|
{
|
|
ClearCells();
|
|
|
|
for (int i = 0; i < mLvData.Endings.Count; i++)
|
|
{
|
|
EndingCell tCell = GetNewCell();
|
|
mEndingList.Add(tCell);
|
|
tCell.Init(mLevelID, i);
|
|
}
|
|
}
|
|
|
|
private EndingCell GetNewCell()
|
|
{
|
|
EndingCell tCell = null;
|
|
|
|
if (mAvailableCells.Count <= mEndingList.Count)
|
|
{
|
|
tCell = Instantiate(mTplEndingCell, mCtnEndings).GetComponent<EndingCell>();
|
|
tCell.transform.localScale = Vector3.one;
|
|
mAvailableCells.Add(tCell);
|
|
}
|
|
|
|
tCell = mAvailableCells[mEndingList.Count];
|
|
tCell.gameObject.SetActive(true);
|
|
|
|
return tCell;
|
|
}
|
|
|
|
private void ClearCells()
|
|
{
|
|
mEndingList.Clear();
|
|
for (int i = 0; i < mAvailableCells.Count; i++)
|
|
{
|
|
mAvailableCells[i].gameObject.SetActive(false);
|
|
}
|
|
}
|
|
|
|
private void OnClickMask()
|
|
{
|
|
mCvsBg.DOFade(0, 0.3f);
|
|
mRctBg.DOAnchorPosY(-160, 0.3f).onComplete = Close;
|
|
}
|
|
} |