using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class PanelMain : BasePanel { [SerializeField] float[] mIconPosX; [SerializeField] Image[] mImgLevelIcons; [SerializeField] Button mBtnLast; [SerializeField] Button mBtnNext; [SerializeField] Button mBtnStart; [SerializeField] Button mBtnLevel; private List mLevelIconList = new List(); [SerializeField] List mLevelList = new List(); private int mTotalLevel; private const int FOCUS_IDX = 2; private void Awake() { UIUtils.BindBtn(mBtnLast, OnClickLast); UIUtils.BindBtn(mBtnNext, OnClickNext); UIUtils.BindBtn(mBtnStart, OnClickStart); UIUtils.BindBtn(mBtnLevel, OnClickLevel); } public override void OnOpen() { base.OnOpen(); InitLevelIcons(); } private void InitLevelIcons() { mTotalLevel = GameConfig.Instance.LevelSort.Count; int tLevel = 0; for (int i = 0; i < mImgLevelIcons.Length; i++) { tLevel = GetLevelInCircle(-2 + i + PlayerData.Instance.CurrentLevel, mTotalLevel); mLevelList.Add(tLevel); mImgLevelIcons[i].sprite = ResourceManager.Instance.LoadRes(Const.Path.GetLevelIconBig(GameConfig.Instance.LevelSort[(tLevel - 1) % mTotalLevel])); mLevelIconList.Add(mImgLevelIcons[i]); } } private int GetLevelInCircle(int pLevelNum, int pTotalLevel) { int tFinalLevel = pLevelNum; if (tFinalLevel <= 0) { while (tFinalLevel <= 0) { tFinalLevel += pTotalLevel; } } else if(tFinalLevel > pTotalLevel) { tFinalLevel = (tFinalLevel - 1) % pTotalLevel + 1; } return tFinalLevel; } private void OnClickLast() { for (int i = 0; i < mLevelList.Count; i++) { mLevelList[i] = GetLevelInCircle(mLevelList[i] - 1, mTotalLevel); } Image tEndImg = mLevelIconList[mLevelIconList.Count - 1]; for (int i = mLevelIconList.Count - 2; i >= 0; i--) { int tNextIndex = (i + 1) % mLevelIconList.Count; mLevelIconList[tNextIndex] = mLevelIconList[i]; mLevelIconList[tNextIndex].GetComponent().anchoredPosition = new Vector2(mIconPosX[tNextIndex], 0); } mLevelIconList[0] = tEndImg; mLevelIconList[0].sprite = ResourceManager.Instance.LoadRes(Const.Path.GetLevelIconBig(GameConfig.Instance.LevelSort[mLevelList[0] - 1])); mLevelIconList[0].GetComponent().anchoredPosition = new Vector2(mIconPosX[0], 0); } private void OnClickNext() { for (int i = 0; i < mLevelList.Count; i++) { mLevelList[i] = GetLevelInCircle(mLevelList[i] + 1, mTotalLevel); } Image tStartImg = mLevelIconList[0]; for (int i = 1; i < mLevelIconList.Count; i++) { int tLastIndex = (i - 1) % mLevelIconList.Count; mLevelIconList[tLastIndex] = mLevelIconList[i]; mLevelIconList[tLastIndex].GetComponent().anchoredPosition = new Vector2(mIconPosX[tLastIndex], 0); } mLevelIconList[mLevelIconList.Count - 1] = tStartImg; mLevelIconList[mLevelIconList.Count - 1].sprite = ResourceManager.Instance.LoadRes(Const.Path.GetLevelIconBig(GameConfig.Instance.LevelSort[mLevelList[mLevelIconList.Count - 1] - 1])); mLevelIconList[mLevelIconList.Count - 1].GetComponent().anchoredPosition = new Vector2(mIconPosX[mLevelIconList.Count - 1], 0); } private void OnClickStart() { PlayerData.Instance.CurrentLevel = mLevelList[FOCUS_IDX]; GameManager.Instance.LoadGame(); } private void OnClickLevel() { PanelLevel tUILevel = UIManager.Instance.OpenUI(); tUILevel.Init(false); } }