109 lines
3.5 KiB
C#
109 lines
3.5 KiB
C#
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<SkillSlot> skillSlots = new List<SkillSlot>();
|
|
|
|
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<Sprite> 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<CompleteSkillInfo> 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<Sprite>(skill.skillInfo.imagePath);
|
|
clone.quantaImage.sprite = Resources.Load<Sprite>(skill.skillInfo.quantaImagePath);
|
|
clone.quantaBackgroundImage = Resources.Load<Sprite>(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);
|
|
}
|
|
}
|
|
} |