5e0d58cfad
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
115 lines
4.3 KiB
Lua
115 lines
4.3 KiB
Lua
local TemplateExpBarCtrl = class("TemplateExpBarCtrl", BaseCtrl)
|
|
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
|
|
TemplateExpBarCtrl._mapNodeConfig = {
|
|
imgBar = {sComponentName = "Image"},
|
|
imgBarAdd = {sComponentName = "Image"},
|
|
txtCurExp = {sComponentName = "TMP_Text"},
|
|
txtMaxCn = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Template_ExpBar_Max"
|
|
}
|
|
}
|
|
TemplateExpBarCtrl._mapEventConfig = {}
|
|
function TemplateExpBarCtrl:Refresh(mapBefore, mapAfter)
|
|
if not mapAfter then
|
|
local bMaxLv = mapBefore.nLevel == mapBefore.nMaxLevel
|
|
self._mapNode.imgBarAdd.gameObject:SetActive(false)
|
|
self._mapNode.imgBar.gameObject:SetActive(true)
|
|
NovaAPI.SetImageFillAmount(self._mapNode.imgBar, bMaxLv and 1 or mapBefore.nExp / mapBefore.nMaxExp)
|
|
self._mapNode.txtMaxCn.gameObject:SetActive(bMaxLv)
|
|
self._mapNode.txtCurExp.gameObject:SetActive(not bMaxLv)
|
|
if not bMaxLv then
|
|
NovaAPI.SetTMPText(self._mapNode.txtCurExp, mapBefore.nExp .. "/" .. mapBefore.nMaxExp)
|
|
end
|
|
else
|
|
local bMaxLv = mapAfter.nLevel == mapAfter.nMaxLevel
|
|
self._mapNode.imgBarAdd.gameObject:SetActive(true)
|
|
NovaAPI.SetImageFillAmount(self._mapNode.imgBarAdd, bMaxLv and 1 or mapAfter.nExp / mapAfter.nMaxExp)
|
|
self._mapNode.imgBar.gameObject:SetActive(mapBefore.nLevel == mapAfter.nLevel)
|
|
if mapBefore.nLevel == mapAfter.nLevel then
|
|
NovaAPI.SetImageFillAmount(self._mapNode.imgBar, bMaxLv and 1 or mapBefore.nExp / mapBefore.nMaxExp)
|
|
self._mapNode.imgBarAdd.gameObject:SetActive(mapAfter.nExp > mapBefore.nExp)
|
|
end
|
|
self._mapNode.txtMaxCn.gameObject:SetActive(bMaxLv)
|
|
self._mapNode.txtCurExp.gameObject:SetActive(not bMaxLv)
|
|
if not bMaxLv then
|
|
NovaAPI.SetTMPText(self._mapNode.txtCurExp, mapAfter.nExp .. "/" .. mapAfter.nMaxExp)
|
|
end
|
|
end
|
|
end
|
|
function TemplateExpBarCtrl:PlayAni(mapBefore, mapAfter, callback, txt)
|
|
local bMaxLv = mapAfter.nLevel == mapAfter.nMaxLevel
|
|
local nAddLevel = mapAfter.nLevel - mapBefore.nLevel
|
|
local nAddCount = 0
|
|
if nAddLevel == 0 then
|
|
nAddCount = 1
|
|
elseif 0 < mapAfter.nExp then
|
|
nAddCount = nAddLevel + 1
|
|
else
|
|
nAddCount = nAddLevel
|
|
end
|
|
local nAniTime = 0.2
|
|
if nAddCount < 6 then
|
|
nAniTime = 0.2
|
|
elseif 6 <= nAddCount and nAddCount < 11 then
|
|
nAniTime = 0.06
|
|
elseif 11 <= nAddCount then
|
|
nAniTime = 0.03
|
|
end
|
|
local nBeforeToMaxTime = nAniTime * (1 - mapBefore.nExp / mapBefore.nMaxExp)
|
|
local nBeforeToAfterTime = nAniTime * ((mapAfter.nExp - mapBefore.nExp) / mapAfter.nMaxExp)
|
|
local nZeroToAfterTime = nAniTime * mapAfter.nExp / mapAfter.nMaxExp
|
|
local nAllTime = 0
|
|
local sequence = DOTween.Sequence()
|
|
for i = 1, nAddCount - 1 do
|
|
local nTime = i == 1 and nBeforeToMaxTime or nAniTime
|
|
nAllTime = nAllTime + nTime
|
|
sequence:AppendCallback(function()
|
|
WwiseAudioMgr:PlaySound("ui_common_levelUp")
|
|
end)
|
|
sequence:Append(NovaAPI.ImageDoFillAmount(self._mapNode.imgBar, 1, nTime, false))
|
|
sequence:AppendCallback(function()
|
|
NovaAPI.SetImageFillAmount(self._mapNode.imgBar, 0)
|
|
NovaAPI.SetTMPText(txt, mapBefore.nLevel + i)
|
|
end)
|
|
end
|
|
if bMaxLv then
|
|
local nTime = 1 < nAddCount and nAniTime or nBeforeToMaxTime
|
|
nAllTime = nAllTime + nTime
|
|
sequence:AppendCallback(function()
|
|
WwiseAudioMgr:PlaySound("ui_common_levelUp")
|
|
end)
|
|
sequence:Append(NovaAPI.ImageDoFillAmount(self._mapNode.imgBar, 1, nTime, false))
|
|
elseif mapAfter.nExp > 0 then
|
|
local nTime = 1 < nAddCount and nZeroToAfterTime or nBeforeToAfterTime
|
|
nAllTime = nAllTime + nTime
|
|
sequence:AppendCallback(function()
|
|
WwiseAudioMgr:PlaySound("ui_common_levelUp")
|
|
end)
|
|
sequence:Append(NovaAPI.ImageDoFillAmount(self._mapNode.imgBar, mapAfter.nExp / mapAfter.nMaxExp, nTime, false))
|
|
elseif mapAfter.nExp == 0 then
|
|
local nTime = 1 < nAddCount and nAniTime or nBeforeToMaxTime
|
|
nAllTime = nAllTime + nTime
|
|
sequence:AppendCallback(function()
|
|
WwiseAudioMgr:PlaySound("ui_common_levelUp")
|
|
end)
|
|
sequence:Append(NovaAPI.ImageDoFillAmount(self._mapNode.imgBar, 1, nTime, false))
|
|
sequence:AppendCallback(function()
|
|
NovaAPI.SetImageFillAmount(self._mapNode.imgBar, 0)
|
|
end)
|
|
end
|
|
sequence:SetUpdate(true)
|
|
EventManager.Hit(EventId.BlockInput, true)
|
|
local _cb = function()
|
|
EventManager.Hit(EventId.BlockInput, false)
|
|
if callback then
|
|
callback()
|
|
end
|
|
if txt then
|
|
NovaAPI.SetTMPText(txt, mapAfter.nLevel)
|
|
end
|
|
end
|
|
sequence.onComplete = dotween_callback_handler(self, _cb)
|
|
end
|
|
return TemplateExpBarCtrl
|