using System; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace Beyond { public class SkillsMenuController : MonoBehaviour { [SerializeField] private bEquipArea spellsArea; public bItemWindow itemPicker; public SkillSlot skillSlotPrefab; private List skillSlots = new List(); public RectTransform skillsPickerRect, skillsDescriptionRect; private SkillSlot selectedSlot; [SerializeField] private Image skillImage, skillBackgroundQuanta, levelImage; [SerializeField] private TMP_Text skillDescription, skillTitle; [SerializeField] private Sprite noSkillImage; [SerializeField] private List levelImages; public void RefreshSpellsWindow() { LoadSkills(); if (skillSlots.Count > 0) { SelectSlot(skillSlots[0]); } } private void LoadSkills() { //could optimize here while (skillSlots.Count > 0) { Destroy(skillSlots[0].gameObject); skillSlots.RemoveAt(0); } List unlockedSkills = SkillsManager.instance.GetAllUnlockedSkills(); if (unlockedSkills.Count <= 0) { DisableDescriptionObjects(); return; } else { EnableDescriptionObjects(); } unlockedSkills.ForEach(skill => { SkillSlot clone = Instantiate(skillSlotPrefab, skillsPickerRect); clone.title.text = skill.skillInfo.descriptioryName;// + " lvl. " + skill.currentLevel; clone.description = skill.skillInfo.description; clone.image.sprite = Resources.Load(skill.skillInfo.imagePath); clone.quantaImage.sprite = Resources.Load(skill.skillInfo.quantaImagePath); clone.quantaBackgroundImage = Resources.Load(skill.skillInfo.quantaBackgroundImagePath); clone.levelImage.sprite = levelImages[skill.currentLevel - 1]; clone.skillType = skill.skillInfo.skillType; clone.SetNotSeenIcon(clone.skillType); clone.SetAsDeselected(); clone.Clicked += () => SelectSlot(clone); skillSlots.Add(clone); }); } private void DisableDescriptionObjects() { skillsDescriptionRect.gameObject.SetActive(false); skillTitle.enabled = false; } private void EnableDescriptionObjects() { skillsDescriptionRect.gameObject.SetActive(true); skillTitle.enabled = true; } private void SelectSlot(SkillSlot clone) { if (selectedSlot) { selectedSlot.SetAsDeselected(); } selectedSlot = clone; selectedSlot.SetAsSelected(); skillImage.sprite = selectedSlot.image.sprite; skillBackgroundQuanta.sprite = selectedSlot.quantaBackgroundImage; levelImage.sprite = clone.levelImage.sprite; skillDescription.text = selectedSlot.description; skillTitle.text = selectedSlot.title.text; LayoutRebuilder.ForceRebuildLayoutImmediate(skillsDescriptionRect); } } }