using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PanelEndings : BasePanel { [SerializeField] Button mBtnMask; [SerializeField] RectTransform mRctBg; [SerializeField] GameObject mGobComplete; [SerializeField] Transform mCtnEndings; [SerializeField] GameObject mTplEndingCell; private int mLevelID; private LevelData mLvData; private List mEndingList = new List(); private List mAvailableCells = new List(); private void Awake() { UIUtils.BindBtn(mBtnMask, OnClickMask); } 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(); } 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(); 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() { Close(); } }