using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace TON { public class LobbyUI : UIBase { [SerializeField] private TextMeshProUGUI characterName; [SerializeField] private TextMeshProUGUI characterLevel; [SerializeField] private TextMeshProUGUI characterHp; [SerializeField] private TextMeshProUGUI characterMp; [SerializeField] private TextMeshProUGUI characterAttck; [SerializeField] private TextMeshProUGUI characterDefence; [SerializeField] private TextMeshProUGUI characterCritical; public List stageList = new List { "STG001", "STG002", "STG003", "STG004" }; public List stagePages = new List(); public GameObject stagePagePrefab; public Transform stagePageGroup; public GameObject emptyHeartAlert; private void Start() { SetCharacterData(); // SetStageData(); } private void SetCharacterData() { PlayerData player = PlayerDataManager.Singleton.player; Image playerObj = GameObject.Find("TON.Player").GetComponent(); playerObj.sprite = AssetManager.Singleton.LoadPlayerIcon(player.type, FaceStatue.Idle, out Sprite playerImage) ? playerImage : null; characterName.text = player.name; characterHp.text = $"{player.hp}"; characterMp.text = $"{player.mp}"; characterLevel.text = $"Lv {player.level}"; characterAttck.text = $"{player.attackPower}"; characterDefence.text = $"{player.defensivePower}"; characterCritical.text = $"{player.critical}"; } /// /// 스테이지를 1개로 변경하여 해당 메소드 사용하지 않음 /// private void SetStageData() { if (stagePages.Count > 0) { foreach (var stagePage in stagePages) { Destroy(stagePage.gameObject); } stagePages.Clear(); } for (int i = 0; i < stageList.Count; i++) { string stageId = stageList[i]; GameObject stagePageObject = Instantiate(stagePagePrefab, stagePageGroup); LobbyUI_StagePage stagePage = stagePageObject.GetComponent(); stagePageObject.SetActive(true); // stagePage.Initalize(stageId, i); stagePages.Add(stagePage); } } public void OnClickChangeStageButton() { // 스테이지 입장 popupUI 비활성화 stagePages.ForEach(page => page.GetComponent().OnClickStageChangeButton()); } public void OnClickStageButton() { // 스테이지 입장 UI 활성화 GameObject currentSelectedGameObject = EventSystem.current.currentSelectedGameObject; LobbyUI_StagePage lobbyUI_StagePage = currentSelectedGameObject.GetComponentInParent(); // 강제로 스테이지 4맵을 사용하도록 적용 PlayerPrefs.SetString("StageId", "STG004"); lobbyUI_StagePage.OnClickStageButton(); } public void OnClickStagePlayButton() { // 가지고 있는 하트가 없다면 입장 불가 if (HeartDataManager.Singleton.GetCurrentHearts() < 1) { // 입장 불가 modal 출력 emptyHeartAlert.SetActive(true); // 입장 불가 modal 1초 후 숨김 Invoke(nameof(EnactiveAlert), 1f); return; } // 입장 시 하트 소모 HeartDataManager.Singleton.UseHeart(); OnClickChangeStageButton(); Main.Singleton.ChangeScene(SceneType.Stage); } private void EnactiveAlert() { emptyHeartAlert.SetActive(true); } public void OnClickSkillSettingButton() { UIManager.Show(UIList.SkillSettingUI); } public void OnClickShopButton() { // TODO: 상점 UI 추가 // UIManager.Show(UIList.ShopUI); } } }