mirror of
http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite.git
synced 2025-11-19 23:37:13 +08:00
Co-authored-by: m0_75251201 <m0_75251201@noreply.gitcode.com> Reviewed-on: http://47.107.252.169:3000/Roguelite-Game-Developing-Team/Gen_Hack-and-Slash-Roguelite/pulls/60
79 lines
2.4 KiB
C#
79 lines
2.4 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Managers;
|
|
using UnityEngine;
|
|
|
|
namespace UI
|
|
{
|
|
public class SkillTreeUI : FullScreenUI
|
|
{
|
|
public SkillTreeNodeInformationUI skillTreeNodeInformationUI;
|
|
public SkillTreePageUI skillTreePageUIPrefab;
|
|
public Transform skillTreePageUIParent; // 用于承载 SkillTreePageUI 实例的 Transform
|
|
|
|
public List<SkillTreePageUI> skillTreePages = new();
|
|
|
|
private int _index;
|
|
|
|
public int Index
|
|
{
|
|
get => _index;
|
|
set
|
|
{
|
|
_index = value;
|
|
if (skillTreePages.Count == 0)
|
|
return;
|
|
while (_index < 0) _index += skillTreePages.Count;
|
|
|
|
while (_index >= skillTreePageUIParent.childCount) _index -= skillTreePageUIParent.childCount;
|
|
}
|
|
}
|
|
|
|
public SkillTreePageUI FocusedSkillTreePage => skillTreePages.Any() ? skillTreePages[Index] : null;
|
|
|
|
private void Start()
|
|
{
|
|
var pageList = SkillTreeManager.Instance.GetAllTag();
|
|
if (pageList == null)
|
|
return;
|
|
foreach (var page in pageList)
|
|
{
|
|
var pageUI = Instantiate(skillTreePageUIPrefab, skillTreePageUIParent);
|
|
pageUI.skillTreeUI = this;
|
|
pageUI.GenerateAndLayoutAllSkillTrees(page);
|
|
skillTreePages.Add(pageUI);
|
|
pageUI.gameObject.SetActive(false);
|
|
}
|
|
|
|
FocusedSkillTreePage?.gameObject.SetActive(true);
|
|
}
|
|
|
|
public override void TickUI()
|
|
{
|
|
if (skillTreeNodeInformationUI.gameObject.activeInHierarchy && Input.GetKeyDown(KeyCode.Escape))
|
|
skillTreeNodeInformationUI.OnHide();
|
|
else
|
|
base.TickUI();
|
|
}
|
|
|
|
public void OnLeft()
|
|
{
|
|
FocusedSkillTreePage.gameObject.SetActive(false);
|
|
Index--;
|
|
FocusedSkillTreePage.gameObject.SetActive(true);
|
|
}
|
|
|
|
public void OnRight()
|
|
{
|
|
FocusedSkillTreePage.gameObject.SetActive(false);
|
|
Index++;
|
|
FocusedSkillTreePage.gameObject.SetActive(true);
|
|
}
|
|
|
|
public void OnShowNodeInformation(SkillTreeNodeUI skillTreeNodeUI)
|
|
{
|
|
skillTreeNodeInformationUI.Init(skillTreeNodeUI);
|
|
skillTreeNodeInformationUI.gameObject.SetActive(true);
|
|
}
|
|
}
|
|
} |