You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
3.6 KiB
C#
111 lines
3.6 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using Game.Battle;
|
|
|
|
namespace Game
|
|
{
|
|
public class PageBlessChoose : UIPageBase<ViewBlessChoose>
|
|
{
|
|
private List<string> _blessList;
|
|
private int _choiceNow = 0;
|
|
private int _choiceMax = 0;
|
|
private bool _isChoiceOpen = true;
|
|
public PageBlessChoose()
|
|
{
|
|
}
|
|
protected override void OnCreate()
|
|
{
|
|
CreateUI(true);
|
|
}
|
|
protected override void OnDestroy()
|
|
{
|
|
}
|
|
protected override void OnOpen(params object[] values)
|
|
{
|
|
UIManager.Instance.Open(EuiPage.BlessList, true);
|
|
Util.SetControl(false);
|
|
|
|
if (values.Length == 0)
|
|
{
|
|
Util.Print("PageBlessChoose 未传入目标元素");
|
|
UIManager.Instance.Close();
|
|
return;
|
|
}
|
|
RefreshBless();
|
|
}
|
|
protected override void OnClose()
|
|
{
|
|
Util.SetControl(true);
|
|
}
|
|
private void RefreshBless()
|
|
{
|
|
GameRandom.Shuffle(_blessList);
|
|
var blessNum = Mathf.Min(3, _blessList.Count);
|
|
var uiList = View.m_blessList;
|
|
uiList.RemoveChildrenToPool();
|
|
for (int i = 0; i < blessNum; i++)
|
|
{
|
|
var item = uiList.AddItemFromPool() as ViewBlessItem;
|
|
var cfg = Util.GetBlessConfig(_blessList[i]);
|
|
item.m_BlessName.text = cfg.Bless.Name;
|
|
item.m_BlessDesc.text = cfg.Bless.Describe;
|
|
item.m_BlessIcon.texture = Texture(cfg.Bless.Icon);
|
|
}
|
|
_choiceNow = 0;
|
|
_choiceMax = blessNum;
|
|
RefreshChoiceSelecet();
|
|
}
|
|
private void RefreshChoiceSelecet()
|
|
{
|
|
var choiceList = View.m_blessList.GetChildren();
|
|
for (int i = 0; i < choiceList.Length; i++)
|
|
{
|
|
var choice = choiceList[i] as ViewBlessItem;
|
|
choice.m_c1.selectedIndex = i == _choiceNow ? 1 : 0;
|
|
}
|
|
}
|
|
protected override void OnInput(PPlayerInput context)
|
|
{
|
|
if (context.Action == EKeyActionType.Press)
|
|
{
|
|
if (context.Key == EFunctionKey.Up || context.Key == EFunctionKey.Down)
|
|
{
|
|
if (!_isChoiceOpen)
|
|
{
|
|
return;
|
|
}
|
|
if (_blessList.Count == 0)
|
|
{
|
|
return;
|
|
}
|
|
var newIndex = _choiceNow;
|
|
if (context.Key == EFunctionKey.Up)
|
|
{
|
|
newIndex--;
|
|
}
|
|
else
|
|
{
|
|
newIndex++;
|
|
}
|
|
_choiceNow = (newIndex + _choiceMax) % _choiceMax;
|
|
RefreshChoiceSelecet();
|
|
}
|
|
if (context.Key == EFunctionKey.Jump)
|
|
{
|
|
if (_blessList.Count > 0)
|
|
{
|
|
var chosenBless = _blessList[_choiceNow];
|
|
var master = Util.GetMaster();
|
|
Util.AddBless(master, chosenBless);
|
|
}
|
|
UIManager.Instance.Close();
|
|
|
|
}
|
|
if (context.Key == EFunctionKey.Refresh)
|
|
{
|
|
RefreshBless();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |