1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273 |
- ---@class KLAttrPanel:UIKmlLuaPanelBase
- ---@field view KLAttrPanelView
- local KLAttrPanel = class(UIKmlLuaPanelBase)
- local this = KLAttrPanel
- ---创建时调用一次
- function KLAttrPanel:Init()
- self.freePoint = SL:GetMetaValue("REMAIN_ATTR_POINT") or 0
- self.add_strength = 0
- self.add_agility = 0
- self.add_intelligence = 0
- self.add_spirit = 0
- self.add_lead = 0
- self.calcShowPoint = SL:GetConfig('cfg_global', 270) and tonumber(SL:GetConfig('cfg_global', 270).value) or 20
- --cfg_att_info_post.InitOnUse()
- self:InitFirstAttr()
- self.strength_item = {}
- self.agility_item = {}
- self.intelligence_item = {}
- self.spirit_item = {}
- self.lead_item = {}
- self.special_item = {}
- self:InitSecondAttr()
-
- -- 这个布局在webgl平台下会不正常,这里单独设置下
- if SL:GetIsWebGL() then
- local attrEffectRect = GUI:GetRectTransform(self.view.AttrEffect)
- attrEffectRect.sizeDelta = Vector2.New(attrEffectRect.sizeDelta.x, 0)
- end
- end
- function this:InitFirstAttr()
- local cfgTable = SL:GetConfigTable("cfg_att_info")
- for k, v in pairs(cfgTable) do
- if v.base == 1 then
- local isShow = this.CheckSpecialAttrIdIsShow(v.id)
- if v.id == EMUCharacterAttrType.strength then
- GUI:setVisible(self.view.attInfoContent_dc, isShow)
- elseif v.id == EMUCharacterAttrType.agility then
- GUI:setVisible(self.view.attInfoContent_agility, isShow)
- elseif v.id == EMUCharacterAttrType.lead then
- GUI:setVisible(self.view.attInfoContent_command, isShow)
- elseif v.id == EMUCharacterAttrType.intelligence then
- GUI:setVisible(self.view.attInfoContent_intelligence, isShow)
- elseif v.id == EMUCharacterAttrType.spirit then
- GUI:setVisible(self.view.attInfoContent_stamina, isShow)
- end
- end
- end
- end
- function this:InitSecondAttr()
- local secondAttrTbl = this.GetBaseTwoAttrById(EMUCharacterAttrType.strength)
- for _, second_info in pairs(secondAttrTbl) do
- if second_info.id ~= EMUCharacterAttrType.maxDC then
- table.insert(self.strength_item, second_info.id)
- end
- end
- GUI:DataListInitData( self.view.attInfoContent_dc_content,function()
- return self:DataListDcItemCountFunc()
- end,function(realIndex)
- return self:DataListDcItemGetFunc(realIndex)
- end,function(realIndex, kmlcontrol)
- return self:DataListDcItemInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:DataListDcItemUpdateFunc(realIndex, kmlcontrol)
- end)
- secondAttrTbl = this.GetBaseTwoAttrById(EMUCharacterAttrType.agility)
- for _, second_info in pairs(secondAttrTbl) do
- if second_info.id ~= EMUCharacterAttrType.maxDC then
- table.insert(self.agility_item, second_info.id)
- end
- end
- GUI:DataListInitData( self.view.attInfoContent_agility_content,function()
- return self:DataListAgItemCountFunc()
- end,function(realIndex)
- return self:DataListAgItemGetFunc(realIndex)
- end,function(realIndex, kmlcontrol)
- return self:DataListAgItemInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:DataListAgItemUpdateFunc(realIndex, kmlcontrol)
- end)
- secondAttrTbl = this.GetBaseTwoAttrById(EMUCharacterAttrType.spirit)
- for _, second_info in pairs(secondAttrTbl) do
- if second_info.id ~= EMUCharacterAttrType.maxDC then
- table.insert(self.spirit_item, second_info.id)
- end
- end
- GUI:DataListInitData( self.view.attInfoContent_stamina_content,function()
- return self:DataListStItemCountFunc()
- end,function(realIndex)
- return self:DataListStItemGetFunc(realIndex)
- end,function(realIndex, kmlcontrol)
- return self:DataListStItemInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:DataListStItemUpdateFunc(realIndex, kmlcontrol)
- end)
- secondAttrTbl = this.GetBaseTwoAttrById(EMUCharacterAttrType.intelligence)
- for _, second_info in pairs(secondAttrTbl) do
- if second_info.id ~= EMUCharacterAttrType.maxDC and second_info.id ~= EMUCharacterAttrType.maxMC and second_info.id ~= EMUCharacterAttrType.maxZuZhou then
- table.insert(self.intelligence_item, second_info.id)
- end
- end
- GUI:DataListInitData( self.view.attInfoContent_intelligence_content,function()
- return self:DataListInItemCountFunc()
- end,function(realIndex)
- return self:DataListInItemGetFunc(realIndex)
- end,function(realIndex, kmlcontrol)
- return self:DataListInItemInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:DataListInItemUpdateFunc(realIndex, kmlcontrol)
- end)
- secondAttrTbl = this.GetBaseTwoAttrById(EMUCharacterAttrType.lead)
- for _, second_info in pairs(secondAttrTbl) do
- if second_info.id ~= EMUCharacterAttrType.maxDC then
- table.insert(self.lead_item, second_info.id)
- end
- end
- GUI:DataListInitData( self.view.attInfoContent_command_content,function()
- return self:DataListLeItemCountFunc()
- end,function(realIndex)
- return self:DataListLeItemGetFunc(realIndex)
- end,function(realIndex, kmlcontrol)
- return self:DataListLeItemInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:DataListLeItemUpdateFunc(realIndex, kmlcontrol)
- end)
- end
- function this.GetRightTwoAttr()
- local secondAttrTbl = {}
- local cfgTable = SL:GetConfigTable('cfg_att_info')
- for k, v in pairs(cfgTable) do
- if v.base == 3 or v.base == 5 then
- local isShow = this.CheckSpecialAttrIdIsShow(v.id)
- if isShow then
- table.insert(secondAttrTbl, v)
- end
- end
- end
- -- 同级属性排列顺序读表cfg_att_info的sort字段
- table.sort(secondAttrTbl, function(a, b) return a.sort < b.sort end)
- return secondAttrTbl
- end
- function this.GetBaseTwoAttrById(id)
- local attInfo = SL:GetConfig('cfg_att_info', id)
- local attributeName = attInfo.attribute
- local showSecondAttrTbl = {}
- --for _, baseTwoInfo in pairs(cfg_att_info_post.cfgBaseTbl[2]) do
- for _, baseTwoInfo in pairs(SL:CfgAttInfoPost_GetCfgBaseTbl()[2]) do
- if this.CheckSpecialAttrIdIsShow(baseTwoInfo.id) then
- local baseTwoName = baseTwoInfo.attribute
- ---@type cfg_att_conversion_column
- --local conversionInfo = MeData.GetAttConversionInfoByCareer(SL:MeData_GetCareer())[baseTwoName]
- local conversionInfo = SL.RoleAtt:GetAttConversionInfoByCareer(SL:MeData_GetCareer())[baseTwoName]
- -- 如果该1级属性加点后会影响该2级属性, 则表示它们是关联的, 需要显示在一级属性下面
- --if conversionInfo ~= nil and conversionInfo[attributeName] ~= 0 then
- if conversionInfo then
- if conversionInfo.display == id then
- -- 该1级属性影响到的2级属性, 先放table里, 后面还要按sort排序显示出来
- table.insert(showSecondAttrTbl, baseTwoInfo)
- end
- end
- end
- end
- table.sort(showSecondAttrTbl, function(a, b) return a.sort < b.sort end)
- return showSecondAttrTbl
- end
- function this.CheckSpecialAttrIdIsShow(attrId)
- local cfgInfo = SL:GetConfig("cfg_att_info", attrId)
- if cfgInfo == nil then
- logError("cfg_att_info id:" .. attrId .. "not exist!!!")
- return false
- else
- local isShow = cfgInfo.isshow
- if isShow[1] == 0 then
- return false
- elseif isShow[1] == 1 then
- return true
- elseif isShow[1] == 2 then
- for index=2, #isShow do
- local baseCareer = isShow[index]
- if baseCareer == SL:MeData_GetCareer().baseCareer then
- return true
- end
- end
- return false
- end
- end
- end
- function this:DataListDcItemCountFunc()
- return table.count(self.strength_item)
- end
- function this:DataListDcItemGetFunc(realIndex)
- end
- function this:DataListDcItemInitFunc(realIndex, kmlcontrol)
- --local strength_info = GUI:GetChildControl(self.view.attInfoContent_dc_content,realIndex,'strength_info')
- --GUI:Text_setString(strength_info,"攻击力:100~1000")
- end
- function this:DataListDcItemUpdateFunc(realIndex, kmlcontrol)
- local strength_info = GUI:GetChildControl(self.view.attInfoContent_dc_content,realIndex,'strength_info')
- local strength_add = GUI:GetChildControl(self.view.attInfoContent_dc_content,realIndex,'dc_add')
- local attr_id = self.strength_item[realIndex+1]
- local attrName
- local attrValue
- local attrAddText = ""
- local attrAddValue
- if attr_id == EMUCharacterAttrType.minDC then
- attrName = "物 理 攻 击 力 "
- attrValue = string.format("%s~%s", SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", EMUCharacterAttrType.minDC),SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", EMUCharacterAttrType.maxDC))
- local minValue = self:GetSpecialAttrAdd(EMUCharacterAttrType.minDC)
- local maxValue = self:GetSpecialAttrAdd(EMUCharacterAttrType.maxDC)
- if minValue > 0 or maxValue > 0 then
- attrAddText = string.format("+ %s ~ %s", minValue, maxValue)
- end
- else
- attrName = SL:GetConfig('cfg_att_info', attr_id).showname
- local attrRemark = SL:GetConfig('cfg_att_info', attr_id).remarks
- if attrRemark == EAttrRemarkType.Number then
- attrValue = SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", attr_id)
- attrAddValue = self:GetSpecialAttrAdd(attr_id)
- if attrAddValue > 0 then
- attrAddText = string.format("+%s", attrAddValue)
- end
- else
- attrValue = string.format("%0.2f%%",SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", attr_id)/100)
- attrAddValue = self:GetSpecialAttrAdd(attr_id)
- if attrAddValue > 0 then
- attrAddText = string.format("+%s%%", self:GetSpecialAttrAdd(attr_id))
- end
- end
- end
- GUI:Text_setString(strength_info,string.format("%s:%s", attrName, attrValue))
- GUI:Text_setString(strength_add,string.format("%s",attrAddText))
- end
- --敏捷
- function this:DataListAgItemCountFunc()
- return table.count(self.agility_item)
- end
- function this:DataListAgItemGetFunc(realIndex)
- end
- function this:DataListAgItemInitFunc(realIndex, kmlcontrol)
- --local strength_info = GUI:GetChildControl(self.view.attInfoContent_dc_content,realIndex,'strength_info')
- --GUI:Text_setString(strength_info,"攻击力:100~1000")
- end
- function this:DataListAgItemUpdateFunc(realIndex, kmlcontrol)
- local strength_info = GUI:GetChildControl(self.view.attInfoContent_agility_content,realIndex,'ag_info')
- local ag_add = GUI:GetChildControl(self.view.attInfoContent_agility_content,realIndex,'ag_add')
- local attr_id = self.agility_item[realIndex+1]
- local attrName
- local attrValue
- local attrAddText = ""
- local attrAddValue
- if attr_id == EMUCharacterAttrType.minDC then
- attrName = "物 理 攻 击 力 "
- attrValue = string.format("%s~%s", SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", EMUCharacterAttrType.minDC),SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", EMUCharacterAttrType.maxDC))
- local minValue = self:GetSpecialAttrAdd(EMUCharacterAttrType.minDC)
- local maxValue = self:GetSpecialAttrAdd(EMUCharacterAttrType.maxDC)
- if minValue > 0 or maxValue > 0 then
- attrAddText = string.format("+ %s ~ %s", minValue, maxValue)
- end
- else
- attrName = SL:GetConfig('cfg_att_info', attr_id).showname
- local attrRemark = SL:GetConfig('cfg_att_info', attr_id).remarks
- if attrRemark == EAttrRemarkType.Number then
- attrValue = SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", attr_id)
- attrAddValue = self:GetSpecialAttrAdd(attr_id)
- if attrAddValue > 0 then
- attrAddText = string.format("+%s", attrAddValue)
- end
- else
- attrValue = string.format("%0.2f%%",SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", attr_id)/100)
- attrAddValue = self:GetSpecialAttrAdd(attr_id)
- if attrAddValue > 0 then
- attrAddText = string.format("+%s%%", self:GetSpecialAttrAdd(attr_id))
- end
- end
- end
- GUI:Text_setString(strength_info,string.format("%s:%s", attrName, attrValue))
- GUI:Text_setString(ag_add,string.format("%s",attrAddText))
- end
- -- 智力
- function this:DataListInItemCountFunc()
- return table.count(self.intelligence_item)
- end
- function this:DataListInItemGetFunc(realIndex)
- end
- function this:DataListInItemInitFunc(realIndex, kmlcontrol)
- --local strength_info = GUI:GetChildControl(self.view.attInfoContent_dc_content,realIndex,'strength_info')
- --GUI:Text_setString(strength_info,"攻击力:100~1000")
- end
- function this:DataListInItemUpdateFunc(realIndex, kmlcontrol)
- local strength_info = GUI:GetChildControl(self.view.attInfoContent_intelligence_content,realIndex,'in_info')
- local in_add = GUI:GetChildControl(self.view.attInfoContent_intelligence_content,realIndex,'in_add')
- local attr_id = self.intelligence_item[realIndex+1]
- local attrName
- local attrValue
- local attrAddText = ""
- local attrAddValue
- if attr_id == EMUCharacterAttrType.minDC then
- attrName = "物 理 攻 击 力 "
- attrValue = string.format("%s~%s", SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", EMUCharacterAttrType.minDC),SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", EMUCharacterAttrType.maxDC))
- local minValue = self:GetSpecialAttrAdd(EMUCharacterAttrType.minDC)
- local maxValue = self:GetSpecialAttrAdd(EMUCharacterAttrType.maxDC)
- if minValue > 0 or maxValue > 0 then
- attrAddText = string.format("+ %s ~ %s", minValue, maxValue)
- end
- elseif attr_id == EMUCharacterAttrType.minMC then
- attrName = "魔 法 攻 击 力 "
- attrValue = string.format("%s~%s", SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", EMUCharacterAttrType.minMC),SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", EMUCharacterAttrType.maxMC))
- local minValue = self:GetSpecialAttrAdd(EMUCharacterAttrType.minMC)
- local maxValue = self:GetSpecialAttrAdd(EMUCharacterAttrType.maxMC)
- if minValue > 0 or maxValue > 0 then
- attrAddText = string.format("+ %s ~ %s",minValue, maxValue)
- end
- elseif attr_id == EMUCharacterAttrType.minZuZhou then
- attrName = "诅 咒 攻 击 力 "
- attrValue = string.format("%s~%s", SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", EMUCharacterAttrType.minZuZhou),SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", EMUCharacterAttrType.maxZuZhou))
- local minValue = self:GetSpecialAttrAdd(EMUCharacterAttrType.minZuZhou)
- local maxValue = self:GetSpecialAttrAdd(EMUCharacterAttrType.maxZuZhou)
- if minValue > 0 or maxValue > 0 then
- attrAddText = string.format("+ %s ~ %s",minValue, maxValue)
- end
- else
- attrName = SL:GetConfig('cfg_att_info', attr_id).showname
- local attrRemark = SL:GetConfig('cfg_att_info', attr_id).remarks
- if attrRemark == EAttrRemarkType.Number then
- attrValue = SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", attr_id)
- attrAddValue = self:GetSpecialAttrAdd(attr_id)
- if attrAddValue > 0 then
- attrAddText = string.format("+%s", attrAddValue)
- end
- else
- attrValue = string.format("%0.2f%%",SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", attr_id)/100)
- attrAddValue = self:GetSpecialAttrAdd(attr_id)
- if attrAddValue > 0 then
- attrAddText = string.format("+%s%%", self:GetSpecialAttrAdd(attr_id))
- end
- end
- end
- GUI:Text_setString(strength_info,string.format("%s:%s", attrName, attrValue))
- GUI:Text_setString(in_add,string.format("%s",attrAddText))
- end
- -- 体力
- function this:DataListStItemCountFunc()
- return table.count(self.spirit_item)
- end
- function this:DataListStItemGetFunc(realIndex)
- end
- function this:DataListStItemInitFunc(realIndex, kmlcontrol)
- --local strength_info = GUI:GetChildControl(self.view.attInfoContent_dc_content,realIndex,'strength_info')
- --GUI:Text_setString(strength_info,"攻击力:100~1000")
- end
- function this:DataListStItemUpdateFunc(realIndex, kmlcontrol)
- local strength_info = GUI:GetChildControl(self.view.attInfoContent_stamina_content,realIndex,'st_info')
- local st_add = GUI:GetChildControl(self.view.attInfoContent_stamina_content,realIndex,'st_add')
- local attr_id = self.spirit_item[realIndex+1]
- local attrName
- local attrValue
- local attrAddText = ""
- local attrAddValue
- if attr_id == EMUCharacterAttrType.minDC then
- attrName = "物 理 攻 击 力 "
- attrValue = string.format("%s~%s", SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", EMUCharacterAttrType.minDC),SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", EMUCharacterAttrType.maxDC))
- local minValue = self:GetSpecialAttrAdd(EMUCharacterAttrType.minDC)
- local maxValue = self:GetSpecialAttrAdd(EMUCharacterAttrType.maxDC)
- if minValue > 0 or maxValue > 0 then
- attrAddText = string.format("+ %s ~ %s", minValue, maxValue)
- end
- else
- attrName = SL:GetConfig('cfg_att_info', attr_id).showname
- local attrRemark = SL:GetConfig('cfg_att_info', attr_id).remarks
- if attrRemark == EAttrRemarkType.Number then
- attrValue = SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", attr_id)
- attrAddValue = self:GetSpecialAttrAdd(attr_id)
- if attrAddValue > 0 then
- attrAddText = string.format("+%s", attrAddValue)
- end
- else
- attrValue = string.format("%0.2f%%",SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", attr_id)/100)
- attrAddValue = self:GetSpecialAttrAdd(attr_id)
- if attrAddValue > 0 then
- attrAddText = string.format("+%s%%", self:GetSpecialAttrAdd(attr_id))
- end
- end
- end
- GUI:Text_setString(strength_info,string.format("%s:%s", attrName, attrValue))
- GUI:Text_setString(st_add,string.format("%s",attrAddText))
- end
- -- 统帅
- function this:DataListLeItemCountFunc()
- return table.count(self.lead_item)
- end
- function this:DataListLeItemGetFunc(realIndex)
- end
- function this:DataListLeItemInitFunc(realIndex, kmlcontrol)
- --local strength_info = GUI:GetChildControl(self.view.attInfoContent_dc_content,realIndex,'strength_info')
- --GUI:Text_setString(strength_info,"攻击力:100~1000")
- end
- function this:DataListLeItemUpdateFunc(realIndex, kmlcontrol)
- local strength_info = GUI:GetChildControl(self.view.attInfoContent_command_content,realIndex,'le_info')
- local le_add = GUI:GetChildControl(self.view.attInfoContent_command_content,realIndex,'le_add')
- local attr_id = self.lead_item[realIndex+1]
- local attrName
- local attrValue
- local attrAddText = ""
- local attrAddValue
- if attr_id == EMUCharacterAttrType.minDC then
- attrName = "物 理 攻 击 力 "
- attrValue = string.format("%s~%s", SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", EMUCharacterAttrType.minDC),SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", EMUCharacterAttrType.maxDC))
- local minValue = self:GetSpecialAttrAdd(EMUCharacterAttrType.minDC)
- local maxValue = self:GetSpecialAttrAdd(EMUCharacterAttrType.maxDC)
- if minValue > 0 or maxValue > 0 then
- attrAddText = string.format("+ %s ~ %s", minValue, maxValue)
- end
- else
- attrName = SL:GetConfig('cfg_att_info', attr_id).showname
- local attrRemark = SL:GetConfig('cfg_att_info', attr_id).remarks
- if attrRemark == EAttrRemarkType.Number then
- attrValue = SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", attr_id)
- attrAddValue = self:GetSpecialAttrAdd(attr_id)
- if attrAddValue > 0 then
- attrAddText = string.format("+%s", attrAddValue)
- end
- else
- attrValue = string.format("%0.2f%%",SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", attr_id)/100)
- attrAddValue = self:GetSpecialAttrAdd(attr_id)
- if attrAddValue > 0 then
- attrAddText = string.format("+%s%%", self:GetSpecialAttrAdd(attr_id))
- end
- end
- end
- GUI:Text_setString(strength_info,string.format("%s:%s", attrName, attrValue))
- GUI:Text_setString(le_add,string.format("%s",attrAddText))
- end
- -- 特殊
- function this:DataListSpItemCountFunc()
- return table.count(self.special_item)
- end
- function this:DataListSpItemGetFunc(realIndex)
- end
- function this:DataListSpItemInitFunc(realIndex, kmlcontrol)
- --local strength_info = GUI:GetChildControl(self.view.attInfoContent_dc_content,realIndex,'strength_info')
- --GUI:Text_setString(strength_info,"攻击力:100~1000")
- end
- function this:DataListSpItemUpdateFunc(realIndex, kmlcontrol)
- local strength_panel = GUI:GetChildControl(self.view.attr_data_list,realIndex,'special_panel')
- local strength_info = GUI:GetChildControl(self.view.attr_data_list,realIndex,'special_attr_name')
- local strength_value = GUI:GetChildControl(self.view.attr_data_list,realIndex,'special_value')
- local attr_id = self.special_item[realIndex+1]
- local attrName = SL:GetConfig('cfg_att_info', attr_id).name
- local attrRemark = SL:GetConfig('cfg_att_info', attr_id).remarks
- local attrValue = SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", attr_id)
- if attrValue == nil or attrValue == 0 then
- GUI:setVisible(strength_panel, false)
- return
- end
- GUI:setVisible(strength_panel, true)
- if attrRemark == EAttrRemarkType.Dimi then
- attrValue = string.format("%0.2f%%",SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", attr_id)/100)
- end
- GUI:Text_setString(strength_info,attrName)
- GUI:Text_setString(strength_value,tostring(attrValue))
- end
- function this:RefreshRightAttr()
- self.special_item = {}
- local secondAttrTbl = this.GetRightTwoAttr()
- for _, second_info in pairs(secondAttrTbl) do
- local attrValue = SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", second_info.id)
- if attrValue ~= nil and attrValue ~= 0 then
- table.insert(self.special_item, second_info.id)
- end
- end
- GUI:DataListInitData( self.view.attr_data_list,function()
- return self:DataListSpItemCountFunc()
- end,function(realIndex)
- return self:DataListSpItemGetFunc(realIndex)
- end,function(realIndex, kmlcontrol)
- return self:DataListSpItemInitFunc(realIndex, kmlcontrol)
- end, function(realIndex, kmlcontrol)
- return self:DataListSpItemUpdateFunc(realIndex, kmlcontrol)
- end)
- GUI:DataListUpdateData(self.view.attr_data_list)
- end
- ---创建或者刷新界面数据时调用
- function KLAttrPanel:Refresh()
- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_ROLE_ATT_ADD_WAY)
- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_ROLE_ATTR_POINT_PROGRAMME)
- --GUI:DataListUpdateData(self.view.attInfoContent_dc_content)
- --GUI:DataListUpdateData(self.view.attInfoContent_intelligence_content)
- --GUI:DataListUpdateData(self.view.attInfoContent_command_content)
- --GUI:DataListUpdateData(self.view.attInfoContent_stamina_content)
- --GUI:DataListUpdateData(self.view.attInfoContent_agility_content)
- self:RefreshRightAttr()
- --设置名字
- GUI:Text_setString(self.view.name, SL:GetMetaValue(EMetaVarGetKey.USER_NAME))
- --设置职业
- --local careerId = cfg_career_post.Get_cfg_career_id(SL:MeData_GetCareer())
- local careerId = SL:CfgCareerPost_GetCfgCareerId(SL:MeData_GetCareer())
- --local careerName = cfg_career_post.Get_cfg_career_name(careerId) or "未定义职业"
- local careerName = SL:CfgCareerPost_GetCfgCareerName(careerId) or "未定义职业"
- local serverName = SL:GetCurServerName()
- GUI:Text_setString(self.view.regionAndCareer, string.format("[%s-%s]", serverName, careerName))
- --等级
- local level = SL:MeData_GetLevel()
- GUI:Text_setString(self.view.levelText, "等级:" .. level)
- --剩余点数
- self:SetFreePoint()
- --经验
- self:RefreshExpText()
- --力量等属性
- self:SetAddNumInfo()
- self:SetAddSubBtnState()
-
- self:ShowFruitButton()
- self:ShowFruitPanel(self.args and self.args.isShowFruit)
- SL.HideMainPanel()
-
- self:SetFreeSwitchAttrPoint(true)
- end
- function this:SetFreeSwitchAttrPoint(isShow)
- if isShow then
- GUI:setVisible(self.view.btn_exchange_point, PrivilegeCardManager.GetFreeSwitchAttrPoint())
- else
- GUI:setVisible(self.view.btn_exchange_point,false)
- end
- end
- function this:ShowFruitButton()
- ---@type cfg_global_column
- local cfg = SL:GetConfig("cfg_global",3003)
- ---果实是否开放
- self.isFruitOpen = SL:MeData_GetLevel() >= tonumber(cfg.value)
- GUI:SetActive(self.view.appleButton,self.isFruitOpen)
- SL:RefreshPanelALLRedPoint("KLAttrPanel")
- end
- ---注册UI事件和服务器消息
- function KLAttrPanel:RegistEvents()
- SL:RegisterLUAEvent(LUA_EVENT_EXPCHANGE,self.LUA_EVENT_EXPCHANGE,self)
- SL:RegisterLUAEvent(LUA_EVENT_ROLE_PROPERTY_CHANGE,self.LUA_EVENT_ROLE_PROPERTY_CHANGE,self)
- SL:RegisterLUAEvent(LUA_EVENT_SURE_ATTR_PLAN,self.LUA_EVENT_SURE_ATTR_PLAN,self)
- SL:RegisterLUAEvent(LUA_EVENT_RESET_POINT,self.LUA_EVENT_RESET_POINT,self)
- SL:RegisterLUAEvent(LUA_EVENT_FRUIT_PANEL_CLOSE, self.CloseFruitPanel, self)
- --SL:RegisterLuaNetMsg(MessageDef.ResRoleDeployAttrPointMessage,self.ResRoleDeployAttrPointMessage,self)
- --SL:RegisterLuaNetMsg(MessageDef.ResAttAddWayMessage,self.ResAttAddWayMessage,self)
- GUI:AddOnClickEvent(self.view.attrCloseButton,self,self.OnClickCloseButton)
- GUI:AddOnClickEvent(self.view.CloseButton,self,self.OnClickCloseButton)
- GUI:AddOnClickEvent(self.view.plusButton_dc,self,self.plusButton_dc)
- GUI:AddOnClickEvent(self.view.plusButton_stamina,self,self.plusButton_stamina)
- GUI:AddOnClickEvent(self.view.plusButton_intelligence,self,self.plusButton_intelligence)
- GUI:AddOnClickEvent(self.view.plusButton_command,self,self.plusButton_command)
- GUI:AddOnClickEvent(self.view.plusButton_agility,self,self.plusButton_agility)
- GUI:AddOnClickEvent(self.view.minusButton_dc,self,self.minusButton_dc)
- GUI:AddOnClickEvent(self.view.minusButton_stamina,self,self.minusButton_stamina)
- GUI:AddOnClickEvent(self.view.minusButton_intelligence,self,self.minusButton_intelligence)
- GUI:AddOnClickEvent(self.view.minusButton_command,self,self.minusButton_command)
- GUI:AddOnClickEvent(self.view.minusButton_agility,self,self.minusButton_agility)
- GUI:AddOnClickEvent(self.view.sureButton,self,self.sureButton)
- GUI:AddOnClickEvent(self.view.commandButton,self,self.commandButton)
- GUI:AddOnClickEvent(self.view.resetPointButton,self,self.resetPointButton)
- GUI:AddOnClickEvent(self.view.appleButton,self,self.OnClickApple)
-
- GUI:AddOnClickEvent(self.view.btn_exchange_point,self,self.btn_exchange_point)
- end
- ---果实按钮
- function this:OnClickApple()
- self:ShowFruitPanel(not self.isShowFruitUI)
- end
- function this:CloseFruitPanel()
- self:ShowFruitPanel(false)
- end
- ---显示果实界面
- function this:ShowFruitPanel(isShow)
- self.isShowFruitUI = isShow
- GUI:SetActive(self.view.AttrEffect,not isShow)
- if isShow then
- GUI:setPosition(self.view.root,-90,0)
- GUI:UIPanel_Open("dev/outui/UIFruit/Panel/KLUIFruit/KLUIFruitPanel")
- else
- GUI:setPosition(self.view.root,5,0)
- GUI:UIPanel_Close("dev/outui/UIFruit/Panel/KLUIFruit/KLUIFruitPanel")
- end
- end
- function this:btn_exchange_point()
- GUI:UIPanel_Open("dev/outui/Role/Panel/KLChangeAttrScheme/KLChangeAttrSchemePanel")
- end
- function this:resetPointButton()
- GUI:UIPanel_Open("dev/ui/Role/Item/KLResetPoint/KLResetPointItem",nil,self)
- end
- function this:commandButton()
- local attAddWay = SL:MeData_GetRoleExtInfo().attAddWay
- --local attAddWay = 0
- if attAddWay == -1 then
- ---@type cfg_career_column
- local tbl = SL:GetMetaValue(EMetaVarGetKey.ME_CAREER_TAB_COLUMN)
- GUI:UIPanel_Open("dev/outui/Role/Panel/KLAttPointSuitChoice/KLAttPointSuitChoicePanel",nil,nil,{curCareer=tbl.id})
- return
- end
- local tbl = SL:GetConfigMultiKeys('cfg_career', SL:MeData_GetCareer().baseCareer, SL:MeData_GetCareer().careerRank, 'baseCareer', 'careerRank')
- commandAdd = tbl.careerRec
- if commandAdd == nil or not next(commandAdd) then
- logError("推荐加点方案为空")
- return
- end
- commandAdd = commandAdd[attAddWay+1]
- -- 每个属性分配点数: 可用点数/(力量+敏捷+体力+智力+统帅) 除后的商 乘以具体的属性值 余数加到职业对应优势属性上
- local totalCount = 0
- for _, attrCount in pairs(commandAdd) do
- totalCount = totalCount + attrCount
- end
- -- 除数为0, 不执行推荐加点逻辑。
- if totalCount == 0 then
- return
- end
- local addCount = self.freePoint // totalCount
- self.add_strength = self.add_strength + commandAdd[1] * addCount
- self.add_spirit = self.add_spirit + commandAdd[3] * addCount
- self.add_intelligence = self.add_intelligence + commandAdd[4] * addCount
- self.add_lead = self.add_lead + commandAdd[5] * addCount
- self.add_agility = self.add_agility + commandAdd[2] * addCount
- self.freePoint = self.freePoint - addCount * totalCount
- -- 余数加到职业对应优势属性上
- -- 优势属性:推荐加点中比例最大的属性,如果存在同比例的属性,则按照力量>敏捷>体力>智力>统帅来(按照commandAdd的最先最大的.)
- if self.freePoint > 0 then
- local maxCount = -1
- local selectIndex= -1
- for attrIndex, count in pairs(commandAdd) do
- if maxCount < count then
- maxCount = count
- selectIndex = attrIndex
- end
- end
- if selectIndex == 1 then
- self.add_strength = self.add_strength + self.freePoint
- elseif selectIndex == 2 then
- self.add_agility = self.add_agility + self.freePoint
- elseif selectIndex == 3 then
- self.add_spirit = self.add_spirit + self.freePoint
- elseif selectIndex == 4 then
- self.add_intelligence = self.add_intelligence + self.freePoint
- elseif selectIndex == 5 then
- self.add_lead = self.add_lead + self.freePoint
- end
- self.freePoint = 0
- end
- self:SetFreePoint()
- self:SetAddNumInfo()
- self:SetAddSubBtnState()
- end
- function this:ResRoleDeployAttrPointMessage()
- --剩余点数
- --local freePoint = SL:MeData_GetRoleExtInfo().remainAttrPoint or 0
- --GUI:Text_setString(self.view.remainPointText, tostring(freePoint))
- --力量等属性
- self:SetAddNumInfo()
- end
- function this:sureButton()
- local sendData = {}
- if self.add_strength > 0 then
- table.insert(sendData, { type = EMUCharacterAttrType.strength, num = self.add_strength })
- end
- if self.add_agility > 0 then
- table.insert(sendData, { type = EMUCharacterAttrType.agility, num = self.add_agility })
- end
- if self.add_lead > 0 then
- table.insert(sendData, { type = EMUCharacterAttrType.lead, num = self.add_lead })
- end
- if self.add_intelligence > 0 then
- table.insert(sendData, { type = EMUCharacterAttrType.intelligence, num = self.add_intelligence })
- end
- if self.add_spirit > 0 then
- table.insert(sendData, { type = EMUCharacterAttrType.spirit, num = self.add_spirit })
- end
- SL.RoleAtt:ReqDeployAttrPoint(sendData,1)
- self:SaveEachPlanAttrPoint(sendData)
- self:Reset()
- end
- function this:SaveEachPlanAttrPoint(data)
- local sendData = {}
- local tempData = {}
- local oldData = PrivilegeCardManager.GetCurrentAttrPointPlan()
- if oldData then
- for i, v in pairs(oldData) do
- tempData[v.type] = v.num
- end
- for i, v in pairs(data) do
- if tempData[v.type] then
- tempData[v.type] = tempData[v.type] + v.num
- else
- tempData[v.type] = v.num
- end
- end
- for i, v in pairs(tempData) do
- local tbl = {}
- tbl.type = i
- tbl.num = v
- sendData[#sendData + 1] = tbl
- end
- else
- sendData = data
- end
- PrivilegeCardManager.SendMessageSetFreeAttrInfo(nil, sendData, nil)
- end
- function this:Reset()
- self.add_strength = 0
- self.add_agility = 0
- self.add_lead = 0
- self.add_intelligence = 0
- self.add_spirit = 0
- self:SetAddNumInfo()
- self:SetAddSubBtnState()
- end
- function this:plusButton_dc()
- if SL:MeData_GetRoleExtInfo().RemainAttrPoint > self.calcShowPoint then
- GUI:UIPanel_Open("dev/ui/Common/Panel/KLCalc/KLCalcPanel",nil,nil, {x=-278, maxNum=self.freePoint, callback=self.plus_dc, ins=self, intro="增加点数"})
- return
- end
- if self.freePoint > 0 then
- self.freePoint = self.freePoint - 1
- self.add_strength = self.add_strength + 1
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- end
- function this:plus_dc(addValue)
- self.freePoint = self.freePoint - addValue
- self.add_strength = self.add_strength + addValue
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- function this:plusButton_stamina()
- if SL:MeData_GetRoleExtInfo().RemainAttrPoint > self.calcShowPoint then
- GUI:UIPanel_Open("dev/ui/Common/Panel/KLCalc/KLCalcPanel",nil,nil, {maxNum=self.freePoint, callback=self.plus_sta, ins=self, intro="增加点数"})
- return
- end
- if self.freePoint > 0 then
- self.freePoint = self.freePoint - 1
- self.add_spirit = self.add_spirit + 1
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- end
- function this:plus_sta(addValue)
- self.freePoint = self.freePoint - addValue
- self.add_spirit = self.add_spirit + addValue
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- function this:plusButton_intelligence()
- if SL:MeData_GetRoleExtInfo().RemainAttrPoint > self.calcShowPoint then
- GUI:UIPanel_Open("dev/ui/Common/Panel/KLCalc/KLCalcPanel",nil,nil, {maxNum=self.freePoint, callback=self.plus_intel, ins=self, intro="增加点数"})
- return
- end
- if self.freePoint > 0 then
- self.freePoint = self.freePoint - 1
- self.add_intelligence = self.add_intelligence + 1
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- end
- function this:plus_intel(addValue)
- self.freePoint = self.freePoint - addValue
- self.add_intelligence = self.add_intelligence + addValue
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- function this:plusButton_command()
- if SL:MeData_GetRoleExtInfo().RemainAttrPoint > self.calcShowPoint then
- GUI:UIPanel_Open("dev/ui/Common/Panel/KLCalc/KLCalcPanel",nil,nil, {maxNum=self.freePoint, callback=self.plus_lead, ins=self, intro="增加点数"})
- return
- end
- if self.freePoint > 0 then
- self.freePoint = self.freePoint - 1
- self.add_lead = self.add_lead + 1
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- end
- function this:plus_lead(addValue)
- self.freePoint = self.freePoint - addValue
- self.add_lead = self.add_lead + addValue
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- function this:plusButton_agility()
- if SL:MeData_GetRoleExtInfo().RemainAttrPoint > self.calcShowPoint then
- GUI:UIPanel_Open("dev/ui/Common/Panel/KLCalc/KLCalcPanel",nil,nil, {maxNum=self.freePoint, callback=self.plus_ag, ins=self, intro="增加点数"})
- return
- end
- if self.freePoint > 0 then
- self.freePoint = self.freePoint - 1
- self.add_agility = self.add_agility + 1
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- end
- function this:plus_ag(addValue)
- self.freePoint = self.freePoint - addValue
- self.add_agility = self.add_agility + addValue
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- function this:minusButton_agility()
- if SL:MeData_GetRoleExtInfo().RemainAttrPoint > self.calcShowPoint then
- GUI:UIPanel_Open("dev/ui/Common/Panel/KLCalc/KLCalcPanel",nil,nil, {maxNum=self.add_agility, callback=self.minus_ag, ins=self, intro="减少点数"})
- return
- end
- if self.add_agility > 0 then
- self.freePoint = self.freePoint + 1
- self.add_agility = self.add_agility - 1
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- end
- function this:minus_ag(addValue)
- self.freePoint = self.freePoint + addValue
- self.add_agility = self.add_agility - addValue
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- function this:minusButton_dc()
- if SL:MeData_GetRoleExtInfo().RemainAttrPoint > self.calcShowPoint then
- GUI:UIPanel_Open("dev/ui/Common/Panel/KLCalc/KLCalcPanel",nil,nil, {maxNum=self.add_strength, callback=self.minus_dc, ins=self, intro="减少点数"})
- return
- end
- if self.add_strength > 0 then
- self.freePoint = self.freePoint + 1
- self.add_strength = self.add_strength - 1
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- end
- function this:minus_dc(addValue)
- self.freePoint = self.freePoint + addValue
- self.add_strength = self.add_strength - addValue
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- function this:minusButton_stamina()
- if SL:MeData_GetRoleExtInfo().RemainAttrPoint > self.calcShowPoint then
- GUI:UIPanel_Open("dev/ui/Common/Panel/KLCalc/KLCalcPanel",nil,nil, {maxNum=self.add_spirit, callback=self.minus_sta, ins=self, intro="减少点数"})
- return
- end
- if self.add_spirit > 0 then
- self.freePoint = self.freePoint + 1
- self.add_spirit = self.add_spirit - 1
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- end
- function this:minus_sta(addValue)
- self.freePoint = self.freePoint + addValue
- self.add_spirit = self.add_spirit - addValue
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- function this:minusButton_intelligence()
- if SL:MeData_GetRoleExtInfo().RemainAttrPoint > self.calcShowPoint then
- GUI:UIPanel_Open("dev/ui/Common/Panel/KLCalc/KLCalcPanel",nil,nil, {maxNum=self.add_intelligence, callback=self.minus_intel, ins=self, intro="减少点数"})
- return
- end
- if self.add_intelligence > 0 then
- self.freePoint = self.freePoint + 1
- self.add_intelligence = self.add_intelligence - 1
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- end
- function this:minus_intel(addValue)
- self.freePoint = self.freePoint + addValue
- self.add_intelligence = self.add_intelligence - addValue
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- function this:minusButton_command()
- if SL:MeData_GetRoleExtInfo().RemainAttrPoint > self.calcShowPoint then
- GUI:UIPanel_Open("dev/ui/Common/Panel/KLCalc/KLCalcPanel",nil,nil, {maxNum=self.add_lead, callback=self.minus_le, ins=self, intro="减少点数"})
- return
- end
- if self.add_lead > 0 then
- self.freePoint = self.freePoint + 1
- self.add_lead = self.add_lead - 1
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- end
- function this:minus_le(addValue)
- self.freePoint = self.freePoint + addValue
- self.add_lead = self.add_lead - addValue
- self:SetAddSubBtnState()
- self:SetFreePoint()
- self:SetAddNumInfo()
- end
- function this:OnClickCloseButton()
- GUI:UIPanel_Close("dev/ui/Role/Panel/KLAttr/KLAttrPanel")
- GUI:UIPanel_Close("dev/ui/Common/Panel/KLCalc/KLCalcPanel")
- SL.ShowMainPanel()
- end
- function this:Close()
- self:ShowFruitPanel(false)
- end
- function this:LUA_EVENT_EXPCHANGE()
- self:RefreshExpText()
- end
- function this:LUA_EVENT_ROLE_PROPERTY_CHANGE()
- SL:RefreshPanelALLRedStateKmlByCondition("checkUnusedAbility")
- self:SetAddNumInfo()
- self:RefreshRightAttr()
- if PrivilegeCardManager.attrNeedRefresh then
- SL:ScheduleOnce(0.1, function()
- PrivilegeCardManager.attrNeedRefresh = false
- self:ResetUi()
- end)
- end
- end
- ---@param message RoleProtos.DeployResult
- function this:LUA_EVENT_RESET_POINT(id, message)
- self:ResetUi()
- SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_ROLE_ATT_ADD_WAY)
- end
- ---@param message UserProtos.SetRoleAttAddWay
- function this:LUA_EVENT_SURE_ATTR_PLAN(id, message)
- self:SetFreePoint()
- --self:commandButton()
- end
- function this:ResetUi()
- self.freePoint = SL:MeData_GetRoleExtInfo().RemainAttrPoint
- self:SetFreePoint()
- self.add_strength = 0
- self.add_agility = 0
- self.add_intelligence = 0
- self.add_spirit = 0
- self.add_lead = 0
- self:SetAddNumInfo()
- self:SetAddSubBtnState()
- end
- function this:RefreshExpText()
- local nowExp = SL:MeData_GetRoleExtInfo().exp + SL:MeData_GetRoleExtInfo().expandExp
- local needExp = SL:GetConfig("cfg_level", SL:MeData_GetLevel()).exp
- if needExp == 0 then
- if SL:HasConfig("cfg_level", SL:MeData_GetLevel() + 1) then
- needExp = SL:GetConfig("cfg_level", SL:MeData_GetLevel() + 1).exp
- end
- end
- GUI:Text_setString(self.view.expText, string.format("经验值:%s/%s", Misc.GetSampleNumberString(nowExp), Misc.GetSampleNumberString(needExp)))
- end
- -- 分配点数按钮显隐
- function this:SetAddSubBtnState()
- if self.freePoint == 0 then
- GUI:setVisible(self.view.plusButton_dc, false)
- GUI:setVisible(self.view.plusButton_agility, false)
- GUI:setVisible(self.view.plusButton_command, false)
- GUI:setVisible(self.view.plusButton_intelligence, false)
- GUI:setVisible(self.view.plusButton_stamina, false)
- else
- GUI:setVisible(self.view.plusButton_dc, true)
- GUI:setVisible(self.view.plusButton_agility, true)
- GUI:setVisible(self.view.plusButton_command, true)
- GUI:setVisible(self.view.plusButton_intelligence, true)
- GUI:setVisible(self.view.plusButton_stamina, true)
- end
- GUI:setVisible(self.view.minusButton_agility, self.add_agility > 0 and true or false)
- GUI:setVisible(self.view.minusButton_intelligence, self.add_intelligence > 0 and true or false)
- GUI:setVisible(self.view.minusButton_command, self.add_lead > 0 and true or false)
- GUI:setVisible(self.view.minusButton_stamina, self.add_spirit > 0 and true or false)
- GUI:setVisible(self.view.minusButton_dc, self.add_strength > 0 and true or false)
- if self.add_spirit | self.add_intelligence | self.add_lead + self.add_agility | self.add_strength > 0 then
- GUI:setVisible(self.view.sureButton, true)
- GUI:setVisible(self.view.light_btn1, true)
- GUI:SetActive(self.view.appleButton,false)
- self:SetFreeSwitchAttrPoint(false)
- else
- GUI:setVisible(self.view.sureButton, false)
- GUI:setVisible(self.view.light_btn1, false)
- if self.isFruitOpen then
- GUI:SetActive(self.view.appleButton,true)
- end
- self:SetFreeSwitchAttrPoint(true)
- end
- end
- function this:SetFreePoint()
- GUI:Text_setString(self.view.remainPointText, tostring(self.freePoint))
- if self.freePoint > 0 then
- GUI:setVisible(self.view.commandButton, true)
- GUI:setVisible(self.view.light_btn, true)
- else
- GUI:setVisible(self.view.commandButton, false)
- GUI:setVisible(self.view.light_btn, false)
- end
- if SL:MeData_GetRoleExtInfo().attAddWay == -1 then
- GUI:Text_setString(self.view.commandButton_text, "职业切换")
- else
- GUI:Text_setString(self.view.commandButton_text, "推荐加点")
- end
- --GUI:Text_setString(self.view.commandButton_text, "推荐加点")
- end
- function this:SetAddNumInfo()
- local strength = SL:GetMetaValue("GET_ATTR_VALUE_BY_ID", EMUCharacterAttrType.strength)
- if self.add_strength > 0 then
- GUI:Text_setString(self.view.num_dc, string.format("%s<color=\"#4CC5FE\"> + %s</color>", strength, self.add_strength))
- else
- GUI:Text_setString(self.view.num_dc, tostring(strength))
- end
- local agility = SL:MeData_GetSpecialAttrValue(EMUCharacterAttrType.agility)
- if self.add_agility > 0 then
- GUI:Text_setString(self.view.num_agility, string.format("%s<color=\"#4CC5FE\"> + %s</color>", agility, self.add_agility))
- else
- GUI:Text_setString(self.view.num_agility, tostring(agility))
- end
- local intelligence = SL:MeData_GetSpecialAttrValue(EMUCharacterAttrType.intelligence)
- if self.add_intelligence > 0 then
- GUI:Text_setString(self.view.num_intelligence, string.format("%s<color=\"#4CC5FE\"> + %s</color>", intelligence, self.add_intelligence))
- else
- GUI:Text_setString(self.view.num_intelligence, tostring(intelligence))
- end
- local spirit = SL:MeData_GetSpecialAttrValue(EMUCharacterAttrType.spirit)
- if self.add_spirit > 0 then
- GUI:Text_setString(self.view.num_stamina, string.format("%s<color=\"#4CC5FE\"> + %s</color>", spirit, self.add_spirit))
- else
- GUI:Text_setString(self.view.num_stamina, tostring(spirit))
- end
- local lead = SL:MeData_GetSpecialAttrValue(EMUCharacterAttrType.lead)
- if self.add_lead > 0 then
- GUI:Text_setString(self.view.num_command, string.format("%s<color=\"#4CC5FE\"> + %s</color>", lead, self.add_lead))
- else
- GUI:Text_setString(self.view.num_command, tostring(lead))
- end
- GUI:DataListUpdateData(self.view.attInfoContent_dc_content)
- GUI:DataListUpdateData(self.view.attInfoContent_intelligence_content)
- GUI:DataListUpdateData(self.view.attInfoContent_command_content)
- GUI:DataListUpdateData(self.view.attInfoContent_stamina_content)
- GUI:DataListUpdateData(self.view.attInfoContent_agility_content)
- end
- function this:GetSpecialAttrAdd(addAttrId)
- if not SL:HasConfig("cfg_att_info", addAttrId) then
- logError("改属性id不存在")
- return 0
- end
-
- local cfgInfo = SL:GetConfig("cfg_att_info", addAttrId)
- local addInfo = SL:GetMetaValue(EMetaVarGetKey.GET_ADD_PER,cfgInfo.attribute)
- -- 获取当前二级属性的属性值, 因为服务端发的是整数(抹去小数点), 数值减差值前要对差值/10000进行处理.
- -- 属性类型是数值的处理:1.5+1.6=3.1 要显示+2, 因为是从1->3, 所以计算方式为抹小数点的结果减去抹小数点的起始值 3-1=2
- -- 是万分比的话 15.25%-> 20.00%, (2000-1525) / 100 = 4.75
-
- local nowAttr = 0
- local attrName = SL:GetConfig("cfg_att_info", EMUCharacterAttrType.strength).attribute
- local nowAttrPoint = SL:MeData_GetSpecialAttrValue(EMUCharacterAttrType.strength)
- nowAttr = nowAttr + addInfo[attrName] * nowAttrPoint
- attrName = SL:GetConfig("cfg_att_info", EMUCharacterAttrType.agility).attribute
- nowAttrPoint = SL:MeData_GetSpecialAttrValue(EMUCharacterAttrType.agility)
- nowAttr = nowAttr + addInfo[attrName] * nowAttrPoint
- attrName = SL:GetConfig("cfg_att_info", EMUCharacterAttrType.spirit).attribute
- nowAttrPoint = SL:MeData_GetSpecialAttrValue(EMUCharacterAttrType.spirit)
- nowAttr = nowAttr + addInfo[attrName] * nowAttrPoint
- attrName = SL:GetConfig("cfg_att_info", EMUCharacterAttrType.intelligence).attribute
- nowAttrPoint = SL:MeData_GetSpecialAttrValue(EMUCharacterAttrType.intelligence)
- nowAttr = nowAttr + addInfo[attrName] * nowAttrPoint
- attrName = SL:GetConfig("cfg_att_info", EMUCharacterAttrType.lead).attribute
- nowAttrPoint = SL:MeData_GetSpecialAttrValue(EMUCharacterAttrType.lead)
- nowAttr = nowAttr + addInfo[attrName] * nowAttrPoint
- local addTotalAttr = 0
- attrName = SL:GetConfig("cfg_att_info", EMUCharacterAttrType.strength).attribute
- nowAttrPoint = SL:MeData_GetSpecialAttrValue(EMUCharacterAttrType.strength)
- addTotalAttr = addTotalAttr + addInfo[attrName] * (nowAttrPoint + self.add_strength)
- attrName = SL:GetConfig("cfg_att_info", EMUCharacterAttrType.agility).attribute
- nowAttrPoint = SL:MeData_GetSpecialAttrValue(EMUCharacterAttrType.agility)
- addTotalAttr = addTotalAttr + addInfo[attrName] * (nowAttrPoint + self.add_agility)
- attrName = SL:GetConfig("cfg_att_info", EMUCharacterAttrType.spirit).attribute
- nowAttrPoint = SL:MeData_GetSpecialAttrValue(EMUCharacterAttrType.spirit)
- addTotalAttr = addTotalAttr + addInfo[attrName] * (nowAttrPoint + self.add_spirit)
- attrName = SL:GetConfig("cfg_att_info", EMUCharacterAttrType.intelligence).attribute
- nowAttrPoint = SL:MeData_GetSpecialAttrValue(EMUCharacterAttrType.intelligence)
- addTotalAttr = addTotalAttr + addInfo[attrName] * (nowAttrPoint + self.add_intelligence)
- attrName = SL:GetConfig("cfg_att_info", EMUCharacterAttrType.lead).attribute
- nowAttrPoint = SL:MeData_GetSpecialAttrValue(EMUCharacterAttrType.lead)
- addTotalAttr = addTotalAttr + addInfo[attrName] * (nowAttrPoint + self.add_lead)
- -- 数值的
- if cfgInfo.remarks == EAttrRemarkType.Number then
- return addTotalAttr // 10000 - nowAttr // 10000
- elseif cfgInfo.remarks == EAttrRemarkType.Dimi then
- return (addTotalAttr - nowAttr) / 100
- else
- logError("属性数值类型非数值或万分比,需要策划告知处理规则, attrId = " .. addAttrId)
- return 0
- end
- end
- return KLAttrPanel
|