using Games.LogicObj; using UnityEngine; using UnityEngine.UI; using System.Collections; using GCGame; using Module.Log; using Games.GlobeDefine; using System.Collections.Generic; using System; using GCGame.Table; using Games.Events; public class HeartSoul : MonoBehaviour { public UIImgText _Power; public UIContainerBase m_AddAttrs; public Text PulsLevel; public Slider HeartAllLevelSlider; public GameObject SliderEffect; public GameObject UpClassBtn; public GameObject UpClassPayObj; public Image PayQuilityIcon; public Image PayIcon; public Text PayName; public GameObject GetButtonObj; public Image CurrSelectIcon; public Text curSlider; public Text godHas; public GameObject ChildWnd; public GameObject InputFieldWnd; public Text CurPulsLevel; public GameObject PulsChildWnd1; public GameObject PulsTitle; public GameObject PulsChildWnd2; public GameObject PulsAddAttr; public GameObject PulsNeedAttr; public Text CostItemTip; public Text CostItemNum; public Image[] Points; public GameObject PointChildObj; private List HeartItems = new List(); int m_MaxAllLevelCount = 0; int m_HeartLevelCount = 0; int m_CurrSelectHeartID = -1; private void Awake() { HeartItems.Clear(); for (int i=0;i(); HeartItems.Add(heartItem); } } } void OnEnable() { ReqGetHeartList cmd2 = new ReqGetHeartList(); cmd2.flag = 1; cmd2.SendMsg(); } public static int GetLearnMaxLevel(int heartID) { int count = 0; var heartLevels = TableManager.GetHeartLevel().Values; foreach (var heartLevel in heartLevels) { if (heartLevel.Level != 0 && heartLevel.HeartID == heartID && heartLevel.ClassID == MeridiaSoulData.Instance.HeartClass) count++; } return count; } public Tab_HeartPulse GetPulseTab(int level) { var pulses = TableManager.GetHeartPulse().Values; foreach (var pulse in pulses) if (pulse.Level == level) return pulse; return null; } public void Show() { _Power.text = MeridiaSoulData.Instance.HeartTotlePower.ToString(); PulsLevel.text = StrDictionary.GetClientDictionaryString("#{46008}", MeridiaSoulData.Instance.PulseLevel); Dictionary attrLists = new Dictionary(); List showLists = null; m_MaxAllLevelCount = 0; m_HeartLevelCount = 0; var hearts = TableManager.GetHeartAttr().Values; var id = 0; foreach (var heart in hearts) { if (HeartItems.Count > id) HeartItems[id].InitData(heart); id++; int heartLevel = MeridiaSoulData.Instance.GetHeartLevel(heart.Id); int HeartLevelID = heart.Id * 1000000 + MeridiaSoulData.Instance.HeartClass * 1000 + heartLevel; Tab_HeartLevel HeartLevelTab = TableManager.GetHeartLevelByID(HeartLevelID, 0); if (HeartLevelTab == null) continue; Tab_HeartLevel HeartLevelTabNext = TableManager.GetHeartLevelByID(HeartLevelID + 1, 0); int count = GetLearnMaxLevel(heart.Id); m_MaxAllLevelCount += count; m_HeartLevelCount += MeridiaSoulData.Instance.GetHeartLevel(heart.Id); MeridiaSoul.BloodVeinAttrData data = new MeridiaSoul.BloodVeinAttrData(); if (HeartLevelTabNext != null) data.ProId = HeartLevelTabNext.AttrId1; else data.ProId = HeartLevelTab.AttrId1; data.ProVal = 0; if (data.ProId != -1) { AttrData attrData = MeridiaSoulData.Instance.GetOneHeartAddAttr(data.ProId); if (attrData != null) data.ProVal = attrData.attrValue; if (attrLists.ContainsKey(data.ProId)) { data.ProVal += attrLists[data.ProId].ProVal; } attrLists[data.ProId] = data; } } Tab_HeartPulse heartPuls = GetPulseTab(MeridiaSoulData.Instance.PulseLevel); Tab_HeartPulse heartPulsNext1 = GetPulseTab(MeridiaSoulData.Instance.PulseLevel+1); if (heartPulsNext1 != null) heartPuls = heartPulsNext1; if(heartPuls!=null) { for (var i = 0; i < heartPuls.getAttrIdCount(); i++) { int attrID = heartPuls.GetAttrIdbyIndex(i); MeridiaSoul.BloodVeinAttrData data = new MeridiaSoul.BloodVeinAttrData(); data.ProVal = 0; data.ProId = attrID; if (attrID != -1) { AttrData attrData = MeridiaSoulData.Instance.GetOnePulseAddAttr(attrID); if (attrData != null) data.ProVal = attrData.attrValue; if (attrLists.ContainsKey(data.ProId)) { data.ProVal += attrLists[data.ProId].ProVal; } attrLists[data.ProId] = data; } } } showLists = new List(attrLists.Values); m_AddAttrs.SetShowItemFinishCallFun(ShowAddAttrOver); m_AddAttrs.InitContentItem(showLists, null); if(m_HeartLevelCount>= m_MaxAllLevelCount) { ShowUpClass(); } else { UpClassPayObj.SetActive(false); UpClassBtn.SetActive(false); CostItemTip.gameObject.SetActive(false); } } public bool IsMaxLevel(int heartID) { int HeartLevelID = heartID * 1000000 + MeridiaSoulData.Instance.HeartClass * 1000 + MeridiaSoulData.Instance.GetHeartLevel(heartID); Tab_HeartLevel HeartLevelTabNext = TableManager.GetHeartLevelByID(HeartLevelID + 1, 0); if (HeartLevelTabNext == null) return true; return false; } public void ShowAddAttrOver() { var hearts = TableManager.GetHeartAttr().Values; var index = -1; var i = 0; foreach (var heart in hearts) { if (heart.Id == m_CurrSelectHeartID && IsMaxLevel(heart.Id) == false) { index = i; break; } if (IsMaxLevel(heart.Id) == false && index == -1) index = i; i++; } if (index == -1) index = 0; SelectOneHeart(index); } public void Click_ItemToolTip() { Tab_HeartClass heartClass = TableManager.GetHeartClassByID(MeridiaSoulData.Instance.HeartClass, 0); if (heartClass == null) return; if (heartClass.ConsumeType != 3) return; Tab_CommonItem commonItem = TableManager.GetCommonItemByID(heartClass.ConsumeSubType, 0); if (commonItem == null) return; ItemTooltipsLogic.ShowItemTooltip(heartClass.ConsumeSubType, ItemTooltipsLogic.ShowType.Info, transform.position); } public void GetItem() { Tab_HeartClass heartClass = TableManager.GetHeartClassByID(MeridiaSoulData.Instance.HeartClass, 0); if (heartClass == null) return; if (heartClass.ConsumeType != 3) return; Tab_CommonItem commonItem = TableManager.GetCommonItemByID(heartClass.ConsumeSubType, 0); if (commonItem == null) return; ItemTooltipsLogic.ShowItemTooltip(commonItem.Id, ItemTooltipsLogic.ShowType.GetPath, transform.position); } public void ShowUpClass() { Tab_HeartClass heartClass = TableManager.GetHeartClassByID(MeridiaSoulData.Instance.HeartClass, 0); Tab_HeartClass heartClassNext = TableManager.GetHeartClassByID(MeridiaSoulData.Instance.HeartClass + 1, 0); if (heartClassNext == null) { CostItemTip.gameObject.SetActive(true); CostItemTip.text = StrDictionary.GetClientDictionaryString("#{47409}"); UpClassPayObj.SetActive(false); return; } if (heartClass == null) return; if (heartClass.ConsumeType != 3) return; Tab_CommonItem commonItem = TableManager.GetCommonItemByID(heartClass.ConsumeSubType, 0); if (commonItem == null) return; UpClassPayObj.SetActive(true); UpClassBtn.SetActive(true); LoadAssetBundle.Instance.SetImageSprite(PayIcon,commonItem.Icon); LoadAssetBundle.Instance.SetImageSprite(PayQuilityIcon, Utils.GetItemQualityFrame(commonItem)); if (commonItem.QualityEffect > 0) { CommonItemContainerItem.ShowQualityEffect(true, commonItem.QualityEffect, PayIcon.transform); } else { CommonItemContainerItem.ShowQualityEffect(false, commonItem.QualityEffect, PayIcon.transform); } int has = GameManager.gameManager.PlayerDataPool.BackPack.GetItemCountByDataId(heartClass.ConsumeSubType); PayName.text = commonItem.Name; if (heartClass.ConsumeValue > has) { CostItemNum.text = StrDictionary.GetClientDictionaryString("#{47410}", string.Format("{0}/{1}", has, heartClass.ConsumeValue)); GetButtonObj.SetActive(true); } else { CostItemNum.text = StrDictionary.GetClientDictionaryString("#{47410}", string.Format("{0}/{1}", has, heartClass.ConsumeValue)); GetButtonObj.SetActive(false); } CostItemTip.gameObject.SetActive(true); if (MeridiaSoulData.Instance.HeartClass == 1) CostItemTip.text = StrDictionary.GetClientDictionaryString("#{47407}"); if (MeridiaSoulData.Instance.HeartClass == 2) CostItemTip.text = StrDictionary.GetClientDictionaryString("#{47408}"); if (MeridiaSoulData.Instance.HeartClass == 3) CostItemTip.text = StrDictionary.GetClientDictionaryString("#{47409}"); } public void SelectOneHeart(int index) { var hearts = TableManager.GetHeartAttr().Values; Tab_HeartAttr heart = null; var id = 0; foreach (var item in hearts) { if (id == index) { heart = item; break; } id++; } if (heart == null) return; if (m_MaxAllLevelCount <= 0) return; for(int i=0;i< HeartItems.Count;i++) { HeartItems[i].OnSelect(index == i); if (index == i) CurrSelectIcon.sprite = Points[i].sprite; } HeartAllLevelSlider.value = m_HeartLevelCount*1.0f / m_MaxAllLevelCount; SliderEffect.SetActive(HeartAllLevelSlider.value > 0); int HeartLevelID = heart.Id * 1000000 + MeridiaSoulData.Instance.HeartClass * 1000 + MeridiaSoulData.Instance.GetHeartLevel(heart.Id); Tab_HeartLevel HeartLevelTab = TableManager.GetHeartLevelByID(HeartLevelID, 0); Tab_HeartLevel HeartLevelTabNext = TableManager.GetHeartLevelByID(HeartLevelID+1, 0); m_CurrSelectHeartID = heart.Id; curSlider.text = string.Format("{0}/{1}", m_HeartLevelCount * HeartLevelTab.LevelSoulCount, m_MaxAllLevelCount * HeartLevelTab.LevelSoulCount); godHas.text = MeridiaSoulData.Instance.HeartCount.ToString(); m_AddAttrs.RefreshItems(); if (HeartLevelTabNext == null) { Tab_HeartLevel HeartLevelTabMax = TableManager.GetHeartLevelByID(HeartLevelID - 1, 0); if(HeartLevelTabMax!=null) curSlider.text = string.Format("{0}/{1}", m_HeartLevelCount * HeartLevelTabMax.LevelSoulCount, m_MaxAllLevelCount * HeartLevelTabMax.LevelSoulCount); return; } MeridiaSoul.BloodVeinAttrData data = new MeridiaSoul.BloodVeinAttrData(); data.ProId = HeartLevelTabNext.AttrId1; data.ProVal = HeartLevelTabNext.AttrValue1; Hashtable addAttr = new Hashtable(); addAttr["InitObj"] = data; m_AddAttrs.RefreshItems(addAttr); } public void Click_CloseFieldWn() { ChildWnd.SetActive(false); InputFieldWnd.SetActive(false); } List _CloneGameObjs = new List(); public void ShowPulsWnd() { ChildWnd.SetActive(true); InputFieldWnd.SetActive(true); CurPulsLevel.text = MeridiaSoulData.Instance.PulseLevel.ToString(); Tab_HeartPulse heartPuls = GetPulseTab(MeridiaSoulData.Instance.PulseLevel + 1); if (heartPuls == null) { PulsChildWnd1.SetActive(false); PulsTitle.SetActive(false); PulsChildWnd2.SetActive(true); return; } PulsChildWnd1.SetActive(true); PulsTitle.SetActive(true); PulsChildWnd2.SetActive(false); for (int i = 0; i < _CloneGameObjs.Count; i++) { _CloneGameObjs[i].SetActive(false); _CloneGameObjs[i].transform.SetParent(null); GameObject.Destroy(_CloneGameObjs[i]); } _CloneGameObjs.Clear(); for (int i=0;i(); if (attr != null) attr.text = PropID.GetAttrName((PropID.PropertyID)proID); Transform child = newObj.transform.Find("Text"); if (child != null) { AttrData attrData = MeridiaSoulData.Instance.GetOneHeartAddAttr(proID); Text attrValue = child.GetComponent(); if (attrValue != null) { if(add==false) { attrValue.text = proValue.ToString(); } else { if (attrData != null && attrData.attrValue >= proValue) { attrValue.text = proValue.ToString(); } else attrValue.text = string.Format("{0}", proValue); } } } _CloneGameObjs.Add(newObj); } public void Click_UpLevel() { Tab_HeartClass heartClassNext = TableManager.GetHeartClassByID(MeridiaSoulData.Instance.HeartClass, 0); if (heartClassNext == null) { GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{47406}")); return; } ReqUpgradeHeart cmd = new ReqUpgradeHeart(); cmd.heartId = m_CurrSelectHeartID; cmd.isAuto = 0; cmd.SendMsg(); } public void Click_UpClass() { Tab_HeartClass heartClassNext = TableManager.GetHeartClassByID(MeridiaSoulData.Instance.HeartClass + 1, 0); if (heartClassNext == null) { GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{47406}")); return; } ReqAdvanced cmd = new ReqAdvanced(); cmd.flag = 1; cmd.SendMsg(); } public void Click_Descript() { MessageHelpLogic.ShowHelpMessage(39); } }