Files
Endfield-Data/LuaScripts/UI/Widgets/UpgradeWeaponInfo.lua
2025-12-02 20:37:18 +07:00

134 lines
4.2 KiB
Lua

local WeaponInfo = require_ex('UI/Widgets/WeaponInfo')
UpgradeWeaponInfo = HL.Class('UpgradeWeaponInfo', WeaponInfo)
UpgradeWeaponInfo.m_sliderTween = HL.Field(HL.Any)
UpgradeWeaponInfo._OnFirstTimeInit = HL.Override() << function(self)
self.view.upgradeLevelNode.addExp.text = 0
self.view.upgradeLevelNode.addLevel.text = 0
self.view.upgradeLevelNode.addExpBar.fillAmount = 0
end
UpgradeWeaponInfo.InitUpgradeWeaponInfo = HL.Method(HL.Table) << function(self, arg)
self:_FirstTimeInit()
local weaponExhibitInfo = arg.weaponExhibitInfo
local curLevel = arg.curLevel
local targetLevel = arg.targetLevel
local curExp = arg.curExp
local nextLvExp = arg.nextLvExp
local addExp = arg.addExp
local addLevel = targetLevel - curLevel
self:_RefreshNameNode(weaponExhibitInfo)
self.view.levelBreakNode.gameObject:SetActive(false)
self.view.weaponAttributeNode.gameObject:SetActive(true)
self.view.weaponSkillNode.gameObject:SetActive(false)
if arg.inUpgradeTransition then
self.view.upgradeLevelNode.curExp.text = curExp
self.view.upgradeLevelNode.addLevel.text = addLevel
self.view.upgradeLevelNode.addExp.text = addExp
self.view.upgradeLevelNode.curLevel.tweenToText = curLevel
else
self.view.upgradeLevelNode.curExp.text = curExp
self.view.upgradeLevelNode.addLevel.tweenToText = addLevel
self.view.upgradeLevelNode.addExp.text = addExp
self.view.upgradeLevelNode.curLevel.text = curLevel
end
self.view.upgradeLevelNode.stageLevel.text = weaponExhibitInfo.stageLv
if self.m_sliderTween then
self.m_sliderTween:Kill()
end
self.view.upgradeLevelNode.currentExpBar.fillAmount = (targetLevel > curLevel) and 0 or (curExp / nextLvExp)
local newValue = (curExp + addExp) / nextLvExp
self.m_sliderTween = DOTween.To(function()
return self.view.upgradeLevelNode.addExpBar.fillAmount
end, function(value)
self.view.upgradeLevelNode.addExpBar.fillAmount = value
end, newValue, self.view.config.SLIDER_TWEEN_TIME)
self.view.upgradeLevelNode.nextLvExp.text = nextLvExp
self.view.weaponAttributeNode:InitWeaponUpgradeAttributeNode({
fromLv = weaponExhibitInfo.curLv,
fromBreakthroughLv = weaponExhibitInfo.curBreakthroughLv,
toLv = targetLevel,
toBreakthroughLv = weaponExhibitInfo.curBreakthroughLv,
weaponInstId = weaponExhibitInfo.weaponInst.instId,
},{
showAttrTransition = arg.inUpgradeTransition
})
end
UpgradeWeaponInfo.InitBreakWeaponInfo = HL.Method(HL.Table) << function(self, arg)
self:_FirstTimeInit()
local weaponExhibitInfo = arg.weaponExhibitInfo
local weaponInstId = weaponExhibitInfo.weaponInst.instId
local weaponInst = CharInfoUtils.getWeaponByInstId(weaponInstId)
local fromBreakthroughCfg = CharInfoUtils.getWeaponExpInfo(weaponInstId, weaponInst.breakthroughLv)
local toBreakthroughCfg = CharInfoUtils.getWeaponExpInfo(weaponInstId, weaponInst.breakthroughLv + 1)
self.view.weaponAttributeNode.gameObject:SetActive(false)
self.view.weaponSkillNode.gameObject:SetActive(true)
self.view.breakLevelNode.currentLevel.text = fromBreakthroughCfg.stageLv
self.view.breakLevelNode.fromLevel.text = fromBreakthroughCfg.stageLv
self.view.breakLevelNode.toLevel.text = toBreakthroughCfg.stageLv
self.view.levelBreakNode.gameObject:SetActive(true)
self.view.levelBreakNode:InitLevelBreakNode(weaponExhibitInfo.curBreakthroughLv, true, weaponExhibitInfo.breakthroughInfoList)
self.view.weaponAttributeNode:InitWeaponUpgradeAttributeNode({
fromLv = weaponExhibitInfo.curLv,
toLv = weaponExhibitInfo.curLv,
fromBreakthroughLv = weaponInst.breakthroughLv,
toBreakthroughLv = weaponInst.breakthroughLv + 1,
weaponInstId = weaponExhibitInfo.weaponInst.instId,
})
self.view.weaponSkillNode:InitWeaponSkillNode(weaponInstId, {
tryBreakthroughLv = weaponInst.breakthroughLv + 1,
tryRefineLv = weaponInst.refineLv,
})
end
UpgradeWeaponInfo._OnDestroy = HL.Override() << function(self)
if self.m_sliderTween then
self.m_sliderTween:Kill()
end
end
HL.Commit(UpgradeWeaponInfo)
return UpgradeWeaponInfo