You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
255 lines
9.2 KiB
255 lines
9.2 KiB
using System.Collections.Generic; |
|
using System.Web.UI; |
|
using FairyGUI; |
|
using UnityEngine; |
|
using UnityEngine.UIElements; |
|
|
|
namespace PVSkill |
|
{ |
|
public class SkillFatherElement |
|
{ |
|
private VisualElement root; |
|
private SkillFatherConfig curSkillFatherConfig; |
|
|
|
private Label skillIdLbl; |
|
private Label weaponLimitLbl; |
|
private Label skillTypeLbl; |
|
private Label skillDescLbl; |
|
private VisualElement skillIcon; |
|
|
|
// for son skill |
|
private ListView skillSonGroupList; |
|
private ListView skillUpGroupList; |
|
private ListView skillUpSkillSonGroupList; |
|
private SkillSonElement skillSonElement; |
|
private SkillSonElement skillUpSkillSonElement; |
|
|
|
private int[] curSkillUpUnlockSkillList; |
|
private List<int[]> curSkillUpList = new List<int[]>(); |
|
|
|
public SkillFatherElement(VisualElement root) |
|
{ |
|
this.root = root; |
|
|
|
skillIdLbl = root.Q<Label>("SkillIdLbl"); |
|
weaponLimitLbl = root.Q<Label>("WeaponLimitLbl"); |
|
skillTypeLbl = root.Q<Label>("SkillTypeLbl"); |
|
skillDescLbl = root.Q<Label>("SkillDesc"); |
|
skillIcon = root.Q<VisualElement>("SkillIcon"); |
|
|
|
skillSonGroupList = root.Q<ListView>("SkillSonGroupList"); |
|
skillSonGroupList.makeItem = this.MakeSkillSonGroupListItem; |
|
skillSonGroupList.bindItem = this.BindSkillSonGroupListItem; |
|
skillSonGroupList.onSelectionChange += this.OnSkillSonItemChosen; |
|
|
|
var elem = root.Q<VisualElement>("SkillSonInfo"); |
|
|
|
skillSonElement = new SkillSonElement(elem); |
|
|
|
skillUpGroupList = root.Q<ListView>("SkillUpGroupList"); |
|
skillUpGroupList.makeItem = this.MakeSkillUpGroupListItem; |
|
skillUpGroupList.bindItem = this.BindSkillUpGroupListItem; |
|
skillUpGroupList.onSelectionChange += this.OnSkillUpItemChosen; |
|
|
|
skillUpSkillSonGroupList = root.Q<ListView>("SkillUpSkillSonGroupList"); |
|
skillUpSkillSonGroupList.makeItem = this.MakeSkillUpSkillSonGroupListItem; |
|
skillUpSkillSonGroupList.bindItem = this.BindSkillUpSkillSonGroupListItem; |
|
skillUpSkillSonGroupList.onSelectionChange += this.OnSkillUpSkillSonItemChosen; |
|
|
|
elem = root.Q<VisualElement>("SkillUpSkillSonInfo"); |
|
skillUpSkillSonElement = new SkillSonElement(elem); |
|
} |
|
|
|
private void BindSkillSonGroupListItem(VisualElement ve, int index) |
|
{ |
|
var label = ve.Q<Label>("SkillSonName"); |
|
var sonId = this.curSkillFatherConfig.SkillSonGroup[index]; |
|
if (sonId == 0) |
|
{ |
|
label.text = "无"; |
|
return; |
|
} |
|
var sonConfig = SkillSonConfigCategory.Instance.Get(sonId); |
|
label.text = sonConfig.Name; |
|
} |
|
|
|
private VisualElement MakeSkillSonGroupListItem() |
|
{ |
|
var ve = new VisualElement(); |
|
ve.style.width = 100; |
|
ve.style.height = 50; |
|
var label = new Label(); |
|
label.name = "SkillSonName"; |
|
ve.Add(label); |
|
|
|
return ve; |
|
} |
|
|
|
private void OnSkillSonItemChosen(IEnumerable<object> obj) |
|
{ |
|
foreach (object o in obj) |
|
{ |
|
var sonId = (int) o; |
|
if (sonId == 0) |
|
{ |
|
this.skillSonElement.Hide(); |
|
return; |
|
} |
|
var sonConfig = SkillSonConfigCategory.Instance.Get(sonId); |
|
this.skillSonElement.SetDataByConfig(sonConfig); |
|
} |
|
} |
|
|
|
private void BindSkillUpGroupListItem(VisualElement ve, int index) |
|
{ |
|
Label label = ve as Label; |
|
var unlockSkills = this.curSkillUpList[index]; |
|
int unlockNum = 0; |
|
|
|
if (unlockSkills.Length > 0 && unlockSkills[0] != 0) |
|
{ |
|
unlockNum = unlockSkills.Length; |
|
} |
|
|
|
label.text = $"{index+1}级解锁({unlockNum})"; |
|
if (unlockNum > 0) |
|
{ |
|
label.AddToClassList("Highlight"); |
|
} |
|
else |
|
{ |
|
label.RemoveFromClassList("Highlight"); |
|
} |
|
} |
|
|
|
private VisualElement MakeSkillUpGroupListItem() |
|
{ |
|
var label = new Label(); |
|
label.AddToClassList("SkillUpItemLabel"); |
|
return label; |
|
} |
|
|
|
private void RefreshSkillUpSkillSonGroup(int[] unlockSkills) |
|
{ |
|
if (unlockSkills == null || unlockSkills[0] == 0) |
|
{ |
|
this.skillUpSkillSonGroupList.itemsSource = new List<int>(); |
|
this.skillUpSkillSonGroupList.ClearSelection(); |
|
this.skillUpSkillSonElement.Hide(); |
|
} |
|
else |
|
{ |
|
this.skillUpSkillSonGroupList.itemsSource = unlockSkills; |
|
this.skillUpSkillSonGroupList.selectedIndex = 0; |
|
} |
|
|
|
this.skillUpSkillSonGroupList.RefreshItems(); |
|
} |
|
|
|
private void OnSkillUpItemChosen(IEnumerable<object> obj) |
|
{ |
|
foreach (object o in obj) |
|
{ |
|
var unlockSkills = (int[]) o; |
|
curSkillUpUnlockSkillList = unlockSkills; |
|
if (unlockSkills.Length > 0 && unlockSkills[0] != 0) |
|
{ |
|
this.RefreshSkillUpSkillSonGroup(unlockSkills); |
|
} |
|
else |
|
{ |
|
this.RefreshSkillUpSkillSonGroup(null); |
|
} |
|
} |
|
} |
|
|
|
private void BindSkillUpSkillSonGroupListItem(VisualElement ve, int index) |
|
{ |
|
Label label = ve as Label; |
|
int skillId = curSkillUpUnlockSkillList[index]; |
|
var config = SkillSonConfigCategory.Instance.Get(skillId); |
|
label.text = config.Name; |
|
} |
|
|
|
private VisualElement MakeSkillUpSkillSonGroupListItem() |
|
{ |
|
var label = new Label(); |
|
return label; |
|
} |
|
|
|
private void OnSkillUpSkillSonItemChosen(IEnumerable<object> obj) |
|
{ |
|
foreach (object o in obj) |
|
{ |
|
var sonId = (int) o; |
|
var sonConfig = SkillSonConfigCategory.Instance.Get(sonId); |
|
this.skillUpSkillSonElement.SetDataByConfig(sonConfig); |
|
} |
|
} |
|
|
|
private void RefreshSonGroup(int[] skillSonGroup) |
|
{ |
|
if (skillSonGroup == null) |
|
{ |
|
this.skillSonGroupList.itemsSource = new List<int>(); |
|
this.skillSonGroupList.ClearSelection(); |
|
this.skillSonElement.Hide(); |
|
} |
|
else |
|
{ |
|
this.skillSonGroupList.itemsSource = skillSonGroup; |
|
this.skillSonGroupList.selectedIndex = 0; |
|
} |
|
|
|
|
|
this.skillSonGroupList.RefreshItems(); |
|
} |
|
|
|
private void RefreshSkillUpGroup(int skillUpId) |
|
{ |
|
if (skillUpId == 0) |
|
{ |
|
this.skillUpGroupList.itemsSource = new List<int>(); |
|
} |
|
else |
|
{ |
|
var skillUpConfig = SkillUpConfigCategory.Instance.Get(skillUpId); |
|
this.curSkillUpList.Clear(); |
|
this.curSkillUpList.Add(skillUpConfig.Level1UnlockParameter); |
|
this.curSkillUpList.Add(skillUpConfig.Level2UnlockParameter); |
|
this.curSkillUpList.Add(skillUpConfig.Level3UnlockParameter); |
|
this.curSkillUpList.Add(skillUpConfig.Level4UnlockParameter); |
|
this.curSkillUpList.Add(skillUpConfig.Level5UnlockParameter); |
|
this.curSkillUpList.Add(skillUpConfig.Level6UnlockParameter); |
|
this.curSkillUpList.Add(skillUpConfig.Level7UnlockParameter); |
|
this.curSkillUpList.Add(skillUpConfig.Level8UnlockParameter); |
|
this.curSkillUpList.Add(skillUpConfig.Level9UnlockParameter); |
|
this.curSkillUpList.Add(skillUpConfig.Level10UnlockParameter); |
|
this.skillUpGroupList.itemsSource = this.curSkillUpList; |
|
} |
|
|
|
this.skillUpGroupList.ClearSelection(); |
|
this.skillUpGroupList.RefreshItems(); |
|
this.RefreshSkillUpSkillSonGroup(null); |
|
} |
|
|
|
public void SetDataByConfig(SkillFatherConfig config) |
|
{ |
|
this.curSkillFatherConfig = config; |
|
|
|
this.skillIdLbl.text = $"Id:{config.Id}"; |
|
this.weaponLimitLbl.text = $"武器限制:{SkillEditorDefines.WeaponLimitMap[config.Weapon]}"; |
|
this.skillTypeLbl.text = $"技能类型:{SkillEditorDefines.SkillTypeMap[config.Type]}"; |
|
this.skillDescLbl.text = config.Describe; |
|
|
|
var contentItem = UIPackage.GetItemByURL("ui://SkillIcon/arrow"); |
|
contentItem.Load(); |
|
skillIcon.style.backgroundImage = new StyleBackground(contentItem.texture.nativeTexture as Texture2D); |
|
this.RefreshSonGroup(config.SkillSonGroup); |
|
|
|
// for skill up group |
|
var skillUpId = config.SkillUp; |
|
this.RefreshSkillUpGroup(skillUpId); |
|
} |
|
} |
|
} |