| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- local UICardEquipListView = require("UICardTips/UICardEquipListView_Generate")
- local CardEquipItemCtr = require("Common/CardEquipItemCtr")
- function UICardEquipListView:OnAwake(data)
- self.controller = require("UICardTips/UICardEquipListCtr"):new()
- self.controller:Init(self)
- self.controller:SetData(data)
- end
- function UICardEquipListView:AddEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.CARD_LIST_REFRESH, function()
- ManagerContainer.LuaUIMgr:AttrNoticeDisplay(self.controller:GetSlotIndex())
- self:UIClose()
- end)
- end
- function UICardEquipListView:FillContent(data, uiBase)
- self.uiBase = uiBase
- local gameObject = self.uiBase:GetRoot()
- if gameObject ~= nil then
- self.gameObject = gameObject
- self.transform = gameObject.transform
- end
- self:InitGenerate(self.transform, data)
- self:Init()
- end
- function UICardEquipListView:Init()
- for i = 1, 6 do
- self["card"..i]:SetActive(false)
- end
- local cfgId = self.controller:GetData()
- local cardData = ManagerContainer.CfgMgr:GetCardDataById(cfgId)
- local slotType = cardData.CardLocation
- local slotsRoot = ManagerContainer.DataMgr.UserData:GetAllSlotInfos()
- for k,v in pairs(slotsRoot) do
- if #v.slot_list > 0 then
- local slot = v.slot_list[slotType]
- if slot.equip_id > 0 then
- local jobType, jobIcon
- local name = ""
- if k == 1 then
- local heroData = ManagerContainer.DataMgr.UserData:GetHeroData()
- local jobData = ManagerContainer.CfgMgr:GetJobDataById(heroData.configId)
- jobType = jobData.JobType
- jobIcon = jobData.JobIcon
- name = ManagerContainer.DataMgr.UserData:GetUserNickname()
- else
- local heroData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(v.hero_id)
- local heroCfgData = ManagerContainer.CfgMgr:GetPartnerDataById(heroData.configId)
- jobType = heroCfgData.JobType
- jobIcon = heroCfgData.JobIcon
- name = I18N.T(heroCfgData.Name)
- end
- self["card"..k]:SetActive(true)
- local data = {cfgId = slot.equip_id, slotType = slotType, card_list = slot.card_id_list, belongName = name}
- local cardSlotIndex = CardEquipItemCtr:SetData(self, self["card"..k], data)
- local cardSlotCount = ManagerContainer.RedPointMgr.HeroRPCtr:GetCardSlotCountByType(slotType)
- local professhion = CommonUtil.EleInTable(jobType, cardData.Profession)
- local state = false
- local isEmpty = true
- if #slot.card_id_list >= cardSlotCount then
- for k,v in pairs(slot.card_id_list) do
- if v > 0 then
- isEmpty = false
- local state1 = self:CardRecommend(v, cfgId)
- if state1 then
- state = true
- end
- else
- state = true
- end
- end
- else
- state = true
- end
- if isEmpty then
- state = professhion
- else
- state = state and professhion
- end
- self["card"..k].labelRecommend:SetActive(state)
- CommonUtil.LoadIcon(self, jobIcon, function (sprite)
- self["card"..k].jobIcon.image.sprite = sprite
- end)
- if cardSlotIndex == 0 then
- self.uiBase:AddButtonUniqueEventListener(self["card"..k].btnChange.button, self, self.ChangeCard, k, slotType, cardSlotIndex, self.controller:GetData(), slot.card_id_list)
- self["card"..k].btnEquip.button.interactable = false
- self["card"..k].btnChange.button.interactable = true
- else
- self.uiBase:AddButtonUniqueEventListener(self["card"..k].btnEquip.button, self, self.InsertCard, k, slotType, cardSlotIndex, self.controller:GetData())
- self["card"..k].btnChange.button.interactable = false
- self["card"..k].btnEquip.button.interactable = true
- end
- end
- end
- end
- end
- function UICardEquipListView:CardRecommend(oldCardId, newCardId)
- local oldCardData = ManagerContainer.CfgMgr:GetCardDataById(oldCardId)
- local newCardData = ManagerContainer.CfgMgr:GetCardDataById(newCardId)
- if newCardData.CardType == oldCardData.CardType then
- if newCardData.CardLevel == oldCardData.CardLevel then
- return newCardData.FightPower > oldCardData.FightPower
- else
- return newCardData.CardLevel > oldCardData.CardLevel
- end
- else
- return newCardData.CardType > oldCardData.CardType
- end
- end
- function UICardEquipListView:InsertCard(button, params)
- local slotIndex = params[0]
- local slotType = params[1]
- local cardSlotIndex = params[2]
- local cfgId = params[3]
- self.controller:SendInsertCard(slotIndex, slotType, cardSlotIndex, cfgId)
- ManagerContainer.RedPointMgr.HeroRPCtr:RefreshRoleCardSlotRP(slotIndex)
- end
- function UICardEquipListView:ChangeCard(button, params)
- local slotIndex = params[0]
- local slotType = params[1]
- local cardSlotIndex = params[2]
- local cfgId = params[3]
- local cardList = params[4]
- self.controller:SetSlotIndex(slotIndex)
- local data = {cardList = cardList, slotType = slotType, idx = cardSlotIndex, cfgId = cfgId, slotIndex = slotIndex, cardSlotIndex = cardSlotIndex}
- self:UIHide()
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBagCardListTips, data)
- end
- function UICardEquipListView:RemoveEventListener()
- ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
- end
- function UICardEquipListView:AddUIEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
- self.uiBase:AddButtonEventListener(self.AnyBtn.button, function ()
- self:UIClose()
- end)
- self.uiBase:AddButtonEventListener(self.btnClose.button, function ()
- self:UIClose()
- end)
- end
- function UICardEquipListView:OnHide()
- end
- function UICardEquipListView:OnShow(data)
- self.controller:SetData(data)
- self:Init()
- end
- function UICardEquipListView:OnClose()
- end
- function UICardEquipListView:OnDispose()
- end
- --强制引导
- function UICardEquipListView:BagCardInsert(owner, ownerCB)
- local target
- local cardData = ManagerContainer.CfgMgr:GetCardDataById(self.controller:GetData())
- local slotType = cardData.CardLocation
- local slotsRoot = ManagerContainer.DataMgr.UserData:GetAllSlotInfos()
- for k,v in pairs(slotsRoot) do
- if #v.slot_list > 0 then
- local slot = v.slot_list[slotType]
- if slot.equip_id > 0 then
- local name = ""
- if k == 1 then
- name = ManagerContainer.DataMgr.UserData:GetUserNickname()
- else
- local heroData = ManagerContainer.DataMgr.PartnerData:GetPartnerDataByUniqueId(v.hero_id)
- local heroCfgData = ManagerContainer.CfgMgr:GetPartnerDataById(heroData.configId)
- name = heroCfgData.Name
- end
- local data = {cfgId = slot.equip_id, slotType = slotType, card_list = slot.card_id_list, belongName = name}
- local cardSlotIndex = CardEquipItemCtr:SetData(self, self["card"..k], data)
- if cardSlotIndex == 0 then
- target = self["card"..k].btnChange
- else
- target = self["card"..k].btnEquip
- end
- if target then
- break
- end
- end
- end
- end
- if target == nil then
- if owner and ownerCB then
- ownerCB(owner)
- return
- end
- end
- if owner and ownerCB then
- ownerCB(owner, target)
- return
- end
- end
- return UICardEquipListView
|