204 lines
6.4 KiB
C#
204 lines
6.4 KiB
C#
|
||
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);
|
||
}
|
||
}
|