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