using UnityEngine; using UnityEngine.UI; using System.Collections; using System.Collections.Generic; using GCGame.Table; using Games.Mission; using Games.Events; using Games.Item; public class EquipGemPutOnPanel : MonoBehaviour { public UIContainerSelect _Gems; private GameItem _SelectItem; public void InitGemInPack(GameItem equipItem, GemData curGemItem, int showType) { List gemItems = new List(); List itemList = ItemTool.ItemFilter(GameManager.gameManager.PlayerDataPool.BackPack, 3, 5, false); //根据战力排序 itemList.Sort((GameItem a, GameItem b) => { Tab_GemProp data1 = TableManager.GetGemPropByID(a.DataID, 0); Tab_GemProp data2 = TableManager.GetGemPropByID(b.DataID, 0); if (data1.CombatValue > data2.CombatValue) { return -1; } return 1; }); if (showType == 2) { gemItems = GenCanReplaceGemList(itemList,curGemItem,equipItem); } else { foreach (var gemItem in itemList) { List gemTypes = GetGemSlots(gemItem.DataID); if (!gemTypes.Contains(equipItem.GetSubClass())) { continue; } var gemComsumeTab = TableManager.GetGemLvlUpConsumeByID(gemItem.DataID); var sameItem = equipItem.GemItems.Find((equipedGem) => { if (equipedGem.IsValid()) { var equipedGemConsumeTab = TableManager.GetGemLvlUpConsumeByID(equipedGem.DataID); if (equipedGemConsumeTab.ConsumeSubType == gemComsumeTab.ConsumeSubType) return true; } return false; }); if (sameItem != null) { continue; } bool isSameGem = false; int replaceIdx = -1; for (int i = 0; i < gemItems.Count; ++i) { var containGemConsumeTab = TableManager.GetGemLvlUpConsumeByID(gemItems[i].DataID); if (containGemConsumeTab.ConsumeSubType == gemComsumeTab.ConsumeSubType) { isSameGem = true; if (containGemConsumeTab.DesLevel < gemComsumeTab.DesLevel) { replaceIdx = i; break; } } } if (isSameGem) { if (replaceIdx >= 0) { gemItems[replaceIdx] = gemItem; } } else { gemItems.Add(gemItem); } } } if (gemItems.Count == 0) { //var pos = UIManager.Instance().UICamera.WorldToScreenPoint(transform.position); //var marketItemTabs = TableManager.GetExchangeMarket(); //foreach (var marketItemTab in marketItemTabs) //{ // if (marketItemTab.Value.ClassType == 3 && marketItemTab.Value.ClassSubType == 1) // { // ItemGetPathPopRoot.Show(marketItemTab.Value.Id, Vector3.zero); // return; // } //} //马个鸡,这个地方原先是ID,策划改ID了 //改为从Commonitem表找,策划还保留废弃ID //改为从市场表找,策划不在市场卖了。 //就应该往死了写,然后一出问题就甩锅策划 if (showType == 2) { } else { ItemGetPathPopRoot.Show(30101, Vector3.zero); } } else { gameObject.SetActive(true); Hashtable hash = new Hashtable(); hash.Add("EquipItem", equipItem); hash.Add("curGemItem", curGemItem); _Gems.InitSelectContent(gemItems, new List() {}, OnSelectGemItem, null, hash); } } public List GenCanReplaceGemList(List curList, GemData curGemItem, GameItem equipItem) { List gemItems = new List(); foreach (var gemItem in curList) { List gemTypes = GetGemSlots(gemItem.DataID); if (!gemTypes.Contains(equipItem.GetSubClass())) { continue; } Tab_GemProp gemProp = TableManager.GetGemPropByID(gemItem.DataID, 0); Tab_GemProp curGemProp = TableManager.GetGemPropByID(curGemItem.DataID, 0); if (gemProp.PropID[0] == curGemProp.PropID[0]) { if (gemProp.CombatValue > curGemProp.CombatValue) gemItems.Add(gemItem); } } return gemItems; } public static bool CheckHasStrongGem(GameItem curGemItem,GameItem dstGemItem) { Tab_GemProp curGemProp = TableManager.GetGemPropByID(curGemItem.DataID, 0); Tab_GemProp dstGemProp = TableManager.GetGemPropByID(dstGemItem.DataID, 0); if (curGemItem.CombatValue > dstGemProp.CombatValue) return true; return false; } public static List GetGemSlots(int gemDataID) { var gemPropTabs = TableManager.GetGemProp(); List gemTypes = new List(); foreach(var gemPropTab in gemPropTabs.Values) { if (gemPropTab.GemID == gemDataID) { var gemSlotTypeStr = gemPropTab.NewPartType.Split('|'); for (int j = 0; j < gemSlotTypeStr.Length; ++j) { gemTypes.Add(int.Parse(gemSlotTypeStr[j])); } break; } } return gemTypes; } public void OnSelectGemItem(object gemObj) { GameItem gemItem = gemObj as GameItem; if (gemItem == null) return; _SelectItem = gemItem; OnBtnOK(); } public void OnBtnOK() { EquipEnhanceXiangqian.Instance().OnGemPutOn(_SelectItem); } public void CloseWindow() { gameObject.SetActive(false); } }