Files
JJBB/Assets/Project/Script/GUI/Equip/EquipGemPutOnPanel.cs

204 lines
6.4 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00

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<GameItem> gemItems = new List<GameItem>();
List<GameItem> 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<int> 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<GameItem>() {}, OnSelectGemItem, null, hash);
}
}
public List<GameItem> GenCanReplaceGemList(List<GameItem> curList, GemData curGemItem, GameItem equipItem)
{
List<GameItem> gemItems = new List<GameItem>();
foreach (var gemItem in curList)
{
List<int> 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<int> GetGemSlots(int gemDataID)
{
var gemPropTabs = TableManager.GetGemProp();
List<int> gemTypes = new List<int>();
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);
}
}