91 lines
2.3 KiB
C#
91 lines
2.3 KiB
C#
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class uLevel : MonoBehaviour
|
|
{
|
|
public Text uLevelText;
|
|
public Slider uLevelSlider;
|
|
public Text uLProgress;
|
|
public Text uL_curr;
|
|
public Text uL_post;
|
|
|
|
public Button view_levelDetail;
|
|
public Button close_levelDetail;
|
|
|
|
[Header("uLevelPanel")]
|
|
public GameObject uLevelPanel;
|
|
|
|
public uLevel_skills uls;
|
|
|
|
[Header("so")]
|
|
public Player_SO pso;
|
|
|
|
private GameObject resolvedLevelPanelRoot;
|
|
|
|
private void Start()
|
|
{
|
|
if (pso == null)
|
|
pso = Resources.Load<Player_SO>("playerdata/playerData_uniqueData");
|
|
|
|
resolvedLevelPanelRoot = ResolveLevelPanelRoot();
|
|
if (resolvedLevelPanelRoot != null)
|
|
resolvedLevelPanelRoot.SetActive(false);
|
|
|
|
if (uls != null && pso != null)
|
|
uls.SetPlayerSo(pso);
|
|
|
|
if (view_levelDetail != null)
|
|
{
|
|
view_levelDetail.onClick.RemoveListener(OpenLevelDetailPanel);
|
|
view_levelDetail.onClick.AddListener(OpenLevelDetailPanel);
|
|
}
|
|
|
|
if (close_levelDetail != null)
|
|
{
|
|
close_levelDetail.onClick.RemoveListener(CloseLevelDetailPanel);
|
|
close_levelDetail.onClick.AddListener(CloseLevelDetailPanel);
|
|
}
|
|
}
|
|
|
|
private void OpenLevelDetailPanel()
|
|
{
|
|
GameObject panelRoot = ResolveLevelPanelRoot();
|
|
if (panelRoot == null)
|
|
return;
|
|
|
|
if (uls != null && pso != null)
|
|
uls.SetPlayerSo(pso);
|
|
|
|
panelRoot.SetActive(true);
|
|
}
|
|
|
|
private void CloseLevelDetailPanel()
|
|
{
|
|
GameObject panelRoot = ResolveLevelPanelRoot();
|
|
if (panelRoot != null)
|
|
panelRoot.SetActive(false);
|
|
}
|
|
|
|
private GameObject ResolveLevelPanelRoot()
|
|
{
|
|
if (uLevelPanel == null)
|
|
return null;
|
|
|
|
Transform current = uLevelPanel.transform;
|
|
GameObject highestInactiveAncestor = null;
|
|
|
|
while (current != null)
|
|
{
|
|
if (!current.gameObject.activeSelf)
|
|
{
|
|
highestInactiveAncestor = current.gameObject;
|
|
}
|
|
|
|
current = current.parent;
|
|
}
|
|
|
|
resolvedLevelPanelRoot = highestInactiveAncestor != null ? highestInactiveAncestor : uLevelPanel;
|
|
return resolvedLevelPanelRoot;
|
|
}
|
|
}
|