using System.Collections.Generic; using Core.Language; using Core.Utility; using GameLogic.Hero; using UnityEngine; using UnityEngine.UI; namespace Fort23.Mono { [UIBinding(prefab = "SkillUIComponent" )] public partial class SkillUIComponent : UIComponent { private void Init() { } public override void AddEvent() { } public override void DelEvent() { } public override void AddButtonEvent() { btnBack.onClick.AddListener(OnClickBack); } private void OnClickBack() { UIManager.Instance.DormancyGComponent(this); UIManager.Instance.DormancyAllGComponent("WidgetIconSkill"); } private HeroInfo heroInfo; public List allSkillIcon = new List(); public async void InitUI(HeroInfo heroInfo) { this.heroInfo = heroInfo; int idx = 0; foreach (KeyValuePair> keyValuePair in heroInfo.SkillData.mySkillDic) { if (keyValuePair.Key == GlobalParam.Normal_Attack_Skill_Group_ID) { //普攻不需要生成相应的技能ICON continue; } SkillInfo skillInfo = heroInfo.SkillData.GetHighestLevelOr1(keyValuePair.Key); WidgetIconSkill widgetIconSkill = await UIManager.Instance.CreateGComponent(null, poolName: "WidgetIconSkill", root: skillRoot); widgetIconSkill.InitWidget(skillInfo); allSkillIcon.Add(widgetIconSkill); //显示第一个技能的详情 if (idx == 0) { ShowSkillDetail(keyValuePair.Key); } idx++; } } public void SetOtherBorder(WidgetIconSkill iconSkill) { foreach (WidgetIconSkill widgetIconSkill in allSkillIcon) { if (widgetIconSkill != iconSkill) { widgetIconSkill.imgBorder.color = Color.black; } } } public void ShowSkillDetail(int groupID) { List skillInfos = heroInfo.SkillData.mySkillDic[groupID]; // skillInfos.Sort((SkillInfo x, SkillInfo y) => x.skillConfig.level.CompareTo(y.skillConfig.level)); foreach (GameObject go in skillDesc) { go.SetActive(false); } // SkillInfo skillInfo = heroInfo.skillComponent.GetHighestLevel(groupID); //最高解锁的SkillInfo SkillInfo maxSkillUnLock = skillInfos[0]; //第一个锁的SkillInfo SkillInfo firstSkillLock = null; bool once = true; int tmpLv = 0; for (int i = 0; i < skillInfos.Count; i++) { string unLockConditionStr = ""; Color color = Color.white; if (skillInfos[i].isUnLock) { if (skillInfos[i].skillConfig.level > tmpLv) { tmpLv = skillInfos[i].skillConfig.level; maxSkillUnLock = skillInfos[i]; } } else { if (skillInfos[i].skillUpConfig.upType == 1) { unLockConditionStr = skillInfos[i].skillUpConfig.upValue + "级解锁"; } else { unLockConditionStr = "星级达到" + skillInfos[i].skillUpConfig.upValue + "星后解锁"; } color = new Color(0.65f, 0.65f, 0.65f); if (once) { once = false; firstSkillLock = skillInfos[i]; } } GameObject go = skillDesc[i] as GameObject; go.GetComponent().text = LanguageManager.Instance.Text(skillInfos[i].skillConfig.name, skillInfos[i].skillConfig.effectValue) + unLockConditionStr; go.GetComponent().color = color; go.SetActive(true); } // SkillInfo skillInfo = heroInfo.skillComponent.GetHighestLevel(groupID); txtSkillName.text = LanguageManager.Instance.Text(maxSkillUnLock.skillConfig.name); txtLv.text = maxSkillUnLock.skillConfig.level.ToString(); txtCD.text = "冷却" + maxSkillUnLock.skillConfig.cd + "秒"; if (firstSkillLock != null) { if (firstSkillLock.skillUpConfig.upType == 1) { txtTips.text = "等级达到" + firstSkillLock.skillUpConfig.upValue + "级后解锁"; } else { txtTips.text = "星级达到" + firstSkillLock.skillUpConfig.upValue + "星后解锁"; } } else { txtTips.text = "技能已达最高等级"; } layoutGroup.SetLayoutVertical(); } } }