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 attrList; public List attrNameList; public List attrValueList; public List attrIncValutList; public List 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> soulDanGradeLimitCountDic = new Dictionary>(); private Dictionary> spiritDanGradeLimitCountDic = new Dictionary>(); private Dictionary spiritDanMaxLimitCountDic = new Dictionary(); private Dictionary soulDanMaxLimitCountDic = new Dictionary(); void GetGaradeSoulAndSpritLimitCount() { soulDanGradeLimitCountDic = new Dictionary>(); spiritDanGradeLimitCountDic = new Dictionary>(); 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(); 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(); 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); } }