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

333 lines
11 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.Generic;
using GCGame.Table;
using Games.Item;
using GCGame;
using Module.Log;
public class AdvanceEquipTip : MonoBehaviour{
public static AdvanceEquipTip Instance;
private void Awake()
{
Instance = this;
}
private void OnDestroy()
{
Instance = null;
}
public List<Sprite> _itemQualityBGSpriteList;
public Image _ItemQualityBG;
public Image itemQuality;
public Image itemIcon;
public GameObject bindIcon;
public Text itemName;
public Text itemSlotDesc;
public Text itemNeedCon1;
public UISubScollMenu _PopMenu;
public Transform tipPos; //设置当前位置
public Text combatValue;
public List<Text> attrList;
private GameItemContainer.Type _ContainerPack;
private GameItem m_Equip;
public AdvanceBase.AdvanceType advanceType;
public string un_break_space_string = "\u00A0\u00A0+";
private Tab_EquipDecomposition equipDecomposizionTab = null;
//装备中 Equiped 未装备 UnEquiped 两种状态
public void ShowAdvanceEquipTip(GameItem equip, ItemTooltipsLogic.ShowType type, Vector3 pos)
{
m_Equip = equip;
tipPos.position = pos;
_PopMenu.Clear();
InitSlotDesc();
//刷新当前属性
InitAttrPanel();
switch (equip.GetSubClass())
{
case (int)AdvanceEquipSubClass.Slot_MATAO:
case (int)AdvanceEquipSubClass.Slot_MABIAN:
case (int)AdvanceEquipSubClass.Slot_MAAN:
case (int)AdvanceEquipSubClass.Slot_MADENG:
advanceType = AdvanceBase.AdvanceType.Ride;
break;
}
if (type == ItemTooltipsLogic.ShowType.Equiped) //点击装备槽位弹出的tips
{
_ContainerPack = GameItemContainer.Type.TYPE_ADVANCEPACK;
//脱下按钮 显示
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{3876}"));
}else
{
_ContainerPack = GameItemContainer.Type.TYPE_ADVANCEPACK;
//装备按钮 显示
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{3874}"));
if(!m_Equip.BindFlag)
{
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{3580}")); //绑定
}
//售出按钮 显示
if (m_Equip.CanSell())
{
_PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{3877}"));
}
var advanceEquipBase = TableManager.GetAdvanceEquipByID(equip.DataID, 0);
if (advanceEquipBase == null)
return;
var commonItem = TableManager.GetCommonItemByID(equip.DataID, 0);
if (commonItem == null)
return;
foreach (var tab in TableManager.GetEquipDecomposition().Values)
{
if(tab.EquipType == 2
&& advanceEquipBase.NeedAdvanceGrade == tab.EquipLevel
&& commonItem.Quality == tab.Quality )
{
equipDecomposizionTab = tab;
break;
}
}
}
}
void InitSlotDesc()
{
Tab_AdvanceEquip advanceEquip = TableManager.GetAdvanceEquipByID(m_Equip.DataID, 0);
if(advanceEquip == null)
{
return;
}
switch(advanceEquip.Index)
{
case (int)AdvanceEquipSubClass.Slot_MATAO:
itemSlotDesc.text = StrDictionary.GetClientDictionaryString("#{48200}");
break;
case (int)AdvanceEquipSubClass.Slot_MABIAN:
itemSlotDesc.text = StrDictionary.GetClientDictionaryString("#{48201}");
break;
case (int)AdvanceEquipSubClass.Slot_MAAN:
itemSlotDesc.text = StrDictionary.GetClientDictionaryString("#{48202}");
break;
case (int)AdvanceEquipSubClass.Slot_MADENG:
itemSlotDesc.text = StrDictionary.GetClientDictionaryString("#{48203}");
break;
}
}
public void InitAttrPanel()
{
Tab_CommonItem commonItem = TableManager.GetCommonItemByID(m_Equip.DataID, 0);
if(commonItem == null)
{
return;
}
Tab_AdvanceEquip advanceEquip = TableManager.GetAdvanceEquipByID(m_Equip.DataID, 0);
if(advanceEquip == null)
{
return;
}
LoadAssetBundle.Instance.SetImageSprite(_ItemQualityBG, Utils.GetItemQualityBG(commonItem.Quality));
itemName.text = Utils.GetQualityColorInTip(commonItem.Quality);
itemName.text += TableManager.GetCommonItemByID(m_Equip.DataID, 0).Name + "</color>";
LoadAssetBundle.Instance.SetImageSprite(itemQuality, m_Equip.GetQualityFrame());
LoadAssetBundle.Instance.SetImageSprite(itemIcon, commonItem.Icon);
if (commonItem.QualityEffect > 0)
{
CommonItemContainerItem.ShowQualityEffect(true, commonItem.QualityEffect, itemIcon.transform);
}
else
{
CommonItemContainerItem.ShowQualityEffect(false, commonItem.QualityEffect, itemIcon.transform);
}
bindIcon.gameObject.SetActive(m_Equip.BindFlag); //服务器会同步
combatValue.text = advanceEquip.CombatValue.ToString();
//限制条件
switch (advanceType)
{
case AdvanceBase.AdvanceType.Ride:
{
int _AdvanceBaseId = advanceEquip.NeedAdvanceLevel + 1000;
var AdvanceBaseTab = TableManager.GetAdvanceBaseByID(_AdvanceBaseId, 0);
if(AdvanceBaseTab == null)
{
LogModule.ErrorLog("AdvanceBase is null, advance id is : " + _AdvanceBaseId);
return;
}
itemNeedCon1.text = StrDictionary.GetClientDictionaryString("#{43045}", AdvanceBaseTab.Grade, AdvanceBaseTab.Star);
}
break;
}
for (int index = 0; index < advanceEquip.getAttrIdCount(); index++)
{
if (advanceEquip.GetAttrIdbyIndex(index) >= 0)
{
attrList[index].gameObject.SetActive(true);
int strId = advanceEquip.GetAttrIdbyIndex(index);
strId += 10000;
attrList[index].text = StrDictionary.GetClientDictionaryString("#{" + strId + "}") + "<color=#ffffff>" + un_break_space_string + advanceEquip.GetAttrValuebyIndex(index).ToString() + "</color>";
}
else
{
attrList[index].gameObject.SetActive(false);
}
}
}
void BindItem()
{
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();
}
public void ItemSell()
{
if (m_Equip != null && m_Equip.IsValid())
{
SysShopController.m_TipSelDataID = m_Equip.DataID;
if (m_Equip.GetQuality() >= ItemQuality.QUALITY_BLUE)
{
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{4668}"), "", ItemSellOK, null);
}
else
{
ItemSellOK();
}
}
CloseWindow();
}
void ItemSellOK()
{
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();
}
}
public void OnBtnPopMenu(object menuObj)
{
string menuStr = menuObj as string;
if (menuStr == StrDictionary.GetClientDictionaryString("#{3876}"))
{
PutOffEquip();
}
if (menuStr == StrDictionary.GetClientDictionaryString("#{3874}"))
{
AdornEquip();
}
if (menuStr == StrDictionary.GetClientDictionaryString("#{3580}"))
{
BindItem();
}
if (menuStr == StrDictionary.GetClientDictionaryString("#{3877}"))
{
SellItem();
}
}
public void DescompostionItem()
{
var rewDescStr = "";
var commonItem = TableManager.GetCommonItemByID(equipDecomposizionTab.ItemID, 0);
if (commonItem == null)
return;
rewDescStr = "" + Utils.GetItemQualityColor(commonItem.Quality) + commonItem.Name + "×" + equipDecomposizionTab.ItemNum + "</color>";
var consumeName = Utils.GetMoneyName(equipDecomposizionTab.ConsumeSubType);
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{5800}", commonItem.Name, equipDecomposizionTab.ConsumeNum, consumeName, rewDescStr),
null, delegate() {
if(JudgeMoneyLogic.IsMoneyEnough((MONEYTYPE)equipDecomposizionTab.ConsumeSubType, equipDecomposizionTab.ConsumeNum))
{
CG_DECOMPOSITION_EQUIP packet = (CG_DECOMPOSITION_EQUIP)PacketDistributed.CreatePacket(MessageID.PACKET_CG_DECOMPOSITION_EQUIP);
packet.AddEquipguid(m_Equip.Guid);
packet.SendPacket();
}
});
CloseWindow();
}
//协议操作类型 1.穿戴 2.脱下
public void PutOffEquip()
{
GameItemContainer _Container = GameManager.gameManager.PlayerDataPool.AdvancePack;
CG_REQ_ADVANCE_EQUIP req = (CG_REQ_ADVANCE_EQUIP)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ADVANCE_EQUIP);
req.SetOptionType(2);
req.SetType((int)advanceType);
req.SetGuid(_Container.GetItemGuidByDataID(m_Equip.DataID));
req.SendPacket();
CloseWindow();
}
public void AdornEquip()
{
CG_REQ_ADVANCE_EQUIP req = (CG_REQ_ADVANCE_EQUIP)PacketDistributed.CreatePacket(MessageID.PACKET_CG_REQ_ADVANCE_EQUIP);
req.SetOptionType(1);
req.SetType((int)advanceType);
req.SetGuid(m_Equip.Guid);
req.SendPacket();
CloseWindow();
}
public void SellItem()
{
if (m_Equip != null && m_Equip.IsValid())
{
SysShopController.m_TipSelDataID = m_Equip.DataID;
if (m_Equip.GetQuality() >= ItemQuality.QUALITY_BLUE)
{
MessageBoxLogic.OpenOKCancelBox(StrDictionary.GetClientDictionaryString("#{4668}"), "", EquipSellOK, null);
}
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();
}
}
public void CloseWindow()
{
UIManager.CloseUI(UIInfo.AdvanceEquipTips);
}
}