JJBB/Assets/Project/Script/GUI/Advance/AdvanceEquipTip.cs

333 lines
11 KiB
C#
Raw Normal View History

2024-08-23 15:49:34 +08:00
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);
}
}