370 lines
16 KiB
C#
370 lines
16 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
using UnityEngine.UI;
|
|
using System.Collections.Generic;
|
|
using Games.Item;
|
|
using GCGame.Table;
|
|
using GCGame;
|
|
using Games.GlobeDefine;
|
|
|
|
public class AdvanceSoulAndSoiritDescPanelCtr : MonoBehaviour{
|
|
|
|
public GameDefine_Globe.ShowType showType = GameDefine_Globe.ShowType.Self;
|
|
public Transform objPos;
|
|
|
|
public Text titleText;
|
|
public Text usedCountDesc;
|
|
public List<GameObject> attrList;
|
|
public List<Text> attrNameList;
|
|
public List<Text> attrValueList;
|
|
public List<Text> attrIncValutList;
|
|
public List<GameObject> incAttrList;
|
|
|
|
public GameObject propList;
|
|
public Text propNameText;
|
|
public Text propValueText;
|
|
public Text propIncValueText;
|
|
public GameObject propInc;
|
|
public Text itemName;
|
|
public Image itemIcon;
|
|
public Image itemQuality;
|
|
public Text itemCount;
|
|
|
|
public Text combatValue;
|
|
public Text combatIncValue;
|
|
public GameObject combatInc;
|
|
|
|
public Text itemDesc;
|
|
public Text useDesc;
|
|
|
|
public GameObject _GainBtn;
|
|
|
|
private int curCommonItemId = -1;
|
|
|
|
public static AdvanceSoulAndSoiritDescPanelCtr Instance;
|
|
private void Awake()
|
|
{
|
|
Instance = this;
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
Instance = null;
|
|
}
|
|
|
|
private Dictionary<int, Dictionary<int, int>> soulDanGradeLimitCountDic = new Dictionary<int, Dictionary<int, int>>();
|
|
private Dictionary<int, Dictionary<int, int>> spiritDanGradeLimitCountDic = new Dictionary<int, Dictionary<int, int>>();
|
|
private Dictionary<int, int> spiritDanMaxLimitCountDic = new Dictionary<int, int>();
|
|
private Dictionary<int, int> soulDanMaxLimitCountDic = new Dictionary<int, int>();
|
|
void GetGaradeSoulAndSpritLimitCount()
|
|
{
|
|
soulDanGradeLimitCountDic = new Dictionary<int, Dictionary<int, int>>();
|
|
spiritDanGradeLimitCountDic = new Dictionary<int, Dictionary<int, int>>();
|
|
foreach(var advanceBase in TableManager.GetAdvanceBase().Values)
|
|
{
|
|
var advanceType = (advanceBase.Id - advanceBase.Level) / 1000 - 1;
|
|
if(soulDanGradeLimitCountDic.ContainsKey(advanceType))
|
|
{
|
|
if(!soulDanGradeLimitCountDic[advanceType].ContainsKey(advanceBase.Grade))
|
|
{
|
|
soulDanGradeLimitCountDic[advanceType].Add(advanceBase.Grade, advanceBase.SoulDanLimit);
|
|
}
|
|
}else
|
|
{
|
|
var soulLimitDic = new Dictionary<int, int>();
|
|
soulLimitDic.Add(advanceBase.Grade, advanceBase.SoulDanLimit);
|
|
soulDanGradeLimitCountDic.Add(advanceType, soulLimitDic);
|
|
}
|
|
|
|
if (spiritDanGradeLimitCountDic.ContainsKey(advanceType))
|
|
{
|
|
if (!spiritDanGradeLimitCountDic[advanceType].ContainsKey(advanceBase.Grade))
|
|
{
|
|
spiritDanGradeLimitCountDic[advanceType].Add(advanceBase.Grade, advanceBase.SpiritDanLimit);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var spiritLimitDic = new Dictionary<int, int>();
|
|
spiritLimitDic.Add(advanceBase.Grade, advanceBase.SpiritDanLimit);
|
|
spiritDanGradeLimitCountDic.Add(advanceType, spiritLimitDic);
|
|
}
|
|
|
|
if (spiritDanMaxLimitCountDic.ContainsKey(advanceType))
|
|
{
|
|
if (advanceBase.SpiritDanLimit > spiritDanMaxLimitCountDic[advanceType])
|
|
spiritDanMaxLimitCountDic[advanceType] = advanceBase.SpiritDanLimit;
|
|
}
|
|
else
|
|
{
|
|
spiritDanMaxLimitCountDic.Add(advanceType, advanceBase.SpiritDanLimit);
|
|
}
|
|
|
|
if(soulDanMaxLimitCountDic.ContainsKey(advanceType))
|
|
{
|
|
if (advanceBase.SoulDanLimit > soulDanMaxLimitCountDic[advanceType])
|
|
soulDanMaxLimitCountDic[advanceType] = advanceBase.SoulDanLimit;
|
|
}
|
|
else
|
|
{
|
|
soulDanMaxLimitCountDic.Add(advanceType, advanceBase.SoulDanLimit);
|
|
}
|
|
}
|
|
}
|
|
|
|
//danType 0.灵 1.魂
|
|
private int onceIncCombat; //当前等级使用一次增加的战力
|
|
private int _CostItemId = -1;
|
|
public void InitInfo(int baseId, int advanceType, int danType, int usedCount, Vector3 pos, GameDefine_Globe.ShowType showType = GameDefine_Globe.ShowType.Self)
|
|
{
|
|
this.showType = showType;
|
|
_CostItemId = -1;
|
|
objPos.transform.position = pos;
|
|
Tab_AdvanceBase advanceBase = TableManager.GetAdvanceBaseByID(baseId, 0);
|
|
if (advanceBase == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(soulDanGradeLimitCountDic.Count == 0 || spiritDanGradeLimitCountDic.Count == 0)
|
|
{
|
|
GetGaradeSoulAndSpritLimitCount();
|
|
}
|
|
|
|
Tab_AdvanceOther advanceOther = TableManager.GetAdvanceOtherByID((int)advanceType, 0);
|
|
if (advanceOther == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
GameItemContainer backPack = GameManager.gameManager.PlayerDataPool.BackPack;
|
|
|
|
onceIncCombat = advanceBase.CombatValue;
|
|
switch (danType)
|
|
{
|
|
case 1:
|
|
{
|
|
for (int index = 0; index < attrList.Count; index++)
|
|
{
|
|
attrList[index].SetActive(true);
|
|
}
|
|
propList.SetActive(false);
|
|
|
|
usedCountDesc.text = StrDictionary.GetClientDictionaryString("#{43039}", usedCount, advanceBase.SoulDanLimit, Utils.GetGradeString(advanceBase.Grade));
|
|
|
|
Tab_CommonItem commonItem = TableManager.GetCommonItemByID(advanceOther.SoulItemId, 0);
|
|
if (commonItem == null)
|
|
{
|
|
return;
|
|
}
|
|
_CostItemId = advanceOther.SoulItemId;
|
|
titleText.text = commonItem.Name;
|
|
itemName.text = commonItem.Name;
|
|
LoadAssetBundle.Instance.SetImageSprite(itemIcon, commonItem.Icon);
|
|
if (commonItem.QualityEffect > 0)
|
|
{
|
|
CommonItemContainerItem.ShowQualityEffect(true, commonItem.QualityEffect, itemIcon.transform);
|
|
}
|
|
else
|
|
{
|
|
CommonItemContainerItem.ShowQualityEffect(false, commonItem.QualityEffect, itemIcon.transform);
|
|
}
|
|
|
|
GameItem item = new GameItem();
|
|
item.DataID = commonItem.Id;
|
|
LoadAssetBundle.Instance.SetImageSprite(itemQuality, item.GetQualityFrame());
|
|
|
|
//itemCount.text = GameManager.gameManager.PlayerDataPool.BackPack.GetItemCountByDataId(item.DataID).ToString();
|
|
_GainBtn.SetActive(GameManager.gameManager.PlayerDataPool.BackPack.GetItemCountByDataId(item.DataID) <= 0);
|
|
for (int index = 0; index < attrNameList.Count; index++)
|
|
{
|
|
if (advanceOther.GetSoulIncAttrIdbyIndex(index) >= 0)
|
|
{
|
|
attrList[index].gameObject.SetActive(true);
|
|
int strId = advanceOther.GetSoulIncAttrIdbyIndex(index) + 10000;
|
|
attrNameList[index].text = StrDictionary.GetClientDictionaryString("#{" + strId + "}");
|
|
attrValueList[index].text = (advanceOther.GetSoulIncAttrValuebyIndex(index) * usedCount).ToString();
|
|
}
|
|
else
|
|
{
|
|
attrList[index].gameObject.SetActive(false);
|
|
}
|
|
}
|
|
|
|
combatInc.SetActive(true);
|
|
combatIncValue.text = advanceBase.SoulCombatCoefficient.ToString();
|
|
var nextGrade = advanceBase.Grade + 1;
|
|
|
|
if(!soulDanMaxLimitCountDic.ContainsKey(advanceType) || usedCount >= soulDanMaxLimitCountDic[advanceType])
|
|
{
|
|
for (int index = 0; index < incAttrList.Count; index++)
|
|
{
|
|
incAttrList[index].SetActive(false);
|
|
}
|
|
}else
|
|
{
|
|
for (int index = 0; index < attrIncValutList.Count; index++)
|
|
{
|
|
if (!attrList[index].activeInHierarchy)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
incAttrList[index].SetActive(true);
|
|
attrIncValutList[index].text = advanceOther.GetSoulIncAttrValuebyIndex(index).ToString(); //onceIncCombat.ToString();
|
|
}
|
|
}
|
|
|
|
if (soulDanGradeLimitCountDic.ContainsKey(advanceType) && soulDanGradeLimitCountDic[advanceType].ContainsKey(nextGrade))
|
|
{
|
|
combatInc.SetActive(true);
|
|
useDesc.text = StrDictionary.GetClientDictionaryString("#{43041}", soulDanGradeLimitCountDic[advanceType][nextGrade]);
|
|
}
|
|
else
|
|
{
|
|
combatInc.SetActive(false);
|
|
useDesc.text = StrDictionary.GetClientDictionaryString("#{43046}");
|
|
}
|
|
|
|
|
|
combatValue.text = (advanceBase.SoulCombatCoefficient * usedCount).ToString();
|
|
|
|
// 当在处于他人信息界面,不显示 "已有道具数量"
|
|
if(showType == GameDefine_Globe.ShowType.Self)
|
|
{
|
|
itemCount.transform.parent.gameObject.SetActive(true);
|
|
itemCount.text = backPack.GetItemCountByDataId(commonItem.Id).ToString();
|
|
}
|
|
else
|
|
{
|
|
itemCount.transform.parent.gameObject.SetActive(false);
|
|
}
|
|
|
|
_GainBtn.SetActive(backPack.GetItemCountByDataId(commonItem.Id) <= 0);
|
|
for (int index = 0; index < attrNameList.Count; index++)
|
|
curCommonItemId = commonItem.Id;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
{
|
|
for (int index = 0; index < attrList.Count; index++)
|
|
{
|
|
attrList[index].SetActive(false);
|
|
}
|
|
propList.SetActive(true);
|
|
usedCountDesc.text = StrDictionary.GetClientDictionaryString("#{43039}", usedCount, advanceBase.SpiritDanLimit, Utils.GetGradeString(advanceBase.Grade));
|
|
//设置增加的属性百分比
|
|
switch (advanceType)
|
|
{
|
|
case (int)AdvanceBase.AdvanceType.Ride:
|
|
propNameText.text = StrDictionary.GetClientDictionaryString("#{42667}") + StrDictionary.GetClientDictionaryString("#{43040}");
|
|
break;
|
|
case (int)AdvanceBase.AdvanceType.Wing:
|
|
propNameText.text = StrDictionary.GetClientDictionaryString("#{42669}") + StrDictionary.GetClientDictionaryString("#{43040}");
|
|
break;
|
|
case (int)AdvanceBase.AdvanceType.Piano:
|
|
propNameText.text = StrDictionary.GetClientDictionaryString("#{42668}") + StrDictionary.GetClientDictionaryString("#{43040}");
|
|
break;
|
|
case (int)AdvanceBase.AdvanceType.Qilinbi:
|
|
propNameText.text = StrDictionary.GetClientDictionaryString("#{42671}") + StrDictionary.GetClientDictionaryString("#{43040}");
|
|
break;
|
|
case (int)AdvanceBase.AdvanceType.Soul:
|
|
propNameText.text = StrDictionary.GetClientDictionaryString("#{42709}") + StrDictionary.GetClientDictionaryString("#{43040}");
|
|
break;
|
|
case (int)AdvanceBase.AdvanceType.Mask:
|
|
propNameText.text = StrDictionary.GetClientDictionaryString("#{42710}") + StrDictionary.GetClientDictionaryString("#{43040}");
|
|
break;
|
|
case (int)AdvanceBase.AdvanceType.Huopao:
|
|
propNameText.text = StrDictionary.GetClientDictionaryString("#{42711}") + StrDictionary.GetClientDictionaryString("#{43040}");
|
|
break;
|
|
}
|
|
|
|
Tab_CommonItem commonItem = TableManager.GetCommonItemByID(advanceOther.SpiritItemId, 0);
|
|
if(commonItem != null)
|
|
{
|
|
GameItem m_Item = new GameItem();
|
|
m_Item.DataID = commonItem.Id;
|
|
LoadAssetBundle.Instance.SetImageSprite(itemQuality, m_Item.GetQualityFrame());
|
|
}
|
|
_CostItemId = advanceOther.SpiritItemId;
|
|
titleText.text = commonItem.Name;
|
|
itemName.text = commonItem.Name;
|
|
LoadAssetBundle.Instance.SetImageSprite(itemIcon, commonItem.Icon);
|
|
if (commonItem.QualityEffect > 0)
|
|
{
|
|
CommonItemContainerItem.ShowQualityEffect(true, commonItem.QualityEffect, itemIcon.transform);
|
|
}
|
|
else
|
|
{
|
|
CommonItemContainerItem.ShowQualityEffect(false, commonItem.QualityEffect, itemIcon.transform);
|
|
}
|
|
|
|
GameItem item = new GameItem();
|
|
item.DataID = commonItem.Id;
|
|
LoadAssetBundle.Instance.SetImageSprite(itemQuality, item.GetQualityFrame());
|
|
|
|
if(spiritDanMaxLimitCountDic.ContainsKey(advanceType) && usedCount < spiritDanMaxLimitCountDic[advanceType])
|
|
{
|
|
propInc.SetActive(true);
|
|
propIncValueText.text = advanceOther.SpiritIncPercent + "%";
|
|
}
|
|
else
|
|
{
|
|
propInc.SetActive(false);
|
|
}
|
|
|
|
propValueText.text = advanceOther.SpiritIncPercent * usedCount + "%";
|
|
var nextGrade = advanceBase.Grade + 1;
|
|
if(spiritDanGradeLimitCountDic.ContainsKey(advanceType) && spiritDanGradeLimitCountDic[advanceType].ContainsKey(nextGrade))
|
|
{
|
|
combatInc.SetActive(true);
|
|
combatIncValue.text = advanceBase.SpiritCombatCoefficient.ToString();
|
|
useDesc.gameObject.SetActive(true);
|
|
useDesc.text = StrDictionary.GetClientDictionaryString("#{43041}", spiritDanGradeLimitCountDic[advanceType][nextGrade]);
|
|
}
|
|
else
|
|
{
|
|
useDesc.gameObject.SetActive(true);
|
|
|
|
combatInc.SetActive(false);
|
|
useDesc.text = StrDictionary.GetClientDictionaryString("#{43046}");
|
|
}
|
|
|
|
// 当在处于他人信息界面,不显示 "已有道具数量"
|
|
if (showType == GameDefine_Globe.ShowType.Self)
|
|
{
|
|
itemCount.transform.parent.gameObject.SetActive(true);
|
|
itemCount.text = backPack.GetItemCountByDataId(commonItem.Id).ToString();
|
|
}
|
|
else
|
|
{
|
|
itemCount.transform.parent.gameObject.SetActive(false);
|
|
}
|
|
|
|
_GainBtn.SetActive(backPack.GetItemCountByDataId(commonItem.Id) <= 0);
|
|
curCommonItemId = commonItem.Id;
|
|
combatValue.text = (advanceBase.SpiritCombatCoefficient * usedCount).ToString();
|
|
|
|
itemDesc.text = commonItem.Tips;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
public void OnGainBtnClick()
|
|
{
|
|
ItemTooltipsLogic.ShowItemTooltip(_CostItemId, ItemTooltipsLogic.ShowType.GetPath, _GainBtn.transform.position);
|
|
}
|
|
|
|
public void OnItemIconClick()
|
|
{
|
|
ItemGetPathPopRoot.Show(curCommonItemId, itemIcon.transform.position);
|
|
}
|
|
|
|
public void OnBackClick()
|
|
{
|
|
UIManager.CloseUI(UIInfo.AdvanceSoulAndSoiritDescPanel);
|
|
}
|
|
}
|