123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278 |
- ---@class KLBossOfferRewardPanel:UIKmlLuaPanelBase
- ---@field view KLBossOfferRewardPanelView
- ---@field bossLevelBtnItem KLBossOfferRewardBtnItem[]
- ---@field select_btn_level number 选择的按钮对应的等级
- ---@field select_btn KLBossOfferRewardBtnItem
- ---@field bossLevelModelItem KLBossOfferRewardModelItem[]
- local KLBossOfferRewardPanel = class(UIKmlLuaPanelBase)
- local this =KLBossOfferRewardPanel
- E_ReceiveState = {
- CanReceive = enum(0),
- HadReceive = enum(1)
- }
- ---创建时调用一次
- function this:Init()
- SL.HideMainPanel()
- GUI:DataListInitData(self.view.levelList,function()
- return self:BossBtnDataListItemCountFunc()
- end,function(realIndex)
- return self:BossBtnDataListItemGetFunc(realIndex)
- end,function(realIndex, kmlcontrol)
- return self:BossBtnDataListItemInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:BossBtnDataListItemUpdateFunc(realIndex, kmlcontrol)
- end)
- self.bossLevelBtnItem = {}
- GUI:DataListInitData(self.view.bossDataList,function()
- return self:BossDataListItemCountFunc()
- end,function(realIndex)
- return self:BossDataListItemGetFunc(realIndex)
- end,function(realIndex, kmlcontrol)
- return self:BossDataListItemInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:BossDataListItemUpdateFunc(realIndex, kmlcontrol)
- end)
- self.bossLevelModelItem = {}
-
- GUI:DataListInitData(self.view.bossRewardList,function()
- return self:BossRewardDataListItemCountFunc()
- end,function(realIndex)
- return self:BossRewardDataListItemGetFunc(realIndex)
- end,function(realIndex, kmlcontrol)
- return self:BossRewardDataListItemInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:BossRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
- end)
- self.bossRewardItem = {}
- end
- function this:BossBtnDataListItemCountFunc()
- return #self.allBossLevelData
- end
- function this:BossBtnDataListItemGetFunc(realIndex)
- local item = GUI:UIPanel_Open("dev/outui/BossOfferReward/Item/KLBossOfferRewardBtn/KLBossOfferRewardBtnItem",self.view.levelList,self,{},true)
-
- self.bossLevelBtnItem[item.view.root] = item
- return item.view.root
- end
- function this:BossBtnDataListItemInitFunc(realIndex, kmlcontrol)
-
- end
- function this:BossBtnDataListItemUpdateFunc(realIndex, kmlcontrol)
- local data = self.allBossLevelData[realIndex + 1]
- self.bossLevelBtnItem[kmlcontrol]:RefreshItem(data,self.select_btn_level,self)
- if data == self.select_btn_level then
- self.select_btn = self.bossLevelBtnItem[kmlcontrol]
- end
- end
- function this:BossDataListItemCountFunc()
- return #self.bossModelShowData
- end
- function this:BossDataListItemGetFunc(realIndex)
- local item = GUI:UIPanel_Open("dev/outui/BossOfferReward/Item/KLBossOfferRewardModel/KLBossOfferRewardModelItem",self.view.bossDataList,self,{},true)
-
- self.bossLevelModelItem[item.view.root] = item
- return item.view.root
- end
- function this:BossDataListItemInitFunc(realIndex, kmlcontrol)
- end
- function this:BossDataListItemUpdateFunc(realIndex, kmlcontrol)
- local data = self.bossModelShowData[realIndex + 1]
- self.bossLevelModelItem[kmlcontrol]:RefreshItem(data)
- end
- function this:BossRewardDataListItemCountFunc()
- return #self.bossRewardData
- end
- function this:BossRewardDataListItemGetFunc(realIndex)
- local data = self.bossRewardData[realIndex + 1]
- local item = GUI:Item_Create(self.view.bossRewardList,{
- width = "60",
- height = "60",
- itemid = data[1],
- mfixsize = "60,60",
- tips = "1",
- itemcustomcount = SL:GetSimpleNumber(data[2],0),
- textcolor = "#FBD994"
- })
- GUI:AddOnClickEvent(item,self,function()
- SL:OpenTips(nil, data[1])
- end)
- self.bossRewardItem[item] = item
- return item
- end
- function this:BossRewardDataListItemInitFunc(realIndex, kmlcontrol)
-
- end
- function this:BossRewardDataListItemUpdateFunc(realIndex, kmlcontrol)
- local data = self.bossRewardData[realIndex + 1]
- local item = self.bossRewardItem[kmlcontrol]
- GUI:Item_UpdataData(item,{
- itemid = data[1],
- itemcustomcount = SL:GetSimpleNumber(data[2],0),
- })
- GUI:AddOnClickEvent(item,self,function()
- SL:OpenTips(nil, data[1])
- end)
- end
- ---创建或者刷新界面数据时调用
- function this:Refresh()
- self.bossModelShowData = {}
- self.allBossLevelData = InfoManager.bossOfferRewardInfo:GetCanShowLevel()
-
- self:InitUIShow()
- self:ButtomReceiveBtnState()
- end
- function this:InitUIShow()
- GUI:setVisible(self.view.btn_reward,false)
- GUI:setVisible(self.view.img_all_receive,false)
- self:InitSelectBtn()
- end
- function this:InitSelectBtn()
- local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
- --local playerLevel = 60
- self.select_btn_level = nil
- local index = 0
- for i, level in ipairs(self.allBossLevelData) do
- if not self.select_btn_level then
- self.select_btn_level = level
- index = i-1
- else
- if level <= playerLevel and level > self.select_btn_level then
- self.select_btn_level = level
- index = i-1
- end
- end
- end
- self:RefreshRightList()
- end
- function this:RefreshRightList()
- local groupInfo = cfg_newarea_offerreward_post.GetGroupInfo()
- local levelRewardInfo = cfg_newarea_offerreward_post.GetGroupRewardInfo()
- local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
- if playerLevel >= self.select_btn_level then
- self.bossModelShowData = groupInfo[self.select_btn_level]
- GUI:setVisible(self.view.txt_lock,false)
- else
- self.bossModelShowData = {}
- GUI:setVisible(self.view.txt_lock,true)
- local levelStr = SL:GetColorText(string.format("%d级",self.select_btn_level),SL:GetColorCfg(271).color)
- GUI:Text_setString(self.view.txt_lock,table.concat{"等级达到",levelStr,"解锁本层悬赏"})
- end
-
- self.bossRewardData = levelRewardInfo[self.select_btn_level]
- self:SortModelShowData()
- GUI:DataListUpdateData(self.view.levelList)
- GUI:DataListUpdateData(self.view.bossDataList)
- GUI:DataListUpdateData(self.view.bossRewardList)
- GUI:SetScrollView_scrollpos(self.view.levelContent,"1")
- end
- function this:SortModelShowData()
- table.sort(self.bossModelShowData,function(a, b)
- local status_a = InfoManager.bossOfferRewardInfo:GetMonsterStateByMonserId(a.monsterId)
- local status_b = InfoManager.bossOfferRewardInfo:GetMonsterStateByMonserId(b.monsterId)
- local id_a = cfg_newarea_offerreward_post.GetCfgByMonsterId(a.monsterId).id
- local id_b = cfg_newarea_offerreward_post.GetCfgByMonsterId(b.monsterId).id
- if status_a == E_MonsterShowState.CanReceive and status_b == E_MonsterShowState.CanReceive then
- if status_a == status_b then
- return id_a < id_b
- end
- end
- if status_a == E_MonsterShowState.CanReceive then
- return true
- end
- if status_b == E_MonsterShowState.CanReceive then
- return false
- end
-
- if status_a == E_MonsterShowState.HadReceive and status_b == E_MonsterShowState.HadReceive then
- if status_a == status_b then
- return id_a < id_b
- end
- end
- if status_a == E_MonsterShowState.HadReceive then
- return false
- end
- if status_b == E_MonsterShowState.HadReceive then
- return true
- end
- return id_a < id_b
- end)
- end
- ---底部领取按钮状态展示
- function this:ButtomReceiveBtnState()
- local state = InfoManager.bossOfferRewardInfo:GetLevelRewardState(self.select_btn_level)
- if state == E_LevelRewardState.HadReceive then
- GUI:setVisible(self.view.img_all_receive,true)
- GUI:setVisible(self.view.btn_reward,false)
- else
- GUI:setVisible(self.view.img_all_receive,false)
- GUI:setVisible(self.view.btn_reward,true)
- end
- end
- function this:HideSelectLevel()
- self.select_btn:HideItem()
- end
- function this:SelectLevel(level,btn)
- self.select_btn = btn
- self.select_btn_level = level
- self:RefreshRightList()
- self:ButtomReceiveBtnState()
- end
- ---注册UI事件和服务器消息
- function this:RegistEvents()
- GUI:AddOnClickEvent(self.view.btn_close,self,self.CloseBtn)
- GUI:AddOnClickEvent(self.view.btn_reward,self,self.RewardBtn)
- SL:RegisterLUAEvent(LUA_EVENT_BOSS_OFFER_CHANGE,self.BossOfferDataChange,self)
- end
- function this:CloseBtn()
- GUI:UIPanel_Close("dev/outui/BossOfferReward/Panel/KLBossOfferReward/KLBossOfferRewardPanel")
- SL.ShowMainPanel()
- end
- function this:RewardBtn()
- local state = InfoManager.bossOfferRewardInfo:GetLevelRewardState(self.select_btn_level)
- if state == E_LevelRewardState.NotCanReceive then
- SL:TipMessage("完成所有".. self.select_btn_level .. "级悬赏任务后领取", 3, NoticeType.NoticeMid )
- else
- local _group = cfg_newarea_offerreward_post.GetGroupIdByLevel(self.select_btn_level)
- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_BOUNTY_GROUP_REWARD,{id = _group })
- end
- end
- function this:BossOfferDataChange()
- self:RefreshRightList()
- self:ButtomReceiveBtnState()
- end
- function this:Close()
- self.allBossLevelData = nil
- self.bossRewardData = nil
- self.bossModelShowData = nil
- end
- return this
|