| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- local UIGuildWarBuffView = require("UIGuildWar/UIGuildWarBuffView_Generate")
- function UIGuildWarBuffView:OnAwake(data)
- self.controller = require("UIGuildWar/UIGuildWarBuffCtr"):new()
- self.controller:Init(self)
- self.controller:SetData(data)
- end
- function UIGuildWarBuffView:AddEventListener()
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_WAR_BATTLE_FIELD_ENDED, self, self.OnBattleFieldEnded)
- ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.GUILD_WAR_BATTLE_SELF_DATA_CHANGED, self, self.OnSelfDataChanged)
- end
- function UIGuildWarBuffView: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 UIGuildWarBuffView:Init()
- self.buyBuffItemPool = {self.guildWarBuyBuffItem}
- self:RefreshView()
- end
- function UIGuildWarBuffView:RemoveEventListener()
- ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
- end
- function UIGuildWarBuffView:AddUIEventListener()
- self.uiBase:AddButtonUniqueEventListener(self.AnyBtn.button, self, self.OnClickCloseBtn)
- self.uiBase:AddButtonUniqueEventListener(self.btnClose.button, self, self.OnClickCloseBtn)
- end
- function UIGuildWarBuffView:OnHide()
- end
- function UIGuildWarBuffView:OnShow(data)
- self.controller:SetData(data)
- end
- function UIGuildWarBuffView:OnClose()
- end
- function UIGuildWarBuffView:OnDispose()
- if self.buyBuffItemPool then
- for _,buyBuffItem in pairs(self.buyBuffItemPool) do
- if buyBuffItem and buyBuffItem ~= self.guildWarBuyBuffItem then
- CommonUtil.DestroyGO(buyBuffItem.gameObject)
- end
- end
- self.buyBuffItemPool = nil
- end
- self.controller:OnDispose()
- end
- function UIGuildWarBuffView:OnBattleFieldEnded(battleIdx)
- local battleFieldData = self.controller:GetBattleFieldData()
- if battleFieldData and battleFieldData.id ~= battleIdx then return end
- self:UIClose()
- ManagerContainer.LuaUIMgr:CloseMessageBox('GuildWarBuyBuffTip')
- end
- function UIGuildWarBuffView:OnSelfDataChanged()
- self:RefreshView()
- end
- function UIGuildWarBuffView:OnClickCloseBtn()
- self:UIClose()
- end
- function UIGuildWarBuffView:SureBuy(buffCfg)
- if not buffCfg then return end
- local battleFieldData = self.controller:GetBattleFieldData()
- local lv = 0
- if battleFieldData and battleFieldData.buffDic then
- lv = battleFieldData.buffDic[buffCfg.Id] or 0
- end
- lv = lv + 1
- local price = buffCfg.Price
- if price and price[lv] then
- local costCfgId = price[lv][1]
- local costNum = price[lv][2]
- local ownNum = self.controller:GetOwnResCountByItemId(costCfgId)
- if ownNum < costNum then
- CommonUtil.ItemNotEnoughHandle(costCfgId, Enum.UIPageName.UIGuildWar)
- self:UIClose()
- return
- end
- local errorCode = self.controller:SendGuildWarBuyBuffReq(buffCfg.Id)
- if errorCode ~= 0 then
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay(errorCode)
- end
- else
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildWarBattle13')
- end
- end
- function UIGuildWarBuffView:OnClickBuyBtn(_, params)
- local buffCfg = params[0]
- if not buffCfg then return end
- local battleFieldData = self.controller:GetBattleFieldData()
- local lv = 0
- if battleFieldData and battleFieldData.buffDic then
- lv = battleFieldData.buffDic[buffCfg.Id] or 0
- end
- lv = lv + 1
- local price = buffCfg.Price
- if price and price[lv] then
- local costCfgId = price[lv][1]
- local costNum = price[lv][2]
- local ownNum = self.controller:GetOwnResCountByItemId(costCfgId)
- if ownNum < costNum then
- CommonUtil.ItemNotEnoughHandle(costCfgId, Enum.UIPageName.UIGuildWar)
- self:UIClose()
- return
- end
- local itemName = tostring(costNum)
- local cfgData = ManagerContainer.CfgMgr:GetItemById(costCfgId)
- if cfgData then
- itemName = itemName .. string.formatbykey(cfgData.Name)
- end
- local data = {'GuildWarBuyBuffTip', {buffCfg.Desc, itemName}, buffCfg, self, self.SureBuy}
- ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UINoticeTips, data)
- else
- ManagerContainer.LuaUIMgr:ErrorNoticeDisplay('GuildWarBattle13')
- end
- end
- function UIGuildWarBuffView:RefreshView()
- local buffCfgs = self.controller:GetBuffCfgs()
- local battleFieldData = self.controller:GetBattleFieldData()
- local len = #buffCfgs
- for i = 1, len do
- local buffCfg = buffCfgs[i]
- local itemLua = self:GetBuyBuffItem(i)
- itemLua:SetActive(true)
- itemLua.icon.image.enabled = false
- itemLua.icon.image.sprite = nil
- CommonUtil.LoadIcon(self, buffCfg.Icon, function(sprite)
- if sprite then
- itemLua.icon.image.sprite = sprite
- itemLua.icon.image.enabled = true
- end
- end)
- local lv = 0
- if battleFieldData and battleFieldData.buffDic then
- lv = battleFieldData.buffDic[buffCfg.Id] or 0
- end
- itemLua.num.text.text = tostring(lv)
- itemLua.dsc.text.text = string.formatbykey(buffCfg.Desc)
- local price = buffCfg.Price
- for j = 1, 10 do
- local lvLua = itemLua['lv' .. tostring(j)]
- if price and price[j] then
- lvLua:SetActive(true)
- lvLua.uIImageSwitchSprite:ChangeSprite((lv < j) and 0 or 1)
- else
- lvLua:SetActive(false)
- end
- end
- self.uiBase:AddButtonUniqueEventListener(itemLua.btnBuy.button, self, self.OnClickBuyBtn, buffCfg)
- end
- for i = len + 1, #self.buyBuffItemPool do
- local itemLua = self.buyBuffItemPool[i]
- itemLua:SetActive(false)
- end
- end
- function UIGuildWarBuffView:GetBuyBuffItem(offsetIdx)
- local itemLua = self.buyBuffItemPool[offsetIdx]
- if not itemLua then
- local newGo = UnityEngine.GameObject.Instantiate(self.guildWarBuyBuffItem.gameObject)
- itemLua = CommonUtil.BindGridViewItem2Lua(self, 'GuildWarBuyBuffItem', newGo)
- itemLua.transform:SetParent(self.dscBox.transform)
- itemLua.transform.localPosition = Vector3.zero
- itemLua.transform.localScale = Vector3.one
- itemLua.transform.localRotation = Quaternion.identity
- self.buyBuffItemPool[offsetIdx] = itemLua
- end
- return itemLua
- end
- return UIGuildWarBuffView
|