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 _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 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 + ""; 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 + "}") + "" + un_break_space_string + advanceEquip.GetAttrValuebyIndex(index).ToString() + ""; } 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 selllist = new List(); 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 + ""; 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 selllist = new List(); selllist.Add(m_Equip); SysShopController.SellItem((int)GameItemContainer.Type.TYPE_BACKPACK, selllist); CloseWindow(); } } public void CloseWindow() { UIManager.CloseUI(UIInfo.AdvanceEquipTips); } }