using System.Collections; using System.Collections.Generic; using UnityEditor.PackageManager; using UnityEngine; using UnityEngine.Assertions; using UnityEngine.EventSystems; using UnityEngine.UI; namespace TON { public class SkillSettingUI : UIBase { public static SkillSettingUI Instance => UIManager.Singleton.GetUI(UIList.SkillSettingUI); public Transform skillSlotGroup; public SkillSettingUI_SkillSlot skillSlotPrefab; public List createSkillSlots = new List(); public ScrollRect scrollRect; public SkillInformationItem skillInfoPrefab; public List uiPrefabList = new List(); public List createSkillInfo = new List(); public Button settingButton; private int selectedSlotIndex = -1; private string selectedSkillId = null; private int playerLevel; public void Start() { playerLevel = PlayerDataManager.Singleton.player.level; SetSkillSlots(); SetSkillInfoItem(); } private void Update() { if (selectedSlotIndex != -1 && !string.IsNullOrWhiteSpace(selectedSkillId)) { settingButton.interactable = true; } else { settingButton.interactable = false; } } private void SetSkillSlots() { // 기존 UI 삭제 if (createSkillSlots.Count > 0) { foreach (var button in createSkillSlots) { Destroy(button.gameObject); } createSkillSlots.Clear(); } // 스킬 버튼 생성 List activatedSkills = SkillDataManager.Singleton.GetEquippedSkills(); int maxEquipSkillCount = SkillDataManager.Singleton.GetActiveSkillCount(); // 슬롯 번호에 맞게 스킬을 매핑 Dictionary skillMap = new Dictionary(); foreach (var skill in activatedSkills) { skillMap[skill.SkillData.slotNumber - 1] = skill; } for (int i = 0; i < 3; i++) { SkillSettingUI_SkillSlot newSkillSlot = Instantiate(skillSlotPrefab, skillSlotGroup); newSkillSlot.gameObject.SetActive(true); if (skillMap.TryGetValue(i, out SkillBase skill)) { // 해당 슬롯에 스킬이 있으면 초기화 newSkillSlot.Initalize(skill.SkillData.id, i); } else { if (i < maxEquipSkillCount) { // 스킬을 배치할 수 있는 슬롯이지만 스킬이 없으면 비활성 슬롯으로 표시 newSkillSlot.Initalize(null, i); } else { newSkillSlot.GetComponent