using UnityEngine; using System.Collections; using UnityEngine.UI; using System.Collections.Generic; using GCGame.Table; using Games.Item; using Games.GlobeDefine; public class AdvanceSkillTips : MonoBehaviour { public static AdvanceSkillTips Instance; private void Awake() { Instance = this; } private void OnDestroy() { Instance = null; } #region public GameDefine_Globe.ShowType showType = GameDefine_Globe.ShowType.Self; public Image skillIcon; public Text skillName; public Text isMainOrNotText; //是否是主动技能 是否已解锁 public GameObject isSkillActiveOrot; public Text curEffectDesc; //当前效果 public Text nextEffectDesc; //下一级效果,满级隐藏 public Image itemQuality; public Image itemIcon; public Text upLevelNeedGrade; public Text itemName; public Text needItemCount; public Text ownItemCount; public GameObject _GainBtn; public GameObject learnPanel; //满级隐藏学习按钮 public GameObject itemDescPanel; //满级的话隐藏 #endregion private int levelUpNeedItemId; private int levelUpNeedItemCount; private int levelUpNeedGrade; private int curAdvanceGrade; private int curOwnItemCount; //当前拥有的物品数量 private int curAdvanceType; //当前进阶类型 private int nextSkillId; //下个技能iD public Transform objPos; GameItemContainer bagPack = null; private Tab_AdvanceSkill nextAdvanceSkill = null; public void InitSkillTip(int skillId, int baseId, Vector2 pos, GameDefine_Globe.ShowType showType = GameDefine_Globe.ShowType.Self) { this.showType = showType; objPos.position = pos; Tab_AdvanceSkill advanceSkill = TableManager.GetAdvanceSkillByID(skillId, 0); if(advanceSkill == null) { return; } Tab_SkillEx skillEx = TableManager.GetSkillExByID(skillId, 0); if(skillEx == null) { return; } Tab_SkillBase skillBase = TableManager.GetSkillBaseByID(skillEx.BaseId, 0); if(skillBase == null) { return; } Tab_AdvanceBase advanceBase = TableManager.GetAdvanceBaseByID(baseId, 0); if(advanceBase == null) { return; } //设置SkillIcon name LoadAssetBundle.Instance.SetImageSprite(skillIcon, skillBase.Icon); skillName.text = skillBase.Name + "\u00A0\u00A0\u00A0" + StrDictionary.GetClientDictionaryString("#{2673}", advanceSkill.SkillLevel); nextSkillId = advanceSkill.NextSkillExId; curAdvanceGrade = advanceBase.Grade; curAdvanceType = (advanceBase.Id - advanceBase.Level) / 1000 - 1; curEffectDesc.text = StrDictionary.GetClientDictionaryString("#{42694}", skillEx.SkillDesc); //主动 被动 是否激活 isMainOrNotText.text = (skillBase.SkillClass & 1) != 0 ? StrDictionary.GetClientDictionaryString("#{42698}") : StrDictionary.GetClientDictionaryString("#{42699}"); isSkillActiveOrot.SetActive(advanceSkill.SkillLevel != 0 ? false : true); if (advanceSkill.NextSkillExId != -1) //技能等级未达到满级 { // 当处于他人显示状态,不显示学习面板 if(showType == GameDefine_Globe.ShowType.Other) { learnPanel.gameObject.SetActive(false); } else { learnPanel.gameObject.SetActive(true); } nextEffectDesc.gameObject.SetActive(true); itemDescPanel.gameObject.SetActive(true); Tab_SkillEx nextSkillex = TableManager.GetSkillExByID(advanceSkill.NextSkillExId, 0); if(nextEffectDesc != null) { nextEffectDesc.text = StrDictionary.GetClientDictionaryString("#{42695}", nextSkillex.SkillDesc); } nextAdvanceSkill = TableManager.GetAdvanceSkillByID(advanceSkill.NextSkillExId, 0); if(nextAdvanceSkill == null) { return; } levelUpNeedItemId = nextAdvanceSkill.CostItemId; levelUpNeedItemCount = nextAdvanceSkill.CostItemNum; levelUpNeedGrade = nextAdvanceSkill.NeedAdvanceLevel; bagPack = GameManager.gameManager.PlayerDataPool.GetItemContainer(GameItemContainer.Type.TYPE_BACKPACK); if (bagPack == null) return; curOwnItemCount = bagPack.GetItemCountByDataId(levelUpNeedItemId); //设置升级物品跟描述 Tab_CommonItem commonItem = TableManager.GetCommonItemByID(nextAdvanceSkill.CostItemId, 0); if (commonItem == null) { return; } LoadAssetBundle.Instance.SetImageSprite(itemQuality, GCGame.Utils.GetItemQualityFrame(commonItem.Quality)); 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); } upLevelNeedGrade.text = advanceBase.Grade >= nextAdvanceSkill.NeedAdvanceLevel ? StrDictionary.GetClientDictionaryString("#{44004}", nextAdvanceSkill.NeedAdvanceLevel) : StrDictionary.GetClientDictionaryString("#{44005}", nextAdvanceSkill.NeedAdvanceLevel); //nextAdvanceSkill.NeedAdvanceLevel.ToString(); itemName.text = commonItem.Name; GameItemContainer backPack = GameManager.gameManager.PlayerDataPool.BackPack; if(backPack != null) { // 当处于显示他人界面时,不显示当前拥有数目 if(showType == GameDefine_Globe.ShowType.Self) { ownItemCount.transform.parent.gameObject.SetActive(true); ownItemCount.text = backPack.GetItemCountByDataId(levelUpNeedItemId) >= nextAdvanceSkill.CostItemNum ? StrDictionary.GetClientDictionaryString("#{44004}", backPack.GetItemCountByDataId(levelUpNeedItemId)) : StrDictionary.GetClientDictionaryString("#{44005}", backPack.GetItemCountByDataId(levelUpNeedItemId));//nextAdvanceSkill.CostItemNum.ToString(); _GainBtn.SetActive(backPack.GetItemCountByDataId(levelUpNeedItemId) < nextAdvanceSkill.CostItemNum); } else { ownItemCount.transform.parent.gameObject.SetActive(false); } } needItemCount.text = nextAdvanceSkill.CostItemNum.ToString(); } else { learnPanel.gameObject.SetActive(false); nextEffectDesc.gameObject.SetActive(false); itemDescPanel.gameObject.SetActive(false); } } public void OnGainBtnClick() { ItemTooltipsLogic.ShowItemTooltip(levelUpNeedItemId, ItemTooltipsLogic.ShowType.GetPath, _GainBtn.transform.position, () => { UIManager.CloseUI(UIInfo.AdvanceSkillInfoTip); }); } public void OnLearnBtnClick() { if(curOwnItemCount < levelUpNeedItemCount) { GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{42696}")); return; } if(curAdvanceGrade < levelUpNeedGrade) { switch (curAdvanceType) { case (int)AdvanceBase.AdvanceType.Ride: GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{42667}") + StrDictionary.GetClientDictionaryString("#{42697}")); break; case (int)AdvanceBase.AdvanceType.Wing: GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{42669}") + StrDictionary.GetClientDictionaryString("#{42697}")); break; case (int)AdvanceBase.AdvanceType.Piano: GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{42668}") + StrDictionary.GetClientDictionaryString("#{42697}")); break; case (int)AdvanceBase.AdvanceType.Qilinbi: GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{42670}") + StrDictionary.GetClientDictionaryString("#{42697}")); break; case (int)AdvanceBase.AdvanceType.Mask: GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{44035}") + StrDictionary.GetClientDictionaryString("#{42697}")); break; case (int)AdvanceBase.AdvanceType.Soul: GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{44034}") + StrDictionary.GetClientDictionaryString("#{42697}")); break; case (int)AdvanceBase.AdvanceType.Huopao: GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{42711}") + StrDictionary.GetClientDictionaryString("#{42697}")); break; } return; } //发送申请升级的协议 if(nextSkillId != -1) { CG_REQ_ADVANCE req = (CG_REQ_ADVANCE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ADVANCE); req.SetOptionType((int)AdvanceBase.ReqType.SKILL_OPTION); req.SetType(curAdvanceType); req.SetParam1(nextSkillId); req.SetParam2(-1); req.SendPacket(); } // OnBackClick(); } public void OnBackClick() { UIManager.CloseUI(UIInfo.AdvanceSkillInfoTip); } public void RefreshOwnItemCount() { GameItemContainer backPack = GameManager.gameManager.PlayerDataPool.BackPack; if (backPack == null) return; ownItemCount.text = backPack.GetItemCountByDataId(levelUpNeedItemId) >= nextAdvanceSkill.CostItemNum ? StrDictionary.GetClientDictionaryString("#{44004}", backPack.GetItemCountByDataId(levelUpNeedItemId)) : StrDictionary.GetClientDictionaryString("#{44005}", backPack.GetItemCountByDataId(levelUpNeedItemId));//nextAdvanceSkill.CostItemNum.ToString(); _GainBtn.SetActive(backPack.GetItemCountByDataId(levelUpNeedItemId) < nextAdvanceSkill.CostItemNum); } }