Initial version - 1.2.0.60
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
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
|
||||
Reference in New Issue
Block a user