333 lines
11 KiB
C#
333 lines
11 KiB
C#
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);
|
||
}
|
||
}
|