---@class KLArmbandUpgradePanel:UIKmlLuaPanelBase
---@field view KLArmbandUpgradePanelView
local KLArmbandUpgradePanel = class(UIKmlLuaPanelBase)
local this =KLArmbandUpgradePanel
---创建时调用一次
function this:Init()
end
function this:GetAllStarCount()
local StarNum = 0
local skillInfoTbl = SL:FindConfigs('cfg_gard_armbands')
for i, v in ipairs(skillInfoTbl) do
if v.armbandsStar > StarNum then
StarNum = v.armbandsStar
end
end
return StarNum
end
function this:SetStarDataList()
local starnum = self:GetAllStarCount()
GUI:DataListInitData(self.view.datalist_armbandstar, function()
return starnum
end, function(realIndex)
return self:StarItemGetFunc(realIndex)
end, function(realIndex, kmlcontrol)
return self:StarItemInitFunc(realIndex, kmlcontrol)
end, function(realIndex, kmlcontrol)
return self:StarItemUpdateFunc(realIndex, kmlcontrol)
end)
GUI:DataListUpdateData(self.view.datalist_armbandstar)
end
function this:StarItemGetFunc(realIndex)
end
function this:StarItemInitFunc(realIndex, kmlcontrol)
end
function this:StarItemUpdateFunc(realIndex, kmlcontrol)
local index = realIndex+1
local ico_star = GUI:GetChildControl(self.view.datalist_armbandstar,realIndex, 'ico_star')
local armbandstar = 0
if self.armbandTbl then
armbandstar = self.armbandTbl[1].armbandsStar
end
GUI:SetActive(ico_star, index <= armbandstar)
end
--------------------------------------------------------------------------------------------
function this:SetArrDataList()
--属性
GUI:DataListInitData(self.view.arrData_list, function()
return table.count(self.attInfos)
end, function(realIndex)
return self:AttItemGetFunc(realIndex)
end, function(realIndex, kmlcontrol)
return self:AttItemInitFunc(realIndex, kmlcontrol)
end, function(realIndex, kmlcontrol)
return self:AttItemUpdateFunc(realIndex, kmlcontrol)
end)
GUI:DataListUpdateData(self.view.arrData_list)
end
function this:AttItemGetFunc(realIndex)
local index = realIndex + 1
local item = GUI:UIPanel_Open("dev/outui/Union/Item/KLUnionArmband/KLUnionArmbandItem", self.view.arrData_list, self, nil, true)
if not self.armAttItems then
self.armAttItems = {}
end
local kmlCtrl = item.view.root
self.armAttItems[index] = item
return kmlCtrl
end
function this:AttItemInitFunc(realIndex, kmlcontrol)
end
function this:AttItemUpdateFunc(realIndex, kmlcontrol)
local index = realIndex + 1
local item = self.armAttItems[index]
local info = self.attInfos[index]
item:UpdateUI(info)
end
---创建或者刷新界面数据时调用
function this:Refresh()
SL.HideMainPanel()
self.selectTab = 1
self.AnimTimer = nil
self.reAnim = self.view.resultAnim
SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_UNION_INFO)
SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_UNION_ARMBAND_INFO)
end
---注册UI事件和服务器消息
function this:RegistEvents()
GUI:AddOnClickEvent(self.view.costItem,self,self.costItemTipClick)
GUI:AddOnClickEvent(self.view.costAdd,self,self.costAddTipClick)
GUI:AddOnClickEvent(self.view.btnarmtip,self,self.BtnarmtipClick)
GUI:AddOnClickEvent(self.view.CloseButton,self,self.CloseButtonClick)
GUI:AddOnClickEvent(self.view.UpgradeBtn,self,self.UpgradeBtnClick)
GUI:AddOnClickEvent(self.view.StrengthenBtn,self,self.StrengthenBtnClick)
GUI:AddOnClickEvent(self.view.OperateBtn,self,self.OperateBtnClick)
SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_GET_UNION_INFO, self.ResUnionInfo, self)
SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_SEND_UNION_ARMBAND_INFO, self.ResUnionAembandInfo, self)
SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_UNION_ARMBAND_LEVEL_UP, self.ResUnionAembandLevelup, self)
SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_UNION_ARMBAND_STRONG, self.ResUnionAembandStrong, self)
end
function this:ResUnionInfo(id,data)
if data and data.unionarmband then
self.unionlevel = tonumber(data.unionlevel)
GUI:Image_loadTexture(self.view.armbandicon, string.format("Texture/log%s.png",data.unionarmband), "")
else
self.unionlevel = 1
end
end
function this:ResUnionAembandInfo(id,data)
self.AembandInfo = data
if self.selectTab == 1 then
self:UpgradeBtnClick()
self:SetStarDataList() --星级
else
self:StrengthenBtnClick()
end
self:SetArrDataList() --属性
end
function this:ResUnionAembandLevelup(id,data)
if self.AembandInfo and data then
self.AembandInfo.level = tonumber(data)
self:UpgradeBtnClick() --默认显示升级UI
end
end
function this:ResUnionAembandStrong(id,data)
if self.AembandInfo and self.reAnim then
if tonumber(data) > self.AembandInfo.strong then
GUI:Image_loadTexture(self.reAnim,"strength_success" ,"Atlas/TS_Union.spriteatlas")
else
GUI:Image_loadTexture(self.reAnim,"strength_fail" ,"Atlas/TS_Union.spriteatlas")
end
GUI:SetActive(self.reAnim, true)
if self.AnimTimer then
SL:UnSchedule(self.AnimTimer)
self.AnimTimer = nil
end
if self.AnimTimer == nil then
self.AnimTimer = SL:ScheduleOnce(1, function()
if self.reAnim then
GUI:SetActive(self.reAnim, false)
end
self.AnimTimer = nil
end)
end
self.AembandInfo.strong = tonumber(data)
self:StrengthenBtnClick()
end
end
---道具/途径 提示
function this:costItemTipClick(id,event)
SL:OpenTips(nil,self.costId)
end
function this:costAddTipClick(id,event)
SL:CommonItemGetPath(nil, self.costId, nil, nil, self)
end
function this:BtnarmtipClick(id,event)
SL:CommonStrTipsMessage({title="战盟臂章",str="1、战盟臂章可给玩家增加一些属性上的加成。\n2、可消耗战盟贡献对臂章进行升级,等级上限与当前所在战盟等级相关。\n3、离开战盟将对臂章进行冻结,失去所加属性,当加入新战盟后根据战盟等级解冻臂章属性"})
end
function this:CloseButtonClick(id,event)
GUI:UIPanel_Close("dev/outui/Union/Panel/KLArmbandUpgrade/KLArmbandUpgradePanel")
GUI:UIPanel_Close("dev/ui/Union/Panel/KLUnionToggleList/KLUnionToggleListPanel")
SL.ShowMainPanel()
end
----获取属性列表
function this:GetAttListData(curAtts,nextAtts,islast)
local attInfos = {}
for i, v in ipairs(curAtts) do
if SL:HasConfig("cfg_att_info",v[1],"id") then
local attdata = SL:FindConfigs("cfg_att_info","id",v[1])
if attdata and attdata[1] then
local data = {
des = attdata[1].name,
prenum = tostring(v[2]),
}
if not islast and nextAtts then
data = {
des = attdata[1].name,
prenum = tostring(v[2]),
nextnum = tostring(nextAtts[i][2]),
}
end
table.insert(attInfos,data)
end
end
end
return attInfos
end
--当前区间等级最大臂章name
function this:GetArmbandsNameByUnionlevel(unionlevel)
local TblData = SL:GetConfigTable("cfg_gard_armbands")
local taskdata = {}
for i, v in ipairs(TblData) do
if v.GuildRank and v.GuildRank[1] then
local Lv = v.GuildRank[1]
if Lv <= unionlevel then
table.insert(taskdata,{unLv = Lv,armLv = v.GuildRank[2] })
end
end
end
table.sort(taskdata, function(a, b)
return a.unLv > b.unLv
end)
local data = taskdata[1]
if data then
self.maxlevel = data.armLv
local tbldata = SL:FindConfigs('cfg_gard_armbands', 'Level', data.armLv)
return tbldata[1].armbandsName
end
return nil
end
---显示升级UI
function this:UpgradeBtnClick(id,event)
if SL:HasConfig("cfg_gard_armbands",self.AembandInfo.level,"Level") then
self.armbandTbl = SL:FindConfigs('cfg_gard_armbands', 'Level', self.AembandInfo.level)
end
self.selectTab = 1
self.iscanUp = false
self.maxlevel = self.armbandTbl[1].GuildRank[2]
GUI:Image_loadTexture(self.view.UpgradeBtn,"btn_upgrade_select" ,"Atlas/TS_Union.spriteatlas")
GUI:Image_loadTexture(self.view.StrengthenBtn,"btn_strength" ,"Atlas/TS_Union.spriteatlas")
GUI:Text_setString(self.view.arr_title, "臂章属性")
GUI:Button_setTitleText(self.view.OperateBtn,"升级")
if self.armbandTbl then
local curAtts = self.armbandTbl[1].levelupAttribute
---基础信息
local armbandsName = self:GetArmbandsNameByUnionlevel(self.unionlevel)
if armbandsName then
local str = "当前战盟等级"..self.unionlevel..""..",臂章上限"..armbandsName..""
GUI:Text_setString(self.view.armbandtip, str)
else
GUI:Text_setString(self.view.armbandtip, "")
end
GUI:Text_setString(self.view.armbandname, self.armbandTbl[1].armbandsName)
---属性
self.nextdata = nil
if SL:HasConfig("cfg_gard_armbands",self.armbandTbl[1].Level+1,"Level") then
self.nextdata = SL:FindConfigs("cfg_gard_armbands",'Level',self.armbandTbl[1].Level+1)
local nextAtts = self.nextdata[1].levelupAttribute
self.attInfos = self:GetAttListData(curAtts,nextAtts,false)
else
self.attInfos = self:GetAttListData(curAtts,nil,true)
end
---消耗
if self.nextdata then
self.costId = self.nextdata[1].levelupCost[1]
local needCount = self.nextdata[1].levelupCost[2]
local itemdata = SL:FindConfigs('cfg_item', 'id', self.costId)
local ownCount = SL:GetMetaValue(EMetaVarGetKey.MONEY, MUEResourceType.UnionGx)
--local ownCount = SL:GetBagItemCount(self.costId)
local str = ""..ownCount.."/"..needCount..""
if ownCount >= needCount then
self.iscanUp = true
str = ""..ownCount.."/"..needCount..""
end
GUI:Text_setString(self.view.costName, itemdata[1].name)
GUI:Item_setItemId(self.view.costItem, self.costId)
GUI:Text_setString(self.view.costNum, str)
end
end
---显示
GUI:SetActive(self.view.armbandtip, true)
GUI:SetActive(self.view.resultAnim, false)
GUI:SetActive(self.view.resultLv, false)
GUI:SetActive(self.view.resultAnimText, false)
GUI:SetActive(self.view.KmlEquipReborn, false)
GUI:SetActive(self.view.layout_armbandstar, true)
GUI:SetActive(self.view.btntip, false)
---是否已满级
GUI:SetActive(self.view.costBg, not (self.nextdata==nil))
GUI:SetActive(self.view.OperateBtn, not (self.nextdata==nil))
GUI:SetActive(self.view.fulllevel, self.nextdata==nil)
---属性,星级刷新
GUI:DataListUpdateData(self.view.arrData_list)
GUI:DataListUpdateData(self.view.datalist_armbandstar)
end
---显示强化UI
function this:StrengthenBtnClick(id,event)
local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL)
if SL:HasConfig("cfg_gard_bandsStrength",self.AembandInfo.strong,"level") then
self.armStrengthTbl = SL:FindConfigs('cfg_gard_bandsStrength', 'level', self.AembandInfo.strong)
end
self.selectTab = 2
self.iscanStrengthen = false
self.iscanStrengLv = true
GUI:Image_loadTexture(self.view.UpgradeBtn,"btn_upgrade" ,"Atlas/TS_Union.spriteatlas")
GUI:Image_loadTexture(self.view.StrengthenBtn,"btn_strength_select" ,"Atlas/TS_Union.spriteatlas")
GUI:Text_setString(self.view.arr_title, "强化属性")
GUI:Button_setTitleText(self.view.OperateBtn,"强化")
if self.armStrengthTbl then
---失败退到
local curAtts = self.armStrengthTbl[1].strengthenAttribute
--local levelFailure1 = self.armStrengthTbl[1].levelFailure1
--local StrengthLevel = self.armStrengthTbl[1].level
--if levelFailure1 and levelFailure1 > 0 and levelFailure1 < StrengthLevel then
-- GUI:SetActive(self.view.btntip, true)
-- GUI:Text_setString(self.view.btntip, "失败退到"..levelFailure1.."级")
--else
-- ---空或大于等于当前等级=不退回 停留在当前等级
-- GUI:SetActive(self.view.btntip, false)
--end
---成功率
local Probalv = self.armStrengthTbl[1].strengthenProbability / 10000
local successLv = math.ceil(Probalv *100) .."%"
GUI:Text_setString(self.view.resultAnimText, successLv)
---属性
self.nextStrengthdata = nil
if SL:HasConfig("cfg_gard_bandsStrength",self.armStrengthTbl[1].level+1,"level") then
self.nextStrengthdata = SL:FindConfigs("cfg_gard_bandsStrength",'level',self.armStrengthTbl[1].level+1)
local nextAtts = self.nextStrengthdata[1].strengthenAttribute
self.attInfos = self:GetAttListData(curAtts,nextAtts,false)
---成功率
local Probalv = self.nextStrengthdata[1].strengthenProbability / 10000
local successLv = math.ceil(Probalv *100) .."%"
GUI:Text_setString(self.view.resultAnimText, successLv)
else
self.attInfos = self:GetAttListData(curAtts,nil,true)
end
---消耗
if self.nextStrengthdata then
local levelLimit = self.nextStrengthdata[1].playerLevelLimit
self.costId = self.nextStrengthdata[1].strengthCost[1]
local needCount = self.nextStrengthdata[1].strengthCost[2]
--local ownCount = SL:GetMetaValue(EMetaVarGetKey.MONEY, MUEResourceType.UnionGx)
local ownCount = SL:GetBagItemCount(self.costId)
local itemdata = SL:FindConfigs('cfg_item', 'id', self.costId)
local str = ""..ownCount.."/"..needCount..""
if ownCount >= needCount then
self.iscanStrengthen = true
str = ""..ownCount.."/"..needCount..""
end
if levelLimit and levelLimit > playerLevel then
self.iscanStrengLv = false
GUI:Text_setString(self.view.btntip, "角色达到"..levelLimit.."级可强化")
else
GUI:Text_setString(self.view.btntip, "")
end
GUI:Text_setString(self.view.costName, itemdata[1].name) --臂章宝石
GUI:Text_setString(self.view.costNum, str)
GUI:Item_setItemId(self.view.costItem, self.costId)
GUI:setPosition(self.view.strengthIntro,-120,10)
GUI:setPosition(self.view.preLevel,-10,-10)
GUI:Text_setString(self.view.preLevel, "+"..self.armStrengthTbl[1].level)
GUI:Text_setString(self.view.nextLevel, "+"..self.armStrengthTbl[1].level+1)
else
GUI:setPosition(self.view.strengthIntro,-60,10)
GUI:setPosition(self.view.preLevel,40,-10)
GUI:Text_setString(self.view.btntip, "")
GUI:Text_setString(self.view.preLevel, "+"..self.armStrengthTbl[1].level)
GUI:Text_setString(self.view.nextLevel, "")
end
end
---显示
GUI:SetActive(self.view.KmlEquipReborn, true)
GUI:SetActive(self.view.layout_armbandstar, false)
GUI:SetActive(self.view.armbandtip, false)
---是否已满级
GUI:SetActive(self.view.costBg, not (self.nextStrengthdata==nil))
GUI:SetActive(self.view.OperateBtn, not (self.nextStrengthdata==nil))
GUI:SetActive(self.view.fulllevel, self.nextStrengthdata==nil)
GUI:SetActive(self.view.btntip, not (self.nextStrengthdata==nil))
GUI:SetActive(self.view.resultLv, not (self.nextStrengthdata==nil))
GUI:SetActive(self.view.resultAnimText, not (self.nextStrengthdata==nil))
GUI:SetActive(self.view.arrow, not (self.nextStrengthdata==nil))
---属性刷新
GUI:DataListUpdateData(self.view.arrData_list)
end
---升级/强化 提交判断消息
function this:OperateBtnClick(id,event)
if self.selectTab ==1 then
local isMaxlevel = self.armbandTbl and self.maxlevel and self.maxlevel > self.armbandTbl[1].Level
local uplevel = self:GetArmbandsNameByUnionlevel(self.unionlevel) == nil
if isMaxlevel or uplevel then
if self.iscanUp then
SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_UNION_ARMBAND_LEVEL_UP)
else
SL:TipMessage( SL:GetConfig('cfg_string',282).text, 1, NoticeType.NoticeMid )--"道具不足!",
end
else
SL:TipMessage( SL:GetConfig('cfg_string',283).text,1, NoticeType.NoticeMid )--"臂章已达到当前等级上限",
end
else
if self.iscanStrengthen then
if self.iscanStrengLv then
SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_UNION_ARMBAND_STRONG)
else
SL:TipMessage( SL:GetConfig('cfg_string',249).text,1, NoticeType.NoticeMid )--"等级不足!",
end
else
SL:TipMessage( SL:GetConfig('cfg_string',282).text,1, NoticeType.NoticeMid )--"道具不足!",
end
end
end
function this:Close()
GUI:UIPanel_Close("dev/outui/Union/Panel/KLArmbandUpgrade/KLArmbandUpgradePanel")
end
return this