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 MagicTooltipLogic : MonoBehaviour { public MagicTooltipsInfo _ShowingMagicInfo; public MagicTooltipsInfo _CompareMagicInfo; public UISubScollMenu _PopMenu; private GameItem m_Equip; private ItemTooltipsLogic.ShowType m_Type; private static GameItem m_curItem; private static ItemTooltipsLogic.ShowType m_curType; private static MagicTooltipLogic m_Instance = null; public static MagicTooltipLogic Instance() { return m_Instance; } void Awake() { m_Instance = this; } void Start() { } void OnDestroy() { m_Instance = null; } public static void ShowEquipTooltip(GameItem equip, ItemTooltipsLogic.ShowType type, bool showCompare = true) { m_curItem = equip; m_curType = type; UIManager.ShowUI(UIInfo.MagicTooltipsRoot, MagicTooltipLogic.OnShowEquipTip, showCompare); } private static void OnShowEquipTip(bool bSuccess, object param) { if (!bSuccess) { LogModule.ErrorLog("load equiptooltip error"); return; } MagicTooltipLogic.Instance().ShowTooltips(m_curItem, m_curType, (bool)param); } public void CloseWindow() { UIManager.CloseUI(UIInfo.MagicTooltipsRoot); } private void ShowTooltips(GameItem equip, ItemTooltipsLogic.ShowType type, bool showCompare = true) { if (equip == null) { CloseWindow(); return; } if (equip.IsValid() == false) { CloseWindow(); return; } m_Equip = equip; m_Type = type; _ShowingMagicInfo.SetMagicInfo(equip); _CompareMagicInfo.gameObject.SetActive(false); _PopMenu.Clear(); _PopMenu.gameObject.SetActive(true); if (type == ItemTooltipsLogic.ShowType.Info) //仅显示信息 没有操作按钮的tips { _PopMenu.gameObject.SetActive(false); } else if (type == ItemTooltipsLogic.ShowType.ShopBuy) { _PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{4549}")); } else if (type == ItemTooltipsLogic.ShowType.ShopBuyBatch) { _PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{4549}")); _PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{4574}")); } else if (type == ItemTooltipsLogic.ShowType.CangKu) //仓库界面 仓库物品tips { //显示取回按钮 _PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{4576}")); } else if (type == ItemTooltipsLogic.ShowType.CangKuBackPack) //仓库界面 背包物品tips { //显示放入仓库按钮 _PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{4573}")); } else if (type == ItemTooltipsLogic.ShowType.BuyBack) //回购 { //显示回购按钮 _PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{1086}")); } else if (type == ItemTooltipsLogic.ShowType.GetPath) { //显示获取路径 _PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{5005}")); } else if (type == ItemTooltipsLogic.ShowType.LiveSkillGet) { //显示获取路径 _PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{4753}")); } else if(type == ItemTooltipsLogic.ShowType.Equiped) //点击槽位弹出的tips { _PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{3876}")); } else if(type == ItemTooltipsLogic.ShowType.UnEquiped) //点击物品背包弹出的tips { if(HasMagic(equip.DataID)) { _PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{42004}")); //佩戴 if (MagicClearWnd.IsCanClear(TableManager.GetCommonItemByID(equip.DataID, 0)) != null) _PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{42006}")); //锻造 if (MagicCombinWnd.IsCanUP(equip.DataID)) _PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{42007}")); //合成 //售出按钮 显示 int cansell = TableManager.GetCommonItemByID(equip.DataID, 0).CanSell; if (cansell == 1 && !equip.BindFlag) { _PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{4578}")); //出售 } _PopMenu.PushMenu(StrDictionary.GetClientDictionaryString("#{3877}")); //回收 } else { _PopMenu.gameObject.SetActive(false); } //如果本装备位已经装备物品 弹出对比tips int slotindex = equip.GetMagicSlotIndex(); GameItem CompareEquip = GameManager.gameManager.PlayerDataPool.MagicPack.GetItem(slotindex-1); if (showCompare && CompareEquip != null && CompareEquip.IsValid()) { OpenCompare(slotindex - 1); } } else if(type == ItemTooltipsLogic.ShowType.Compare) { int slotindex = equip.GetMagicSlotIndex(); GameItem CompareEquip = GameManager.gameManager.PlayerDataPool.MagicPack.GetItem(slotindex - 1); if (showCompare && CompareEquip != null && CompareEquip.IsValid()) { OpenCompare(slotindex - 1); } _PopMenu.gameObject.SetActive(false); } } bool HasMagic(int ItemID) { GameItem gameItem = GameManager.gameManager.PlayerDataPool.BackPack.GetItemByDataID(ItemID); if (gameItem == null) { GameItemContainer Container = GameManager.gameManager.PlayerDataPool.GetItemContainer(GameItemContainer.Type.TYPE_MAGICPACK); if (Container != null) { gameItem = Container.GetItemByDataID(ItemID); } } if (gameItem == null) return false; return true; } void OpenCompare(int nEquipSlot) { GameItem equip = GameManager.gameManager.PlayerDataPool.MagicPack.GetItem(nEquipSlot); if (equip != null && equip.IsValid()) { _CompareMagicInfo.gameObject.SetActive(true); _CompareMagicInfo.SetMagicInfo(equip); } } public void OnBtnPopMenu(object menuObj) { string menuStr = menuObj as string; if (menuStr == StrDictionary.GetClientDictionaryString("#{3876}")) { OnTakeOffClick(1); } else if (menuStr == StrDictionary.GetClientDictionaryString("#{3877}")) { EquipSell(); } if (menuStr == StrDictionary.GetClientDictionaryString("#{42004}")) { if (m_Equip.BindFlag == false) { MessageBoxLogic.OpenOKCancelBox(41025, 1000, delegate () { OnTakeOffClick(0); }, null); return; } OnTakeOffClick(0); } if (menuStr == StrDictionary.GetClientDictionaryString("#{42006}")) { OnShowMagicWin(1); } if (menuStr == StrDictionary.GetClientDictionaryString("#{42007}")) { OnShowMagicWin(2); } if (menuStr == StrDictionary.GetClientDictionaryString("#{4573}")) { CangKuIn(); } if (menuStr == StrDictionary.GetClientDictionaryString("#{4576}")) { CangKuOut(); } if (menuStr == StrDictionary.GetClientDictionaryString("#{3877}")) { ItemSell(); } if (menuStr == StrDictionary.GetClientDictionaryString("#{1086}")) { ItemBuyBack(); } if (menuStr == StrDictionary.GetClientDictionaryString("#{5005}")) { ShowItemGetPath(); } else if (menuStr == StrDictionary.GetClientDictionaryString("#{4578}")) { // 出售 ItemMarket(); } } void ShowItemGetPath() { var pos = UIManager.Instance().UICamera.WorldToScreenPoint(transform.position); ItemGetPathPopRoot.Show(m_Equip.DataID, pos); CloseWindow(); } 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(); } 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 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 ItemMarket() { var sysMarketItem = TableManager.GetExchangeMarketByID(m_Equip.DataID, 0); if (sysMarketItem == null) { UIManager.ShowUI(UIInfo.MarketRoot, (sucess, param) => { MarketLogic.Instance()._TagPanel.ShowPage(1); MarketLogic.Instance()._MarketPlayerLogic._TagPanel.ShowPage(1); }); } else { UIManager.ShowUI(UIInfo.MarketRoot, (sucess, param) => { MarketLogic.Instance()._TagPanel.ShowPage(0); MarketLogic.Instance()._MarketSysLogic.ShowSeletcedSell(m_Equip); }); } CloseWindow(); } void CangKuIn() { if (m_Equip != null && m_Equip.IsValid() && null != Singleton.Instance.MainPlayer) { Singleton.Instance.MainPlayer.CangKuPutIn(m_Equip); CloseWindow(); } } void CangKuOut() { if (m_Equip != null && m_Equip.IsValid() && null != Singleton.Instance.MainPlayer) { Singleton.Instance.MainPlayer.CangKuTakeOut(m_Equip); CloseWindow(); } } public void OnShowMagicWin(int type) { MagicMain.ShowMagicPageStr(type); CloseWindow(); } public void EquipSell() { 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 OnTakeOffClick(int opera) { if (m_Equip == null || m_Equip.IsValid() == false) return; //if (Singleton.Instance.MainPlayer == null) // return; int nPlayerLevel = GameManager.gameManager.PlayerDataPool.MainPlayerBaseAttr.Level; if (nPlayerLevel < m_Equip.EquipUseLevel) { GUIData.AddNotifyData("#{1255}"); //Singleton.GetInstance().MainPlayer.SendNoticMsg(false, "#{1255}"); return; } int equipProfession = m_Equip.GetProfessionRequire(); if (equipProfession > 0) { int nPlayerProfession = Singleton.Instance.MainPlayer.Profession; if (((equipProfession >> nPlayerProfession) & 1) == 0) { GUIData.AddNotifyData("#{1256}"); //Singleton.GetInstance().MainPlayer.SendNoticMsg(false, "#{1256}"); return; } } CG_HANDLE_MAGIC_WEAPON send = (CG_HANDLE_MAGIC_WEAPON)PacketDistributed.CreatePacket(MessageID.PACKET_CG_HANDLE_MAGIC_WEAPON); send.SetGuid(m_Equip.Guid); if(opera==0) send.SetHandletype((int)CG_HANDLE_MAGIC_WEAPON.EMagicWeaponHandleType.EPutOn); else send.SetHandletype((int)CG_HANDLE_MAGIC_WEAPON.EMagicWeaponHandleType.ETakerOff); send.SetPackType((int)GameItemContainer.Type.TYPE_MAGICPACK); send.SendPacket(); CloseWindow(); } }