Files
JJBB/Assets/Project/Script/GUI/Equip/EquipGemPutOnPanel.cs
2024-08-23 15:49:34 +08:00

204 lines
6.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}