using System.Collections.Generic; using Games.LogicObj; using GCGame; using GCGame.Table; using UnityEngine; using UnityEngine.UI; using System.Collections; using Games.Fellow; using Games.Events; public class PetSkillWnd : MonoBehaviour { public GameObject TipText; public GameObject TipText1; public UIContainerSelect m_Contains; public Toggle IsLow; public Image PayMoneyIcon; public Image PayMoneyHasIcon; public GameObject PayObj; public GameObject GetItemBtn; public Image PayItemQuility; public Image PayItemIcon; public Text PayItemName; public Text PayItemNum; public Text PayMoneyHas; public Text PayMoneyCost; public Image skillIcon; //选中的技能的图片 public Text skillname; //选中的技能的名称 public Text skillDescript; //选中的技能的描述 public GameObject LearnBtn; public GameObject UpBtn; public void ClearInfo(bool state) { PayItemName.gameObject.SetActive(state); PayItemNum.gameObject.SetActive(state); PayMoneyHas.gameObject.SetActive(state); PayMoneyCost.gameObject.SetActive(state); } public void Awake() { Hashtable calbackMoveparam1 = new Hashtable(); calbackMoveparam1["name"] = "UpSkillLevelSuccess"; MessageEventCallBack fun1 = UpSkillLevelSuccess; calbackMoveparam1.Add("callFun", fun1); EventDispatcher.Instance.AddMessageEvent(Games.Events.EventId.UpFellowSkillLevel, calbackMoveparam1); Hashtable calbackMoveparam3 = new Hashtable(); calbackMoveparam3["name"] = "SkillWndPayFresh"; MessageEventCallBack fun3 = PayFresh; calbackMoveparam3.Add("callFun", fun3); EventDispatcher.Instance.AddMessageEvent(Games.Events.EventId.FRESHSAMEUSETIP, calbackMoveparam3); } public void OnDestroy() { EventDispatcher.Instance.RemoveMessage(Games.Events.EventId.UpFellowSkillLevel, "UpSkillLevelSuccess"); EventDispatcher.Instance.RemoveMessage(Games.Events.EventId.StudyFellowSkillSuccess, "StudyFellowSkill1"); EventDispatcher.Instance.RemoveMessage(Games.Events.EventId.FRESHSAMEUSETIP, "SkillWndPayFresh"); } public void PayFresh(Hashtable addparam, Hashtable sendparam) { OnSelectSkillBook(m_currSelectSkill); } public void UpSkillLevelSuccess(Hashtable addparam, Hashtable sendparam) { GUIData.AddNotifyData(GCGame.Table.StrDictionary.GetClientDictionaryString("#{20111}")); if (sendparam == null) return; if (sendparam.ContainsKey("fellowId") == false) return; ulong guid = (ulong)sendparam["fellowId"]; if (PetMainWnd.CurrentSelectFellowId != guid) return; Fellow pet = GameManager.gameManager.PlayerDataPool.FellowContainer.GetFellowByGuid(PetMainWnd.CurrentSelectFellowId); if (pet == null) return; int newSkillid = (int)sendparam["skillid"]; int oldSkillid = (int)sendparam["oldskillid"]; Hashtable table = new Hashtable(); table["new"] = newSkillid; table["old"] = oldSkillid; m_Contains.RefreshItems(table); if (oldSkillid == m_currSelectSkill) OnSelectSkillBook(m_currSelectSkill); } public void BuyFast() { JudgeMoneyLogic.ShowSwitchMoneyPanel((MONEYTYPE)commonItem_Money, true); } public void OnSelectPet() { if (GameManager.gameManager.PlayerDataPool.FellowContainer == null) return; if (IsLow.isOn) { ShowHas(true); } else { IsLow.isOn = true; } } public void ShowHas(bool Low) { Fellow pet = GameManager.gameManager.PlayerDataPool.FellowContainer.GetFellowByGuid(PetMainWnd.CurrentSelectFellowId); if (pet == null) return; var fellowSkills = TableManager.GetFellowLearnSkillCost().Values; List showList = new List(); List selects = new List(); if(!Low) { showList.Insert(0, -3); showList.Insert(0, -3); showList.Insert(0, -3); showList.Insert(0, -2); } int TypeThree = 0; foreach (var value in fellowSkills) { Tab_FellowSkill skillInfo = TableManager.GetFellowSkillByID(value.Id, 0); if (skillInfo == null || skillInfo.Type == -1 || skillInfo.IsShow!=1) continue; if (skillInfo.Type == 1 && Low) { showList.Add(value.Id); } if(!Low) { if (skillInfo.Type == 3) { showList.Insert(0, value.Id); TypeThree++; } if (skillInfo.Type == 2) { showList.Add(value.Id); } } } if (showList.Count > 0) selects.Add(showList[0]); if (!Low) { int need = TypeThree % 4; if(need>0) { for (int i = 0; i < 4 - need; i++) { showList.Insert(TypeThree + i, -3); } } showList.Insert(0, -3); showList.Insert(0, -3); showList.Insert(0, -3); showList.Insert(0, -1); } m_Contains.InitSelectContent(showList, selects, OnSelectSkillBook, null); } public void OnSelectSkillBook(object param) { int skillId = (int)param; Fellow pet = GameManager.gameManager.PlayerDataPool.FellowContainer.GetFellowByGuid(PetMainWnd.CurrentSelectFellowId); if (pet == null) return; m_currSelectSkill = skillId; int realSkill = pet.IsSkillBookUsed(skillId); if (realSkill == 0) realSkill = skillId; Tab_FellowSkill skillInfo = TableManager.GetFellowSkillByID(realSkill, 0); if (skillInfo == null || skillInfo.Type == -1) return; Tab_FellowLearnSkillCost skillBookInfo = TableManager.GetFellowLearnSkillCostByID(skillId, 0); if (skillBookInfo == null) { return; } skillname.text = skillBookInfo.SkillName; Tab_SkillEx tab_SkillEx = TableManager.GetSkillExByID(realSkill, 0); if (tab_SkillEx != null) { skillDescript.text = StrDictionary.GetClientString_WithNameSex(tab_SkillEx.SkillDesc); } else { skillDescript.text = ""; } LoadAssetBundle.Instance.SetImageSprite(skillIcon, skillInfo.SkillIcon); int realID = pet.IsSkillBookUsed(skillId); if (realID == 0) { CountLearnCost(skillId); TipText.gameObject.SetActive(false); } else { CountLevelUp(skillInfo); TipText.gameObject.SetActive(true); } UpBtn.SetActive(realID > 0 || skillInfo.Type == 1); LearnBtn.SetActive(!UpBtn.activeSelf); } int hasCount = 0; int commonItem_Cost = 0; int commonItem_Money = 0; int commonItem_Money_Cost = 0; public void CountLearnCost(int bookID) { if (m_currSelectSkill != bookID) return; Tab_FellowLearnSkillCost skillBookInfo = TableManager.GetFellowLearnSkillCostByID(m_currSelectSkill, 0); if (skillBookInfo == null) { return; } Tab_CommonItem commonItem = null; for (int i = 0; i < skillBookInfo.getConsumeTypeCount(); i++) { if (skillBookInfo.GetConsumeTypebyIndex(i) == (int)CONSUM_TYPE.ITEM) { commonItem = TableManager.GetCommonItemByID(skillBookInfo.GetConsumeSubTypebyIndex(i), 0); commonItem_Cost = skillBookInfo.GetConsumeNumbyIndex(i); } if (skillBookInfo.GetConsumeTypebyIndex(i) == (int)CONSUM_TYPE.MONEY) { commonItem_Money = skillBookInfo.GetConsumeSubTypebyIndex(i); commonItem_Money_Cost = skillBookInfo.GetConsumeNumbyIndex(i); long count = GameManager.gameManager.PlayerDataPool.Money.GetMoneyByType((MONEYTYPE)commonItem_Money); TipText1.SetActive(count < commonItem_Money_Cost); } } if (commonItem == null) return; LoadAssetBundle.Instance.SetImageSprite(PayItemQuility, GCGame.Utils.GetItemQualityFrame(commonItem.Quality)); LoadAssetBundle.Instance.SetImageSprite(PayItemIcon, commonItem.Icon); if (commonItem.QualityEffect > 0) { CommonItemContainerItem.ShowQualityEffect(true, commonItem.QualityEffect, PayItemIcon.transform); } else { CommonItemContainerItem.ShowQualityEffect(false, commonItem.QualityEffect, PayItemIcon.transform); } PayItemName.text = commonItem.Name; hasCount = GameManager.gameManager.PlayerDataPool.BackPack.GetItemCountByDataId(commonItem.Id); if (hasCount < commonItem_Cost) { PayItemNum.text = string.Format("{0}/{1}", hasCount, commonItem_Cost); GetItemBtn.SetActive(true); Button btn = GetItemBtn.GetComponent