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

968 lines
31 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 GCGame.Table;
using Games.Item;
using GCGame;
using System.Collections.Generic;
using Games.GlobeDefine;
using Games.LogicObj;
using Module.Log;
using Games.UserCommonData;
using System;
public class EquipTooltipsLogic : MonoBehaviour
{
public RectTransform _RootTransform;
public EquipTooltipsInfo _ShowingEquipInfo;
public EquipTooltipsInfo _CompareEquipInfo;
public RectTransform _ShowingEquipRect;
public RectTransform _CompareEquipRect;
public UISubScollMenu _PopMenu;
public GameObject _EquipInfoOffset;
public float _PosLeft;
public float _PosRight;
public GameObject _MenuContainer;
public GameObject _BtnSell;
private GameItem m_Equip;
private GameItemContainer.Type _ContainerPack;
private ItemTooltipsLogic.ShowType m_Type;
private static EquipTooltipsLogic m_Instance = null;
public static EquipTooltipsLogic Instance()
{
return m_Instance;
}
private static GameItem m_curItem;
private static ItemTooltipsLogic.ShowType m_curType;
private static Vector3 _ClickPos;
public static void ShowEquipTooltip(int dataId, ItemTooltipsLogic.ShowType type, Vector3 clickPos)
{
GameItem item = new GameItem();
item.DataID = dataId;
if (item.IsValid() && item.IsEquipMent())
{
ShowEquipTooltip(item, type, clickPos);
}
}
public static void ShowEquipTooltip(GameItem equip, ItemTooltipsLogic.ShowType type, Vector3 clickPos)
{
m_curItem = equip;
m_curType = type;
_ClickPos = clickPos;
UIManager.ShowUI(UIInfo.EquipTooltipsRoot, EquipTooltipsLogic.OnShowEquipTip);
}
private static void OnShowEquipTip(bool bSuccess, object param)
{
if (!bSuccess)
{
LogModule.ErrorLog("load equiptooltip error");
return;
}
EquipTooltipsLogic.Instance().ShowTooltips(m_curItem, m_curType);
}
void Awake()
{
m_Instance = this;
}
void Start()
{
}
public IEnumerator ShowEquip()
{
_EquipInfoOffset.transform.localPosition = new Vector3(0, 2000, 0);
yield return null;
_EquipInfoOffset.transform.localPosition = Vector3.zero;
}
void OnDestroy()
{
m_Instance = null;
}
/// <summary>
/// 显示装备Tooltips
/// </summary>
/// <param name="equip">装备</param>
private void ShowTooltips(GameItem equip, ItemTooltipsLogic.ShowType type)
{
if (equip == null)
{
CloseWindow();
return;
}
if (equip.IsValid() == false)
{
CloseWindow();
return;
}
m_Equip = equip;
m_Type = type;
//if (_ClickPos.x < 0)
//{
// _RootTransform.anchoredPosition = new Vector2(_PosRight, _RootTransform.anchoredPosition.y);
//}
//else
//{
// _RootTransform.anchoredPosition = new Vector2(_PosLeft, _RootTransform.anchoredPosition.y);
//}
_ShowingEquipRect.anchoredPosition = new Vector2(0, 0);
HideAllButtons();
//如果本装备位已经装备物品 弹出对比tips
int slotindex = equip.GetEquipSlotIndex();
GameItem CompareEquip = GameManager.gameManager.PlayerDataPool.EquipPack.GetItem(slotindex);
_ShowingEquipInfo.SetEquipInfo(equip, CompareEquip);
_CompareEquipInfo.gameObject.SetActive(false);
_PopMenu.Clear();
_PopMenu.gameObject.SetActive(true);
//_BtnSell.SetActive(false);
if (type == ItemTooltipsLogic.ShowType.Equiped) //点击装备槽位弹出的tips
{
_ContainerPack = GameItemContainer.Type.TYPE_EQUIPPACK;
//脱下按钮 显示
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{3876}"));
//装备强化按钮 显示
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{5422}"));
if (m_Equip.IsCanXilian())
{
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{5423}"));
}
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{5424}"));
if (m_Equip.IsCanFrenzy())
{
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{5425}"));
}
//修理
if (equip.Durable != equip.GetEquipMaxDurable())
{
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{5317}"));
}
//失魂
if (equip.IsShihun())
{
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{5318}"));
}
////隐藏战斗力箭头
//m_EquipPowerArrowUpSprite.gameObject.SetActive(false);
//m_EquipPowerArrowDownSprite.gameObject.SetActive(false);
}
else if (type == ItemTooltipsLogic.ShowType.UnEquiped) //点击物品背包弹出的tips
{
_ContainerPack = GameItemContainer.Type.TYPE_BACKPACK;
//装备按钮 显示
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{3874}"));
//售出按钮 显示
int cansell = TableManager.GetCommonItemByID(equip.DataID, 0).CanSell;
if (equip.CanSell())
{
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{3877}"));
}
if (!equip.BindFlag)
{
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{3580}")); //绑定
}
var sellTab = TableManager.GetUserShopItemByID(equip.DataID);
if (sellTab != null && !equip.BindFlag)
{
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{4578}")); //出售
}
//失魂
if (equip.IsShihun())
{
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{5318}"));
}
//修理
if (equip.Durable != equip.GetEquipMaxDurable())
{
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{5317}"));
}
if (CompareEquip != null && CompareEquip.IsValid())
{
OpenCompare(slotindex, null);
_ShowingEquipRect.anchoredPosition = new Vector2(_PosRight, 0);
_CompareEquipRect.anchoredPosition = new Vector2(_PosLeft, 0);
}
else
{
_ShowingEquipRect.anchoredPosition = new Vector2(0, 0);
_ShowingEquipInfo.SetEquipBaseCombat(0);
}
}
else if (type == ItemTooltipsLogic.ShowType.ShopBuy)
{
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{3857}"));
////隐藏战斗力箭头
//m_EquipPowerArrowUpSprite.gameObject.SetActive(false);
//m_EquipPowerArrowDownSprite.gameObject.SetActive(false);
}
else if (type == ItemTooltipsLogic.ShowType.ShopBuyBatch)
{
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{3857}"));
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{3858}"));
////隐藏战斗力箭头
//m_EquipPowerArrowUpSprite.gameObject.SetActive(false);
//m_EquipPowerArrowDownSprite.gameObject.SetActive(false);
}
else if (type == ItemTooltipsLogic.ShowType.BuyBack)
{
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{1086}"));
}
else if (type == ItemTooltipsLogic.ShowType.Info) //仅显示信息 没有操作按钮的tips
{
_PopMenu.gameObject.SetActive(false);
////隐藏战斗力箭头
//m_EquipPowerArrowUpSprite.gameObject.SetActive(false);
//m_EquipPowerArrowDownSprite.gameObject.SetActive(false);
}
else if (type == ItemTooltipsLogic.ShowType.Compare) //仅显示信息 没有操作按钮的tips 同时做对比
{
if (CompareEquip != null && CompareEquip.IsValid())
{
OpenCompare(slotindex, null);
_ShowingEquipRect.anchoredPosition = new Vector2(_PosRight, 0);
_CompareEquipRect.anchoredPosition = new Vector2(_PosLeft, 0);
}
else
{
_ShowingEquipRect.anchoredPosition = new Vector2(0, 0);
_ShowingEquipInfo.SetEquipBaseCombat(0);
}
}
else if (type == ItemTooltipsLogic.ShowType.ChatLink) //仅显示信息 没有操作按钮的tips
{
////隐藏战斗力箭头
//m_EquipPowerArrowUpSprite.gameObject.SetActive(false);
//m_EquipPowerArrowDownSprite.gameObject.SetActive(false);
//根据是否可以上架 决定是否显示求购按钮
//if (ConsignSaleBag.isCanConsignSale(m_Equip, true))
//{
// _PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{3882}"));
//}
}
else if (type == ItemTooltipsLogic.ShowType.CangKu) //仓库界面 仓库物品tips
{
////隐藏战斗力箭头
//m_EquipPowerArrowUpSprite.gameObject.SetActive(false);
//m_EquipPowerArrowDownSprite.gameObject.SetActive(false);
//显示取回按钮
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{3883}"));
}
else if (type == ItemTooltipsLogic.ShowType.CangKuBackPack) //仓库界面 背包物品tips
{
////隐藏战斗力箭头
//m_EquipPowerArrowUpSprite.gameObject.SetActive(false);
//m_EquipPowerArrowDownSprite.gameObject.SetActive(false);
//显示放入仓库按钮
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{3875}"));
}
if (_PopMenu.SubBtns.Count > 0)
{
_MenuContainer.SetActive(true);
}
else
{
_MenuContainer.SetActive(false);
}
StartCoroutine(ShowEquip());
}
void HideAllButtons()
{
_PopMenu.Clear();
}
public void CloseWindow()
{
UIManager.CloseUI(UIInfo.EquipTooltipsRoot);
}
void OpenCompare(int nEquipSlot,GameItem gameItem)
{
GameItem equip = GameManager.gameManager.PlayerDataPool.EquipPack.GetItem(nEquipSlot);
if (equip != null && equip.IsValid())
{
_CompareEquipInfo.gameObject.SetActive(true);
_CompareEquipInfo.SetEquipInfo(equip, null);
if (equip.BaseCombat > m_curItem.BaseCombat)
{
_ShowingEquipInfo.SetEquipBaseCombat(-1);
}
else if (equip.BaseCombat < m_curItem.BaseCombat)
{
_ShowingEquipInfo.SetEquipBaseCombat(1);
}
else
{
_ShowingEquipInfo.SetEquipBaseCombat(0);
}
_CompareEquipInfo.SetEquipBaseCombat(0);
_RootTransform.anchoredPosition = Vector3.zero;
}
else
{
_ShowingEquipInfo.SetEquipBaseCombat(0);
}
//m_TooltipsGrid.gameObject.transform.localPosition = new Vector3(-175, 0, 0);
//m_TooltipsGrid.repositionNow = true;
}
void CloseCompare()
{
_CompareEquipInfo.gameObject.SetActive(false);
//m_TooltipsGrid.repositionNow = true;
//m_EquipTooltips.transform.localPosition = new Vector3(0, 0, 0);
//m_TooltipsGrid.gameObject.transform.localPosition = new Vector3(0, 0, 0);
}
public void OnBtnPopMenu(object menuObj)
{
string menuStr = menuObj as string;
if (menuStr == StrDictionary.GetClientDictionaryString("#{3857}"))
{
// 购买
OnBuyClick();
}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{3858}"))
{
// 批量购买
OnBuyBatchClick();
}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{3882}"))
{
// 求购
ConsignSaleBuyBt();
}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{3875}"))
{
// 放入
CangKuIn();
}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{3883}"))
{
// 取出
CangKuOut();
}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{3874}"))
{
// 装备
EquipUse();
}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{3877}"))
{
// 回收
EquipSell();
}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{3876}"))
{
// 卸下
EquipTakeOff();
}
//else if (menuStr == StrDictionary.GetClientDictionaryString("#{3885}"))
//{
// ItemThrow();
//}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{5422}"))
{
// 强化
EnhanceOnClick(1);
}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{5423}"))
{
// 洗炼
EnhanceOnClick(0);
}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{5424}"))
{
// 镶嵌
EnhanceOnClick(2);
}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{5425}"))
{
// 狂化
EnhanceOnClick(3);
}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{3880}"))
{
// 分享
EquipShareLink();
}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{1086}"))
{
// 回购
ItemBuyBack();
}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{5317}"))
{
// 修理
OnEquipRefit();
}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{5318}"))
{
// 失魂
OnEquipShihun();
}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{3580}"))
{
// 绑定
BindItem();
}
else if (menuStr == StrDictionary.GetClientDictionaryString("#{4578}"))
{
// 出售
ItemMarket();
}
}
void BindItem()
{
LogModule.DebugLog("BindItem");
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{5396}"), "", BindItemOK, null);
}
void BindItemOK()
{
CG_REQ_BIND_ITEM buyPacket = (CG_REQ_BIND_ITEM)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_BIND_ITEM);
buyPacket.Itemguid = (long)m_Equip.Guid;
buyPacket.SendPacket();
}
void BindItemCancel()
{
}
void ItemMarket()
{
UIManager.ShowUI(UIInfo.MarketRoot, (sucess, param) =>
{
MarketLogic.Instance()._TagPanel.ShowPage(1);
MarketLogic.Instance()._MarketPlayerLogic._TagPanel.ShowPage(1);
});
CloseWindow();
}
public void EquipSell()
{
if (m_Equip != null && m_Equip.IsValid())
{
SysShopController.m_TipSelDataID = m_Equip.DataID;
if (m_Equip.IsEquipMent() && m_Equip.StrengthLevel > 0 || m_Equip.IsEquipGem())
{
if(m_Equip.IsEquipGem())
{
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{5400}",
m_Equip.GetEquipName(false, StrDictionary.GetClientDictionaryString("#{6755}"))), "", EquipSellOK, null, GlobeVar.INVALID_ID, MessageBoxLogic.PASSWORD.INVALID);
}
else
{
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{5400}", m_Equip.GetEquipName()), "", EquipSellOK, null, GlobeVar.INVALID_ID, MessageBoxLogic.PASSWORD.INVALID);
}
}
else if (m_Equip.GetQuality() > ItemQuality.QUALITY_BLUE)
{
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{4668}"), "", EquipSellOK, null, GlobeVar.INVALID_ID, MessageBoxLogic.PASSWORD.INVALID);
}
else
{
EquipSellOK();
}
}
CloseWindow();
}
void EquipSellOK()
{
if (m_Equip != null && m_Equip.IsValid())
{
List<GameItem> selllist = new List<GameItem>();
selllist.Add(m_Equip);
SysShopController.SellItem((int)GameItemContainer.Type.TYPE_BACKPACK, selllist);
CloseWindow();
}
}
void EquipUse()
{
if (m_Equip != null && m_Equip.IsValid())
{
int nPlayerLevel = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level;
if (nPlayerLevel < m_Equip.EquipUseLevel)
{
GUIData.AddNotifyData("#{1255}");
//Singleton<ObjManager>.GetInstance().MainPlayer.SendNoticMsg(false, "#{1255}");
return;
}
int equipProfession = m_Equip.GetProfessionRequire();
if (equipProfession > 0)
{
int nPlayerProfession = Singleton<ObjManager>.Instance.MainPlayer.Profession;
if (((equipProfession >> nPlayerProfession) & 1) == 0)
{
Singleton<ObjManager>.GetInstance().MainPlayer.SendNoticMsg(false, "#{1256}");
return;
}
}
if (m_Equip.BindFlag == false && m_Equip.GetBindType() != 0)
{
MessageBoxLogic.OpenOKCancelBox(3028, 1000, EquipUseOK, null);
}
else
{
EquipUseOK();
}
}
}
void EquipUseOK()
{
if (Singleton<ObjManager>.Instance.MainPlayer.CheckEquipItem(m_Equip))
{
GameManager.gameManager.SoundManager.PlaySoundEffect(144);
Singleton<ObjManager>.Instance.MainPlayer.EquipItem(m_Equip);
}
CloseWindow();
}
void EquipTakeOff()
{
if (m_Equip != null && m_Equip.IsValid())
{
if (Singleton<ObjManager>.Instance.MainPlayer.CheckUnEquipItem(m_Equip))
{
Singleton<ObjManager>.Instance.MainPlayer.UnEquipItem(m_Equip);
}
CloseWindow();
}
}
void EquipShareLink()
{
//if (m_Equip != null && m_Equip.IsValid())
//{
// ShareTargetChooseLogic.InitEquipShare(m_Equip);
//}
//ShareLinkDirectChatInfo();
}
void PutInQianKunDai()
{
//if (m_Equip != null && m_Equip.IsValid())
//{
// if (QianKunDaiLogic.Instance() != null && QianKunDaiLogic.Instance().gameObject.activeSelf)
// {
// //QianKunDaiLogic.Instance().ChooseStuff(m_Equip, m_curItemSlot);
// }
// CloseWindow();
//}
}
void EquipEnchance()
{
if (m_Equip != null && m_Equip.IsValid())
{
bool bRet = GameManager.gameManager.PlayerDataPool.CommonData.GetCommondFlag((int)USER_COMMONFLAG.CF_STRENGTHENFUNCTION_OPENFLAG);
if (bRet == false)
{
Singleton<ObjManager>.Instance.MainPlayer.SendNoticMsg(false, "#{2182}");
return;
}
if (_CompareEquipInfo.gameObject.activeSelf == true)
{
CloseCompare();
}
UIManager.CloseUI(UIInfo.EquipTooltipsRoot);
//UIManager.ShowUI(UIInfo.EquipStren, OnShowEquipEnchance);
}
}
void OnShowEquipEnchance(bool bSuccess, object param)
{
if (m_Equip != null && m_Equip.IsValid())
{
//if (EquipStrengthenLogic.Instance() != null)
//{
// //设置勾选当前装备
// EquipStrengthenLogic.Instance().SetCurSelectEquip(m_Equip);
// EquipStrengthenLogic.Instance().UpdateTab();
//}
}
}
void OnBuyClick()
{
if (SysShopController.Instance() != null)
{
//SysShopController.Instance().BuyCurItem();
}
}
void OnBuyBatchClick()
{
if (SysShopController.Instance() != null)
{
//SysShopController.Instance().BuyBatchCurItem();
}
}
void ShareLinkDirectChatInfo()
{
UIManager.ShowUI(UIInfo.ChatInfoRoot, ShowChatInfoRootOver);
}
//寄售行求购
void ConsignSaleBuyBt()
{
//UIManager.ShowUI(UIInfo.ConsignSaleRoot, BuyItemOpenConsignSale);
}
void BuyItemOpenConsignSale(bool bSuccess, object param)
{
if (bSuccess)
{
//if (ConsignSaleLogic.Instance() != null && m_Equip != null && m_Equip.IsValid() != false)
//{
// ConsignSaleLogic.Instance().SearchForAskBuy(m_Equip.GetName());
//}
CloseWindow();
}
}
void ShowChatInfoRootOver(bool bSuccess, object param)
{
if (bSuccess)
{
//ChatInfoLogic.Instance().InsertEquipLinkText(m_Equip);
EquipTooltipsLogic.Instance().CloseWindow();
}
}
void CangKuIn()
{
if (m_Equip != null && m_Equip.IsValid())
{
Singleton<ObjManager>.Instance.MainPlayer.CangKuPutIn(m_Equip);
CloseWindow();
}
}
void CangKuOut()
{
if (m_Equip != null && m_Equip.IsValid())
{
Singleton<ObjManager>.Instance.MainPlayer.CangKuTakeOut(m_Equip);
CloseWindow();
}
}
void EnhanceOnClick(int page = 1)
{
//bool bRet = GameManager.gameManager.PlayerDataPool.CommonData.GetCommondFlag((int)USER_COMMONFLAG.CF_STRENGTHENFUNCTION_OPENFLAG);
//if (bRet == false)
//{
// Singleton<ObjManager>.Instance.MainPlayer.SendNoticMsg(false, "#{2182}");
// return;
//}
//没有统一接口现在只在单独打开功能UI的地方判断当前功能是否开启
if(!IsMakeFuncOpen())
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{62935}")); //功能未开启
CloseWindow();
return;
}
EquipEnhanceRoot.ShowEnhanceRoot(m_Equip, page);
//UIManager.ShowUI(UIInfo.EquipEnhance);
CloseWindow();
}
private const int _MakeFuncTabId = 1;
private bool IsMakeFuncOpen()
{
var functionOpenTab = TableManager.GetFunctionOpenByID(_MakeFuncTabId, 0);
if (functionOpenTab == null)
{
return false;
}
var _OpenGuide = functionOpenTab.ShowGUIDId;
var _OpenLevel = functionOpenTab.OpenLevel;
if (_OpenGuide > 0)
{
if (_OpenGuide > Guide.Instance._FinishGuideID)
{
return false;
}
}
else if (_OpenLevel > 0)
{
if (GameManager.gameManager.PlayerDataPool.FunctionOpenState.ContainsKey(_MakeFuncTabId)
&& GameManager.gameManager.PlayerDataPool.FunctionOpenState[_MakeFuncTabId])
{
return true;
}
else
{
return false;
}
}
return true;
}
void ItemBuyBack()
{
CG_SYSTEMSHOP_BUYBACK buyBackPacket = (CG_SYSTEMSHOP_BUYBACK)PacketDistributed.CreatePacket(MessageID.PACKET_CG_SYSTEMSHOP_BUYBACK);
buyBackPacket.SetShopId((int)GameItemContainer.Type.TYPE_BUYBACKPACK);
buyBackPacket.SetItemGuid(m_Equip.Guid);
buyBackPacket.SendPacket();
CloseWindow();
}
private int _DecomConsume = 0;
void OnDisassembly()
{
_DecomConsume = 0;
if (m_Equip.StrengthLevel > 0)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{5336}"));
return;
}
if(m_Equip.IsEquipGem())
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{5420}"));
return;
}
// 返还物品先进行统计,避免一个物品显示两次 Dic<ID, Cout>
Dictionary<int, int> returnItems = new Dictionary<int, int>();
// 基础分解的返还
var equipDecomposizions = TableManager.GetEquipDecomposition().Values;
Tab_EquipDecomposition equipDecomTab = null;
foreach(var equipDecomposition in equipDecomposizions)
{
if (equipDecomposition.EquipType == 1&&
equipDecomposition.EquipLevel >= m_Equip.GetEquipLevel()
&& equipDecomposition.Quality == (int)m_Equip.GetQuality())
{
equipDecomTab = equipDecomposition;
break;
}
}
if (equipDecomTab != null)
{
_DecomConsume = equipDecomTab.ConsumeNum;
}
if (equipDecomTab != null && equipDecomTab.ItemNum > 0)
{
if(returnItems.ContainsKey(equipDecomTab.ItemID))
{
returnItems[equipDecomTab.ItemID] += equipDecomTab.ItemNum;
}
else
{
returnItems[equipDecomTab.ItemID] = equipDecomTab.ItemNum;
}
}
// 洗练返还
if (m_Equip.XilianPoint > 0)
{
string getBackItemStr2 = "";
var equipXilianTabs = TableManager.GetEquipPropBarBaptizeConsume().Values;
foreach (var consumeTab in equipXilianTabs)
{
if (consumeTab.MaxLevel >= m_Equip.GetEquipLevel() && consumeTab.Quality == (int)m_Equip.GetQuality())
{
if(returnItems.ContainsKey(consumeTab.ConsumeSubType))
{
returnItems[consumeTab.ConsumeSubType] += (int)(m_Equip.XilianPoint * consumeTab.ConsumeNum * 0.8f);
}
else
{
returnItems[consumeTab.ConsumeSubType] = (int)(m_Equip.XilianPoint * consumeTab.ConsumeNum * 0.8f);
}
break;
}
}
}
// 打孔返还
//var equipQuality = m_Equip.GetQuality();
//int gemPos = m_Equip.GetOpenedGemPos();
//if (gemPos > 0)
//{
// var punchTabs = TableManager.GetEquipPunchConsume().Values;
// Tab_EquipPunchConsume equipPunchConsume = null;
// foreach (var punchTab in punchTabs)
// {
// if (punchTab.MaxLevel >= m_Equip.GetEquipLevel())
// {
// equipPunchConsume = punchTab;
// break;
// }
// }
// int getBackCnt = 0;
// if (equipPunchConsume != null)
// {
// for (int i = 0; i < gemPos; ++i)
// {
// getBackCnt += (int)equipPunchConsume.GetReturnNumbyIndex(i);
// }
// if (getBackCnt > 0)
// {
// if(returnItems.ContainsKey(equipPunchConsume.ConsumeSubType))
// {
// returnItems[equipPunchConsume.ConsumeSubType] += getBackCnt;
// }
// else
// {
// returnItems[equipPunchConsume.ConsumeSubType] = getBackCnt;
// }
// }
// }
//}
// 狂化返还
if(m_Equip.IsFrenzy)
{
Tab_CommonItem itemTab = TableManager.GetCommonItemByID(m_Equip.DataID, 0);
var fenzyTabs = TableManager.GetEquipFrenzy().Values;
foreach (var kv in fenzyTabs)
{
if ((int)m_Equip.GetQuality() == kv.Quality
&& itemTab.MinLevelRequire >= kv.EquipLevelMin
&& itemTab.MinLevelRequire <= kv.EquipLevelMax)
{
if (returnItems.ContainsKey(kv.ReturnSubType))
{
returnItems[kv.ReturnSubType] += kv.ReturnNum;
}
else
{
returnItems[kv.ReturnSubType] = kv.ReturnNum;
}
break;
}
}
}
string resultStr = "";
foreach(var kv in returnItems)
{
Tab_CommonItem tab = TableManager.GetCommonItemByID(kv.Key, 0);
if(tab != null)
{
if (string.IsNullOrEmpty(resultStr))
{
resultStr = Utils.GetItemQualityColor(tab.Quality) + tab.Name + "×" + kv.Value + "</color>";
}
else
{
resultStr += "," + Utils.GetItemQualityColor(tab.Quality) + tab.Name + "×" + kv.Value + "</color>";
}
}
}
string tips = StrDictionary.GetClientDictionaryString("#{5337}", m_Equip.GetEquipName(), _DecomConsume, resultStr);
MessageBoxLogic.OpenOKCancelBox(tips, null, OnDisassemblyOK);
}
void OnDisassemblyOK()
{
long money = GameManager.gameManager.PlayerDataPool.Money.GetMoney_Coin() + GameManager.gameManager.PlayerDataPool.Money.GetMoney_CoinBind();
if (money < _DecomConsume)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{6004}") + StrDictionary.GetClientDictionaryString("#{6000}"));
return;
}
CG_DECOMPOSITION_EQUIP packet = (CG_DECOMPOSITION_EQUIP)PacketDistributed.CreatePacket(MessageID.PACKET_CG_DECOMPOSITION_EQUIP);
packet.AddEquipguid(m_Equip.Guid);
packet.SendPacket();
CloseWindow();
}
void OnEquipRefit()
{
if (m_Equip != null)
{
foreach (var attr in m_Equip.ExAttrs)
{
if (attr.XilianTab.PropID == (int)PropID.PropertyID.EQUIP_XILIAN_NOREFIT)
{
GUIData.AddNotifyData(StrDictionary.GetClientDictionaryString("#{5375}"));
return;
}
}
}
m_Equip.EquipRefit((int)_ContainerPack);
CloseWindow();
}
private int _ShihunCost = 0;
void OnEquipShihun()
{
var timeSpan = TimeSpan.FromTicks((long)(m_Equip.ShihunTime - GlobalData.ServerAnsiTime) * 10000000L);
_ShihunCost = (m_Equip.GetEquipMaxDurable() * (int)m_Equip.GetQuality() * (int)(timeSpan.TotalHours + 1));
string tips = StrDictionary.GetClientDictionaryString("#{5369}", m_Equip.GetEquipName(), _ShihunCost);
MessageBoxLogic.OpenOKCancelBox(tips, null, OnEquipShihunOK);
//CloseWindow();
}
void OnEquipShihunOK()
{
if (JudgeMoneyLogic.IsMoneyEnough(MONEYTYPE.MONEYTYPE_COIN, _ShihunCost))
{
CG_REQ_EQUIP_FIX_INVALID_STATE packet = (CG_REQ_EQUIP_FIX_INVALID_STATE)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_EQUIP_FIX_INVALID_STATE);
packet.Packettype = (int)_ContainerPack;
packet.Equipguid = m_Equip.Guid;
packet.SendPacket();
CloseWindow();
}
}
}