chicken_dy/Assets/Scripts/UI/PanelMain.cs

122 lines
4.0 KiB
C#

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<Image> mLevelIconList = new List<Image>();
[SerializeField] List<int> mLevelList = new List<int>();
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<Sprite>(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<RectTransform>().anchoredPosition = new Vector2(mIconPosX[tNextIndex], 0);
}
mLevelIconList[0] = tEndImg;
mLevelIconList[0].sprite = ResourceManager.Instance.LoadRes<Sprite>(Const.Path.GetLevelIconBig(GameConfig.Instance.LevelSort[mLevelList[0] - 1]));
mLevelIconList[0].GetComponent<RectTransform>().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<RectTransform>().anchoredPosition = new Vector2(mIconPosX[tLastIndex], 0);
}
mLevelIconList[mLevelIconList.Count - 1] = tStartImg;
mLevelIconList[mLevelIconList.Count - 1].sprite = ResourceManager.Instance.LoadRes<Sprite>(Const.Path.GetLevelIconBig(GameConfig.Instance.LevelSort[mLevelList[mLevelIconList.Count - 1] - 1]));
mLevelIconList[mLevelIconList.Count - 1].GetComponent<RectTransform>().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<PanelLevel>();
tUILevel.Init(false);
}
}