171 lines
6.5 KiB
C#
171 lines
6.5 KiB
C#
using UnityEngine;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using GCGame.Table;
|
||
using UnityEngine.UI;
|
||
using Games.GlobeDefine;
|
||
using Module.Log;
|
||
|
||
// 进阶技能显示面板
|
||
// 增加对他人信息查看支持
|
||
public class AdvanceSkillPanel : MonoBehaviour {
|
||
|
||
public List<AdvanceSkillItem> skillItemList;
|
||
public Text skillNameDesc;
|
||
public GameDefine_Globe.ShowType showType = GameDefine_Globe.ShowType.Self;
|
||
|
||
private Dictionary<int, int> ownSkillIndexAndIdDic = new Dictionary<int, int>();
|
||
|
||
// 增加对他人信息查看界面支持
|
||
public void InitSkillPanel(AdvanceInfo info, GameDefine_Globe.ShowType showType = GameDefine_Globe.ShowType.Self)
|
||
{
|
||
//获取全部的技能分类
|
||
GetAllAdvanceSkillDic(info.type);
|
||
this.showType = showType;
|
||
|
||
Tab_AdvanceBase advanceBase = TableManager.GetAdvanceBaseByID(info.baseId, 0);
|
||
if (advanceBase == null)
|
||
{
|
||
return;
|
||
}
|
||
|
||
ownSkillIndexAndIdDic.Clear();
|
||
// 整理info中的技能信息,存为 Dic<槽位索引,技能ID>形式
|
||
for (int index = 0; index < info.skillId.Count; index++)
|
||
{
|
||
Tab_AdvanceSkill advanceSkill = TableManager.GetAdvanceSkillByID(info.skillId[index], 0);
|
||
if (advanceSkill != null)
|
||
{
|
||
if (ownSkillIndexAndIdDic.ContainsKey(advanceSkill.Index))
|
||
{
|
||
ownSkillIndexAndIdDic[advanceSkill.Index] = advanceSkill.Id;
|
||
} else
|
||
{
|
||
ownSkillIndexAndIdDic.Add(advanceSkill.Index, advanceSkill.Id);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 检测技能数量,并进行显示
|
||
for (int index = 0; index < skillItemList.Count; index++)
|
||
{
|
||
skillItemList[index].gameObject.SetActive(index < curTypeSkillDic.Count ? true : false);
|
||
if (skillItemList[index].gameObject.activeInHierarchy)
|
||
{
|
||
if (!curTypeSkillDic.ContainsKey(index))
|
||
{
|
||
LogModule.ErrorLog("Index : " + index + " hasn't set origin skill");
|
||
return;
|
||
}
|
||
skillItemList[index].gameObject.GetComponent<AdvanceSkillItem>().InitSkillItem(
|
||
ownSkillIndexAndIdDic.ContainsKey(index) ? ownSkillIndexAndIdDic[index] : curTypeSkillDic[index],
|
||
advanceBase.Id,
|
||
showType);
|
||
}
|
||
}
|
||
|
||
// 显示当前进阶类型的面板名称
|
||
InitSkillDesc(info.type);
|
||
}
|
||
|
||
public void InitSkillDesc(int type)
|
||
{
|
||
switch (type)
|
||
{
|
||
case (int)AdvanceBase.AdvanceType.Ride:
|
||
skillNameDesc.text = StrDictionary.GetClientDictionaryString("#{42667}") + StrDictionary.GetClientDictionaryString("#{44033}");
|
||
break;
|
||
case (int)AdvanceBase.AdvanceType.Wing:
|
||
skillNameDesc.text = StrDictionary.GetClientDictionaryString("#{42669}") + StrDictionary.GetClientDictionaryString("#{44033}");
|
||
break;
|
||
case (int)AdvanceBase.AdvanceType.Piano:
|
||
skillNameDesc.text = StrDictionary.GetClientDictionaryString("#{42668}") + StrDictionary.GetClientDictionaryString("#{44033}");
|
||
break;
|
||
case (int)AdvanceBase.AdvanceType.Qilinbi:
|
||
skillNameDesc.text = StrDictionary.GetClientDictionaryString("#{42670}") + StrDictionary.GetClientDictionaryString("#{44033}");
|
||
break;
|
||
case (int)AdvanceBase.AdvanceType.Mask:
|
||
skillNameDesc.text = StrDictionary.GetClientDictionaryString("#{44035}") + StrDictionary.GetClientDictionaryString("#{44033}");
|
||
break;
|
||
case (int)AdvanceBase.AdvanceType.Soul:
|
||
skillNameDesc.text = StrDictionary.GetClientDictionaryString("#{44034}") + StrDictionary.GetClientDictionaryString("#{44033}");
|
||
break;
|
||
case (int)AdvanceBase.AdvanceType.Huopao:
|
||
skillNameDesc.text = StrDictionary.GetClientDictionaryString("#{42711}") + StrDictionary.GetClientDictionaryString("#{44033}");
|
||
break;
|
||
}
|
||
}
|
||
|
||
// curTypeSkillDic<技能所在技能槽的index, 技能id>
|
||
private Dictionary<int, int> curTypeSkillDic = new Dictionary<int, int>();
|
||
|
||
/// <summary>
|
||
/// 获得type类型的所有初始化的技能
|
||
/// </summary>
|
||
/// <param name="type">进阶类型</param>
|
||
public void GetAllAdvanceSkillDic(int type)
|
||
{
|
||
curTypeSkillDic.Clear();
|
||
foreach (var skillInfo in TableManager.GetAdvanceSkill().Values)
|
||
{
|
||
if (skillInfo.Type == type)
|
||
{
|
||
if (curTypeSkillDic.ContainsKey(skillInfo.Index)
|
||
&& skillInfo.SkillLevel == 0
|
||
&& skillInfo.NeedCareer == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession)
|
||
{
|
||
curTypeSkillDic[skillInfo.Index] = skillInfo.Id;
|
||
}
|
||
else
|
||
{
|
||
if (skillInfo.SkillLevel == 0
|
||
&& skillInfo.NeedCareer == GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Profession)
|
||
{
|
||
if (curTypeSkillDic.ContainsKey(skillInfo.Index))
|
||
{
|
||
curTypeSkillDic[skillInfo.Index] = skillInfo.Id;
|
||
}
|
||
else
|
||
{
|
||
curTypeSkillDic.Add(skillInfo.Index, skillInfo.Id);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
public void RefreshSkillPanel(int oldId, int newId, int baseId)
|
||
{
|
||
Tab_AdvanceSkill advanceSkill = TableManager.GetAdvanceSkillByID(newId, 0);
|
||
if (advanceSkill == null)
|
||
{
|
||
return;
|
||
}
|
||
|
||
if (advanceSkill.Index < skillItemList.Count)
|
||
{
|
||
skillItemList[advanceSkill.Index].gameObject.GetComponent<AdvanceSkillItem>().InitSkillItem(newId, baseId, showType);
|
||
}
|
||
}
|
||
|
||
public void RefreshSkillItemRedIconState()
|
||
{
|
||
for(int index = 0; index < skillItemList.Count; index++)
|
||
{
|
||
skillItemList[index].GetComponent<AdvanceSkillItem>().RefreshRedIconState();
|
||
}
|
||
}
|
||
|
||
|
||
public bool IsHaveSkillCanLevelUp()
|
||
{
|
||
for(int index = 0; index < skillItemList.Count; index++)
|
||
{
|
||
if (skillItemList[index].CanAdvanceSkillItemLevelUp())
|
||
return true;
|
||
}
|
||
return false;
|
||
}
|
||
}
|