---@class KLGoldChallengeItem:UIKmlLuaPanelBase
---@field view KLGoldChallengeItemView
---@field data {k:number,v:number}
---@field monsterCfg cfg_monster_column
---@field taskCfg cfg_task_gold_column
---@field glodBossRewarditem KLGoldChallengeRewardItem[]
local KLGoldChallengeItem = class(UIKmlLuaPanelBase)
local this = KLGoldChallengeItem
---创建时调用一次
function this:Init()
self.starList = {}
self.itemList = {}
self.itemRewards = {}
GUI:DataListInitData(self.view.itemRoot, function()
return self:GoldBossDataListItemCountFunc()
end, function(realIndex)
return self:GoldBossDataListItemGetFunc(realIndex)
end, function(realIndex, kmlcontrol)
return self:GoldBossDataListItemInitFunc(realIndex, kmlcontrol)
end, function(realIndex, kmlcontrol)
return self:GoldBossDataListItemUpdateFunc(realIndex, kmlcontrol)
end)
self.glodBossRewarditem = {}
end
function this:InitData(index, data)
self.index = index
self.data = data
end
---创建或者刷新界面数据时调用
function this:Refresh()
end
function this:RefreshUI()
if self.timer then
---Timer.Stop(self.timer)
SL:UnSchedule(self.timer)
self.timer = nil
end
GUI:SetImageAlpha(self.view.btnEffect, 1, 1, 1, 1)
if self.data then
self.taskCfg = SL:GetConfig("cfg_task_gold", tonumber(self.data.k))
if self.data.v == 1 then
self.itemRewards = self.taskCfg.rewardItem1
elseif self.data.v == 2 then
self.itemRewards = self.taskCfg.rewardItem2
elseif self.data.v == 3 then
self.itemRewards = self.taskCfg.rewardItem3
end
self.monsterCfg = SL:GetConfig("cfg_monster", self.taskCfg.monsterId)
GUI:Text_setString(self.view.textName, self.monsterCfg.name .. string.format(" %s级", self.monsterCfg.level))
GUI:Text_setString(self.view.textMap, "所在地图:" .. self.taskCfg.mapName)
local str = ""
str = string.format("%s/%s", EColor[EGradColor.red], 0, self.taskCfg.taskGoalNum[self.data.v])
GUI:Text_setString(self.view.textTask, string.format("任务数量:%s", str))
GUI:setPositionZ(self.view.textRoot, -300)
GUI:setPositionZ(self.view.starGrid, -300)
GUI:Button_setGrey(self.view.btnGetTask, false)
if InfoManager.goldChallengeTaskInfo.taskInfo.nowtask then
---当前任务
if InfoManager.goldChallengeTaskInfo.taskInfo.nowtask.taskid == self.data.k then
---@type GoldChallengeTaskEnum
local status = InfoManager.goldChallengeTaskInfo.taskInfo.nowtask.status
if status == GoldChallengeTaskEnum.Accept then
GUI:setVisible(self.view.getTaskBtnRoot, true)
GUI:setVisible(self.view.btnSubmit, false)
local str = ""
if InfoManager.goldChallengeTaskInfo.taskInfo.nowtask.progress >= self.taskCfg.taskGoalNum[self.data.v] then
str = string.format("%s/%s", EColor[EGradColor.green], InfoManager.goldChallengeTaskInfo.taskInfo.nowtask.progress, self.taskCfg.taskGoalNum[self.data.v])
else
str = string.format("%s/%s", EColor[EGradColor.red], InfoManager.goldChallengeTaskInfo.taskInfo.nowtask.progress, self.taskCfg.taskGoalNum[self.data.v])
end
GUI:Text_setString(self.view.textTask, string.format("任务数量:%s", str))
elseif status == GoldChallengeTaskEnum.Finish then
GUI:setVisible(self.view.getTaskBtnRoot, false)
GUI:setVisible(self.view.btnSubmit, true)
local str = string.format("%s/%s", EColor[EGradColor.green], self.taskCfg.taskGoalNum[self.data.v], self.taskCfg.taskGoalNum[self.data.v])
GUI:Text_setString(self.view.textTask, string.format("任务数量:%s", str))
---开启一个计时器用于闪烁
if not self.timer then
self.timer = SL:StartLoopForever(0.5, self.RefreshBtn, self) ---Timer.StartLoopForever(0.5, self.RefreshBtn, self)
end
self.nowAlpha = 1
elseif status == GoldChallengeTaskEnum.submit then
end
GUI:setVisible(self.view.btnGetTask, false)
else --不是当前任务要置灰
GUI:setVisible(self.view.btnSubmit, false)
GUI:setVisible(self.view.getTaskBtnRoot, false)
GUI:setVisible(self.view.btnGetTask, true)
GUI:Button_setGrey(self.view.btnGetTask, true)
end
else
GUI:setVisible(self.view.btnSubmit, false)
GUI:setVisible(self.view.getTaskBtnRoot, false)
GUI:setVisible(self.view.btnGetTask, true)
end
GUI:setVisible(self.view.frame_2, false)
GUI:setVisible(self.view.frame_3, false)
if self.data.v == 2 then
GUI:setVisible(self.view.frame_2, true)
elseif self.data.v == 3 then
GUI:setVisible(self.view.frame_3, true)
end
self:InitModel()
--self:InitRewards()
GUI:DataListUpdateData(self.view.itemRoot)
self:InitStar()
end
end
function this:InitModel()
--SL:CrateMonsterModel(self.view.model.rectTransform,10001,{1,1,1})
local appr = self.monsterCfg.appr
local path = SL:GetConfigMultiKeys('cfg_model_monster', appr, 'id').path
GUI:Model_setSrc(self.view.model1, path)
end
function this:GoldBossDataListItemCountFunc()
return #self.itemRewards
end
function this:GoldBossDataListItemGetFunc(realIndex)
local item = GUI:UIPanel_Open("dev/outui/Activity/Item/KLGoldChallengeReward/KLGoldChallengeRewardItem", self.view.itemRoot, self, {}, true)
self.glodBossRewarditem[item.view.root] = item
return item.view.root
end
function this:GoldBossDataListItemInitFunc(realIndex, kmlcontrol)
end
function this:GoldBossDataListItemUpdateFunc(realIndex, kmlcontrol)
self.glodBossRewarditem[kmlcontrol]:RefreshItem(self.itemRewards[realIndex + 1])
end
function this:InitRewards(realIndex)
local itemRewards = {}
if self.data.v == 1 then
itemRewards = self.taskCfg.rewardItem1
elseif self.data.v == 2 then
itemRewards = self.taskCfg.rewardItem2
elseif self.data.v == 3 then
itemRewards = self.taskCfg.rewardItem3
end
if #self.itemList >= #itemRewards then
for i = 1, #self.itemList do
if i <= #itemRewards then
GUI:setVisible(self.itemList[i], true)
else
GUI:setVisible(self.itemList[i], false)
end
end
else
for i = #self.itemList + 1, #itemRewards do
local itemId = itemRewards[i][1]
local item = GUI:Item_Create(self.view.itemRoot, {
width = "50",
height = "50",
itemid = itemId,
mfixsize = "80,80",
tips = "1",
itemcustomcount = itemRewards[i][2]
})
GUI:AddOnClickEvent(item, self, function()
SL:OpenTips(nil, itemId)
end)
table.insert(self.itemList, item)
end
for i = 1, #self.itemList do
if i <= #itemRewards then
GUI:setVisible(self.itemList[i], true)
else
GUI:setVisible(self.itemList[i], false)
end
end
end
end
function this:InitStar()
if #self.starList > 0 then
for i = 1, 3 do
if i <= self.data.v then
GUI:setVisible(self.starList[i], true)
else
GUI:setVisible(self.starList[i], false)
end
end
else
for i = 1, 3 do
local star = GUI:Image_Create(self.view.starGrid, {
id = "star" .. i,
atlas = "Atlas/UIGoldChallenge.spriteatlas",
src = "star",
width = "35",
height = "35",
})
table.insert(self.starList, star)
end
for i = 1, 3 do
if i <= self.data.v then
GUI:setVisible(self.starList[i], true)
else
GUI:setVisible(self.starList[i], false)
end
end
end
end
---注册UI事件和服务器消息
function this:RegistEvents()
GUI:AddOnClickEvent(self.view.btnGo, self, self.OnClickGoTask)
GUI:AddOnClickEvent(self.view.btnAbandon, self, self.OnClickAbandonTask)
GUI:AddOnClickEvent(self.view.btnGetTask, self, self.OnClickGetTask)
GUI:AddOnClickEvent(self.view.btnSubmit, self, self.OnClickSubmitTask)
end
---前往任务
function this:OnClickGoTask()
--SL:ShortcutDO(self.taskCfg.instruction[1], nil, nil, function()
-- --AutoFightManager.StartAutoFight()
--end)
GUI:UIPanel_Close("dev/outui/Activity/Panel/KLGoldChallenge/KLGoldChallengePanel")
local type = SL:GetConfigMultiKeys('cfg_BOSS_challenge', self.monsterCfg.id, 'monsterid').monsterType
GUI:UIPanel_Open("dev/outui/ChallengeBoss/Panel/KLChallengeBoss/KLChallengeBossPanel",nil,
nil,{monsterId = self.monsterCfg.id,monsterType = type })
end
---放弃任务
function this:OnClickAbandonTask()
--[[ local message = {
title = "提示",
showTips = "当前任务进度将会被清空,是否确认放弃",
callback = function()
SL:SendLuaNetMsg(LuaMessageIdToSever.GIVE_UP_GOLD_TASK, self.data.k)
end
}]]
SL:CommonTipsMessage({ title = "提示", stringTblID=208,
callback = function()
SL:SendLuaNetMsg(LuaMessageIdToSever.GIVE_UP_GOLD_TASK, self.data.k)
end
})
end
---领取任务
function this:OnClickGetTask()
SL:SendLuaNetMsg(LuaMessageIdToSever.ACCEPT_GOLD_TASK, self.data.k)
end
---提交任务
function this:OnClickSubmitTask()
SL:SendLuaNetMsg(LuaMessageIdToSever.SUBMIT_GOLD_TASK, self.data.k)
end
function this:RefreshBtn()
if self.nowAlpha == 1 then
self.nowAlpha = 0.8
else
self.nowAlpha = 1
end
GUI:SetImageAlpha(self.view.btnEffect, 1, 1, 1, self.nowAlpha)
end
function this:Close()
self.starList = {}
if self.timer then
---Timer.Stop(self.timer)
SL:UnSchedule(self.timer)
self.timer = nil
end
end
return this