using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class LevelCell : MonoBehaviour { public Action DelClick; [SerializeField] Button mBtnBg; [SerializeField] ImageNum mInmLevel; [SerializeField] Image mImgIconBg; [SerializeField] Image mImgIcon; [SerializeField] GameObject mGobDone; [SerializeField] GameObject mGobComplete; [SerializeField] Image mImgProgress; [SerializeField] GameObject mGobEmpty; [SerializeField] GameObject mGobComingSoon; private int mIndex; private int mLevelID; private void Awake() { UIUtils.BindBtn(mBtnBg, OnClick); } public void Init(int pIndex) { mIndex = pIndex; mLevelID = GameConfig.Instance.LevelSort[mIndex]; LevelData tLvData = GameConfig.Instance.GetLevelData(mLevelID); mInmLevel.SetNum(mIndex + 1); if (ColorUtility.TryParseHtmlString(tLvData.LevelColorCode, out Color tBgColor)) { mImgIconBg.color = tBgColor; } mImgIcon.sprite = ResourceManager.Instance.LoadRes(Const.Path.GetLevelIconSmall(mLevelID)); int tUnlockedEndingCount = PlayerData.Instance.EndingCountOfLevel(mLevelID); bool tIsAllEndingsDone = tUnlockedEndingCount == tLvData.Endings.Count; mGobDone.SetActive(tIsAllEndingsDone); mGobComplete.SetActive(tIsAllEndingsDone); mImgProgress.fillAmount = (float)tUnlockedEndingCount / tLvData.Endings.Count; mBtnBg.gameObject.SetActive(true); mGobEmpty.gameObject.SetActive(false); mGobComingSoon.gameObject.SetActive(false); } public void SetEmpty() { mBtnBg.gameObject.SetActive(false); mGobEmpty.gameObject.SetActive(true); mGobComingSoon.gameObject.SetActive(false); } public void SetComingSoon() { mBtnBg.gameObject.SetActive(false); mGobEmpty.gameObject.SetActive(false); mGobComingSoon.gameObject.SetActive(true); } private void OnClick() { DelClick?.Invoke(mIndex); } }