123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- ---@class KLActivityDetailPanel:UIKmlLuaPanelBase
- ---@field view KLActivityDetailPanelView
- local KLActivityDetailPanel = class(UIKmlLuaPanelBase)
- local this =KLActivityDetailPanel
- ---创建时调用一次
- function this:Init()
- self.levelData_all_item = {}
- GUI:DataListInitData(self.view.levelList,function()
- return self:LevelDataListItemCountFunc()
- end,function(realIndex)
- return self:LevelDataListItemGetFunc(realIndex)
- end,function(realIndex, kmlcontrol)
- return self:LevelDataListItemInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:LevelDataListItemUpdateFunc(realIndex, kmlcontrol)
- end)
-
- self.reward_all_item = {}
- GUI:DataListInitData(self.view.rewardList,function()
- return self:RewardDataListItemCountFunc()
- end,function(realIndex)
- return self:RewardDataListItemGetFunc(realIndex)
- end,function(realIndex, kmlcontrol)
- return self:RewardDataListItemInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:RewardDataListItemUpdateFunc(realIndex, kmlcontrol)
- end)
- end
- ---创建或者刷新界面数据时调用
- function this:Refresh()
- self.args = tonumber(self.args)
- SL.HideMainPanel()
- self:RefreshLevelList()
- end
- ---注册UI事件和服务器消息
- function this:RegistEvents()
- SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_DEVIL_SQUARE_PANEL,self.RES_DEVIL_SQUARE_PANEL,self)
- SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_BLOODY_CASTLE_PANEL,self.RES_BLOODY_CASTLE_PANEL,self)
-
- SL:RegisterLUAEvent(SELECT_LEVEL_STAGE,self.SELECT_LEVEL_STAGE,self)
- SL:RegisterLUAEvent(LUA_EVENT_BAG_CHANGE_AFTER,self.LUA_EVENT_BAG_CHANGE_AFTER,self)
- GUI:AddOnClickEvent(self.view.addCountBtn,self,self.OnCliCkAddCountBtn)
- GUI:AddOnClickEvent(self.view.enterBtn,self,self.OnCliCkEnterBtn)
- GUI:AddOnClickEvent(self.view.desBtn,self,self.OnCliCkDesBtn)
- GUI:AddOnClickEvent(self.view.closeBtn,self,self.OnCliCkCloseBtn)
- GUI:AddOnClickEvent(self.view.bgClose,self,self.OnCliCkCloseBtn)
- GUI:AddOnClickEvent(self.view.ticketBtn,self,self.OnCliCkTicketBtn)
- end
- function this:RefreshLevelList()
- GUI:setVisible(self.view.bloodTitle,self.args == EActivityType.BloodyCastle)
- GUI:setVisible(self.view.devilTitle,self.args == EActivityType.DevilSquare)
- GUI:setVisible(self.view.bloodTitleicon,self.args == EActivityType.BloodyCastle)
- GUI:setVisible(self.view.devilTitleicon,self.args == EActivityType.DevilSquare)
- local scale = self.args == EActivityType.BloodyCastle and 0.6 or 1
- local y = self.args == EActivityType.BloodyCastle and -11 or 0
- GUI:setScale(self.view.ticketModel,scale)
- GUI:setScale(self.view.ticketModel,scale)
- GUI:setPositionY(self.view.ticketModel,y)
-
- local tblList = SL:GetConfigTable("cfg_rep")
- self.levelData = {}
- self.curSelectLevelStage = 1
- local index = 0
- local level = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
- ---@param v cfg_rep_column
- for i, v in pairs(tblList) do
- if self.args == v.type then
- local isMeet = level >= v.level[1] and level <= v.level[2]
- if isMeet and self.curSelectLevelStage < v.repLevel then
- self.curSelectLevelStage = v.repLevel
- index = #self.levelData + 1
- end
- table.insert(self.levelData,v)
- end
- end
- local h = #self.levelData*53
- GUI:setContentSize(self.view.levelLayout,165,h)
- ---@type cfg_rep_column
- local tbl = SL:GetConfigMultiKeys("cfg_rep",self.args,self.curSelectLevelStage,"type","repLevel")
- if self.args == EActivityType.DevilSquare then
- SL:SendLuaNetMsg(LuaMessageIdToSever.GET_DEVIL_SQUARE_PANEL,tbl.id)
- else
- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_BLOODY_CASTLE_PANEL,tbl.id)
- end
- GUI:DataListUpdateData(self.view.levelList)
- GUI:setPositionY(self.view.levelLayout,index>7 and -67+ (index-8)*53+25 or -67)
- end
- function this:LevelDataListItemCountFunc()
- return #self.levelData
- end
- function this:LevelDataListItemGetFunc(realIndex)
- local data = self.levelData[realIndex + 1]
- local item = GUI:UIPanel_Open("dev/outui/Activity/Item/KLLevel/KLLevelItem",self.view.levelList,self,data,true)
- self.levelData_all_item[item.view.root] = item
- return item.view.root
- end
- function this:LevelDataListItemInitFunc(realIndex, kmlcontrol)
- end
- function this:LevelDataListItemUpdateFunc(realIndex, kmlcontrol)
- local data = self.levelData[realIndex + 1]
- self.levelData_all_item[kmlcontrol]:RefreshItem(data)
- end
- function this:RES_BLOODY_CASTLE_PANEL(id,message)
- self:RefreshCopyInfo(self.curSelectLevelStage,message["2"],message["3"],tonumber(message["4"]))
- end
- function this:RES_DEVIL_SQUARE_PANEL(id,message)
- self:RefreshCopyInfo(self.curSelectLevelStage,message["2"],message["3"],tonumber(message["4"]))
- end
- ---@param data cfg_rep_column
- function this:SELECT_LEVEL_STAGE(_,data)
- if self.curSelectLevelStage ~= data.repLevel then
- self.curSelectLevelStage = data.repLevel
- ---@type cfg_rep_column
- local tbl = SL:GetConfigMultiKeys("cfg_rep",self.args,self.curSelectLevelStage,"type","repLevel")
- SL:SendLuaNetMsg(LuaMessageIdToSever.GET_DEVIL_SQUARE_PANEL,tbl.id)
- end
- end
- function this:LUA_EVENT_BAG_CHANGE_AFTER()
- self:RefreshCostItem()
- end
- function this:RefreshCopyInfo(levelStage,leftCount,isOpen,time)
- self.leftCount = leftCount
- self.isOpen = isOpen
- if SL:HasConfigTwoKeys("cfg_rep",self.args,levelStage,"type","repLevel") then
- ---@type cfg_rep_column
- local tbl = SL:GetConfigMultiKeys("cfg_rep",self.args,levelStage,"type","repLevel")
- local levelStr = string.split(tbl.name[1]," ")
- GUI:Text_setString(self.view.level,levelStage.."级(".. levelStr[2] ..")")
-
- local definse = SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", tbl.recommend[1])
- local isMeet = definse >= tbl.recommend[2]
- local color = isMeet and "#28E529" or "#ff2323"
- local recommend = isMeet and tbl.recommend[2] or tbl.recommend[2] .. "(您的防御值低于推荐值)"
- recommend = GUIUtil.GetColorText(recommend,color)
- GUI:Text_setString(self.view.defense,recommend)
-
- ---@type cfg_activity_rule_column
- local activityTbl = SL:GetConfigMultiKeys("cfg_activity_rule",self.args,"id")
- if not isOpen then
- local countdown = time-SL:GetMetaValue(EMetaVarGetKey.SERVER_TIME)
- countdown = math.floor(countdown/1000)
- GUI:SetControl_time(self.view.nextOpenTime,countdown)
- end
- GUI:Text_setString(self.view.openTime,activityTbl.timeText)
- GUI:setVisible(self.view.nextOpenTime,not isOpen)
- GUI:setVisible(self.view.openTxt,isOpen)
- self:RefreshCostItem()
- self:RefreshReward()
-
- isMeet = leftCount > 0
- color = isMeet and "#28E529" or "#ff2323"
- GUI:Text_setString(self.view.leftcount,GUIUtil.GetColorText(leftCount.."次",color))
- end
- end
- function this:RefreshCostItem()
- ---@type cfg_rep_column
- local tbl = SL:GetConfigMultiKeys("cfg_rep",self.args,self.curSelectLevelStage,"type","repLevel")
- local ownerTicket = SL:GetBagItemCount(tbl.itemId[1])
- isMeet = tbl.itemId[2] <= ownerTicket
- color = isMeet and "#28E529" or "#ff2323"
- GUI:Text_setString(self.view.ticketCount,GUIUtil.GetColorText(ownerTicket.."/"..tbl.itemId[2],color))
- ---@type cfg_item_column
- local itemTbl = SL:GetConfig("cfg_item",tbl.itemId[1],"id")
- ---@type cfg_model_charactor_column
- local modelTbl = SL:GetConfig("cfg_model_charactor",itemTbl.shape[1],"id")
- GUI:Model_setSrc(self.view.ticketModel,modelTbl.path)
- end
- function this:RefreshReward()
- ---@type cfg_rep_column
- local tbl = SL:GetConfigMultiKeys("cfg_rep",self.args,self.curSelectLevelStage,"type","repLevel")
- self.rewardData = tbl.UIreward
- GUI:DataListUpdateData(self.view.rewardList)
- end
- function this:RewardDataListItemCountFunc()
- return #self.rewardData
- end
- function this:RewardDataListItemGetFunc(realIndex)
- local data = self.rewardData[realIndex + 1]
- local message = {cfgId = data[1],count="",width = 70,height=70}
- local item = GUI:UIPanel_Open("dev/outui/Activity/Item/KLItem/KLItemItem",self.view.rewardList,self,message,true)
- self.reward_all_item[item.view.root] = item
- return item.view.root
- end
- function this:RewardDataListItemInitFunc(realIndex, kmlcontrol)
- end
- function this:RewardDataListItemUpdateFunc(realIndex, kmlcontrol)
- local data = self.rewardData[realIndex + 1]
- self.reward_all_item[kmlcontrol]:RefreshItem(data[1],"")
- end
- function this:OnCliCkAddCountBtn()
- ---@type cfg_rep_column
- local tbl = SL:GetConfigMultiKeys("cfg_rep",self.args,self.curSelectLevelStage,"type","repLevel")
- SL:CommonItemGetPath(nil,tbl.itemId[1])
- end
- function this:OnCliCkEnterBtn()
- local isInTeam = SL:GetMetaValue(EMetaVarGetKey.TEAM_IS_IN)
- if isInTeam then
- local isNoLeader = SL:GetMetaValue(EMetaVarGetKey.TEAM_IS_TEAM_LEADER)
- if not isNoLeader then
- SL:TipMessage("您不是队长",1,NoticeType.NoticeMid)
- return
- end
- end
-
- ---@type cfg_rep_column
- local tbl = SL:GetConfigMultiKeys("cfg_rep",self.args,self.curSelectLevelStage,"type","repLevel")
- local ownerTicket = SL:GetBagItemCount(tbl.itemId[1])
- local tip
- if not self.isOpen then
- tip = "副本未开启"
- elseif ownerTicket < tbl.itemId[2] then
- tip = "门票不足"
- ---@type cfg_rep_column
- SL:CommonItemGetPath(nil,tbl.itemId[1])
- elseif self.leftCount <= 0 then
- tip = "今日次数不足"
- end
- if not tip then
- ---进入副本
- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_ENTER_DUPLICATE,tbl.id)
- else
- SL:TipMessage(tip,1,NoticeType.NoticeMid)
- end
- end
- function this:OnCliCkDesBtn()
- local des = ""
- local title = ""
- if self.args == EActivityType.DevilSquare then
- des = "1、开启时间:从1:00开始,每2小时开启一场一天总开启12场。\n2、不同等级可进入不同层恶魔广场,每次进入恶魔广场需消耗对应数量的恶魔通行证。\n3、恶魔广场内怪物密集、刷新频率高、击杀怪物经验多,此副本内挂机打怪可获得大量经验。\n4.恶魔广场可组队进入,击杀怪物均分经验。\n5.组队进入恶魔广场后,击杀怪物可获得积分,结算时根据积分可获得额外奖励。\n6.根据积分数量对组队成员进行排名,恶魔广场结算时根据排名前三名可获得额外奖励。"
- title = "恶魔广场"
- elseif self.args == EActivityType.BloodyCastle then
- des = "1、开启时间:从1:00开始,每2小时开启一场一天总开启12场。\n2、不同等级可进入不同层血色城堡,每次进入血色城堡需消耗1个透明披风。\n3、血色城堡内怪物密集、刷新频率高、击杀怪物经验多,此副本内挂机打怪可获得大量经验\n4、完成血色城堡任务:攻破城门、打开水晶棺交还大天使之武器后,可额外获得奖励。\n5、血色城堡可组队一起进入,击杀怪物经验平分。队伍内人数越多,经验加成越高,2人+20%,3人队+40%,4人队+60%,5人队+80%,怪物经验共享有效范围为20码。\n6、为保证队伍其他成员收益,此副本内限制组队玩家对金币/白装的拾取设置,单人进入不限制。"
- title = "血色城堡"
- end
- GUI:UIPanel_Open("dev/outui/Activity/Panel/KLDescribeDetail/KLDescribeDetailPanel",nil,nil,{title=title,content=des})
- end
- function this:OnCliCkCloseBtn()
- GUI:UIPanel_Close("dev/outui/Activity/Panel/KLActivityDetail/KLActivityDetailPanel")
- SL.ShowMainPanel()
- end
- function this:OnCliCkTicketBtn()
- ---@type cfg_rep_column
- local tbl = SL:GetConfigMultiKeys("cfg_rep",self.args,self.curSelectLevelStage,"type","repLevel")
- SL:OpenTips(nil, tbl.itemId[1])
- end
- function this:Close()
- SL.ShowMainPanel()
- end
- return this
|