123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279 |
- ---@class KLBraveTrialsPanel:UIKmlLuaPanelBase
- ---@field view KLBraveTrialsPanelView
- local KLBraveTrialsPanel = class(UIKmlLuaPanelBase)
- local this =KLBraveTrialsPanel
- ---创建时调用一次
- function this:Init()
- self.braveType = 12001
- ---@type cfg_global_column
- local global = SL:GetConfig("cfg_repGlobal", 12001001)
- if global then
- local trialsInfo = global.value
- local trialsTbl = string.split(trialsInfo, '#')
- self.firstLevel = tonumber(trialsTbl[1])
- self.finalLevel = tonumber(trialsTbl[2])
- self.totalLevel = self.finalLevel - self.firstLevel + 1
- end
- GUI:OSAScrollView_Initialized(self.view.osascroll_bravetrials,self.ItemGetFun,self.ItemUpdateFun,self)
- GUI:OSAScrollView_SetItemSizeGetFun(self.view.osascroll_bravetrials,self.ItemSizeGetFun,self)
- GUI:DataListInitData( self.view.list_pass_reward,function()
- return self:ListItemCountFunc2()
- end,function(realIndex)
- return self:ListItemGetFunc2(realIndex)
- end,function(realIndex, kmlcontrol)
- return self:ListItemInitFunc2(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:ListItemUpdateFunc2(realIndex, kmlcontrol)
- end)
- end
- function this:ItemGetFun()
- local item = GUI:UIPanel_Open("dev/outui/BraveTrials/Item/KLBraveTrials/KLBraveTrialsItem", self.view.list_brave_trials, self, { firstLevel = self.firstLevel, finalLevel = self.finalLevel }, true)
- return item
- end
- ---@param item KLBraveTrialsItem
- function this:ItemUpdateFun(item, index)
- ---@type cfg_rep_column
- local data = self.braveTrialsShowTbl[index + 1]
- if data.id == self.player_challenge_select then
- item:RefreshUI(data, true)
- self.select_item = item
- else
- item:RefreshUI(data)
- end
- end
- function this:ItemSizeGetFun(index)
- if index == 0 then
- return 443
- elseif index == self.finalLevel - self.firstLevel then
- return 280
- else
- return 125
- end
- end
- function this:ListItemCountFunc2()
- return #self.passReward
- end
- function this:ListItemGetFunc2(realIndex)
- end
- function this:ListItemInitFunc2(realIndex, kmlcontrol)
- end
- function this:ListItemUpdateFunc2(realIndex, kmlcontrol)
- local reward = self.passReward[realIndex + 1]
- local pass_reward = GUI:GetChildControl(self.view.list_pass_reward,realIndex,'pass_reward')
- local img_pass_reward_click = GUI:GetChildControl(self.view.list_pass_reward,realIndex,'img_pass_reward_click')
- GUI:Item_setItemId(pass_reward, reward[1])
- GUI:Item_UpdataData(pass_reward, { itemcount = reward[2] })
- GUI:AddOnClickEvent(img_pass_reward_click, self, self.ShowItemTips, { id = reward[1] })
- end
- function this:ShowItemTips(_, eventData)
- SL:OpenTips(nil, eventData.id)
- end
- ---注册UI事件和服务器消息
- function this:RegistEvents()
- GUI:AddOnClickEvent(self.view.btn_start_challenge, self, self.StartChallenge)
- GUI:AddOnClickEvent(self.view.btn_close, self, self.CloseSelf)
- GUI:AddOnClickEvent(self.view.img_reward_click, self, self.ReceiveFinalReward)
- SL:RegisterLuaNetMsg(LuaMessageIdToClient.BRAVE_TEST_PANEL_INFO, self.BRAVE_TEST_PANEL_INFO, self)
- SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_GET_ACTIVITY_COUNT, self.RES_GET_ACTIVITY_COUNT, self)
- SL:RegisterLuaNetMsg(LuaMessageIdToClient.BRAVE_TEST_STAGE_REWARD, self.BRAVE_TEST_STAGE_REWARD, self)
- end
- ---创建或者刷新界面数据时调用
- function this:Refresh()
- SL:HideMainPanel()
- ---@type cfg_rep_column[]
- local tbl = SL:GetConfigTable("cfg_rep")
- ---@type cfg_rep_column[]
- self.braveTrialsTbl = {}
- self.braveTrialsShowTbl = {}
- for i, v in ipairs(tbl) do
- if v.type == self.braveType then
- self.braveTrialsTbl[#self.braveTrialsTbl + 1] = v
- end
- end
- table.sort(self.braveTrialsTbl, function(a, b)
- return a.id > b.id
- end)
- self.select_control = nil
- SL:SendLuaNetMsg(LuaMessageIdToSever.BRAVE_TEST_PANEL_INFO)
- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_ACTIVITY_COUNT, self.braveType)
- end
- function this:RefreshLevelMainInfo(levelId, item)
- ---点击正好点到复用的item时,不隐藏点击背景
- if self.select_item and self.select_item ~= item then
- self.select_item:HideChoseBG()
- end
- self.select_item = item
- ---@type cfg_rep_column
- local levelInfo = SL:GetConfig("cfg_rep", levelId)
- self.player_challenge_select = levelInfo.id
- ---@type cfg_monster_column
- local monster = SL:GetConfig("cfg_monster", levelInfo.monsterUI)
- ---@type cfg_model_monster_column
- local monster_model = SL:GetConfig("cfg_model_monster", monster.appr)
- GUI:Model_setSrc(self.view.model_show_monster, monster_model.path)
-
- self.passReward = levelInfo.reward
- GUI:DataListUpdateData(self.view.list_pass_reward)
- GUI:Text_setString(self.view.text_current_level, levelInfo.name[1])
-
- GUI:SetActive(self.view.btn_start_challenge, true)
- local open_server_day = 0
- if SL:GetEnterRoleRes() and SL:GetEnterRoleRes().openServerTime then
- local defTime = os.time() - SL:GetEnterRoleRes().openServerTime / 1000
- if defTime > 0 then
- open_server_day = math.ceil(defTime / 86400)
- end
- end
- local player_level = SL:GetMetaValue("LEVEL")
- if open_server_day >= levelInfo.startDay then
- if player_level >= levelInfo.level[1] and player_level <= levelInfo.level[2] then
- GUI:Text_setString(self.view.text_challenge_tips, " ")
- GUI:Button_setGrey(self.view.btn_start_challenge, false)
- GUI:Button_setBright(self.view.btn_start_challenge, true)
- else
- GUI:Text_setString(self.view.text_challenge_tips, "开启等级:" .. levelInfo.level[1])
- GUI:Button_setGrey(self.view.btn_start_challenge, true)
- GUI:Button_setBright(self.view.btn_start_challenge, false)
- end
- else
- GUI:Text_setString(self.view.text_challenge_tips, "开服第" .. levelInfo.startDay .. "天开启")
- GUI:Button_setGrey(self.view.btn_start_challenge, true)
- GUI:Button_setBright(self.view.btn_start_challenge, false)
- end
-
- if self.player_challenge_level ~= levelInfo.id or self.passLevel then
- GUI:SetActive(self.view.btn_start_challenge, false)
- end
-
- self:RefreshChallengeTime()
- end
- function this:RefreshChallengeTime()
- if self.player_challenge_time then
- if self.player_challenge_time > 0 then
- GUI:Text_setString(self.view.text_pass_times, "剩余通关次数:<color=#1ADD1F>" .. self.player_challenge_time .. "</color>")
- else
- GUI:Text_setString(self.view.text_pass_times, "剩余通关次数:<color=#FF2323>" .. self.player_challenge_time .. "</color>")
- GUI:Button_setGrey(self.view.btn_start_challenge, true)
- GUI:Button_setBright(self.view.btn_start_challenge, false)
- end
- end
- end
- function this:RefreshFinalReward()
- ---@type cfg_global_column
- local global = SL:GetConfig("cfg_repGlobal", 12001002)
- if global then
- local src = string.split(global.value, '#')
- self.finalReward = tonumber(src[2])
- self.stageLevel = src[1]
- GUI:Item_setItemId(self.view.item_stage_reward, self.finalReward)
- ---@type cfg_global_column
- local img = SL:GetConfig("cfg_repGlobal", 12001003)
- if img then
- GUI:Image_loadTexture(self.view.img_stage_reward, string.split(img.value, '#')[2], "Atlas/KLBraveTrialsUI.spriteatlas")
- end
- end
- end
- function this:StartChallenge()
- local map_id = SL:GetMetaValue(EMetaVarGetKey.MAP_ID)
- local mapTab = SL:GetConfig("cfg_map_info",map_id)
- if mapTab.nopositionmove and mapTab.nopositionmove == 1 then
- SL:MessageTip({ id = 116 })--"副本中无法传送",
- return
- end
- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_ENTER_DUPLICATE, self.player_challenge_level)
- self:CloseSelf()
- end
- function this:BRAVE_TEST_PANEL_INFO(_, message)
- local info
- if SL:HasConfigTwoKeys("cfg_rep", self.braveType, message.level, "type", "repLevel") then
- ---@type cfg_rep_column
- info = SL:GetConfigTwoKeys("cfg_rep", self.braveType, message.level, "type", "repLevel")
- end
- if not info then
- info = SL:GetConfig("cfg_rep", self.finalLevel)
- self.passLevel = true
- else
- self.passLevel = false
- end
- self.getStageReward = message.stageReward
- if self.getStageReward then
- GUI:setVisible(self.view.text_receive_reward, true)
- GUI:Image_setAlpha(self.view.img_reward_click, 1)
- else
- GUI:setVisible(self.view.text_receive_reward, false)
- GUI:Image_setAlpha(self.view.img_reward_click, 0)
- end
- self.player_challenge_level = info.id
- self:RefreshLevelMainInfo(self.player_challenge_level)
- self:RefreshFinalReward()
- self.braveTrialsShowTbl = {}
- for i, v in ipairs(self.braveTrialsTbl) do
- if v.id >= self.player_challenge_level then
- self.braveTrialsShowTbl[#self.braveTrialsShowTbl + 1] = v
- end
- end
- GUI:OSAScrollView_RefreshList(self.view.osascroll_bravetrials, #self.braveTrialsShowTbl)
- local index = self.totalLevel - message.level
- if index < 0 then
- index = 0
- end
- GUI:OSAScrollView_ScrollTo(self.view.osascroll_bravetrials, #self.braveTrialsShowTbl - 1)
- end
- function this:RES_GET_ACTIVITY_COUNT(_, message)
- if message["1"] == self.braveType then
- self.player_challenge_time = message["2"]
- self:RefreshChallengeTime()
- end
- end
- function this:ReceiveFinalReward()
- if self.passLevel and not self.getStageReward then
- SL:SendLuaNetMsg(LuaMessageIdToSever.BRAVE_TEST_STAGE_REWARD)
- elseif not self.passLevel then
- SL:OpenTips(nil, self.finalReward)
- end
- end
- function this:BRAVE_TEST_STAGE_REWARD(_,message)
- local reward = {}
- for i, v in pairs(message) do
- reward[tonumber(i)] = tonumber(v)
- end
- SL:OpenRewardTips(reward,0)
- GUI:setVisible(self.view.text_receive_reward, true)
- GUI:Image_setAlpha(self.view.img_reward_click, 1)
- end
- function this:CloseSelf()
- GUI:UIPanel_Close("dev/outui/BraveTrials/Panel/KLBraveTrials/KLBraveTrialsPanel")
- end
- function this:Close()
- self.trialsItemList = {}
- SL.ShowMainPanel()
- end
- return this
|