35c8d87e86
EN: 1.4.0.73 CN: 1.4.0.74 JP: 1.4.0.77 KR: 1.4.0.80
126 lines
4.5 KiB
Lua
126 lines
4.5 KiB
Lua
local BattleDamageCtrl = class("BattleDamageCtrl", BaseCtrl)
|
|
BattleDamageCtrl._mapNodeConfig = {
|
|
imgBlurredBg = {},
|
|
animWindow = {sNodeName = "t_window", sComponentName = "Animator"},
|
|
txtWindowTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Battle_Damage_Window_Title"
|
|
},
|
|
btnClose = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Close"
|
|
},
|
|
btnCloseScreen = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Close"
|
|
},
|
|
txtAllDamage = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Battle_Damage_All_Damage"
|
|
},
|
|
txtAllDamageValue = {sComponentName = "TMP_Text"},
|
|
txtChar = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Battle_Damage_Char"
|
|
},
|
|
txtDamage = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Battle_Damage_Damage"
|
|
},
|
|
txtPercent = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Battle_Damage_Percent"
|
|
},
|
|
goCharDamage = {nCount = 3},
|
|
txtLeaderCn = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Build_Leader"
|
|
},
|
|
txtSubCn = {
|
|
nCount = 2,
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Build_Sub"
|
|
}
|
|
}
|
|
BattleDamageCtrl._mapEventConfig = {}
|
|
BattleDamageCtrl._mapRedDotConfig = {}
|
|
function BattleDamageCtrl:RefreshDamageList()
|
|
for k, v in ipairs(self._mapNode.goCharDamage) do
|
|
v.gameObject:SetActive(self.tbCharDamage[k] ~= nil)
|
|
if self.tbCharDamage[k] ~= nil then
|
|
local imgItemIcon = v.transform:Find("goCharItem/imgIconBg/imgItemIcon"):GetComponent("Image")
|
|
local imgItemRare = v.transform:Find("goCharItem/imgItemRare"):GetComponent("Image")
|
|
local txtCharName = v.transform:Find("txtCharName"):GetComponent("TMP_Text")
|
|
local txtDamageValue = v.transform:Find("imgBg/txtDamageValue"):GetComponent("TMP_Text")
|
|
local rtBarBg = v.transform:Find("imgDamageBarBg"):GetComponent("RectTransform")
|
|
local rtBar = v.transform:Find("imgDamageBarBg/imgDamageBar"):GetComponent("RectTransform")
|
|
local txtDamagePercent = v.transform:Find("imgDamageBarBg/txtDamagePercent"):GetComponent("TMP_Text")
|
|
local mapDamage = self.tbCharDamage[k]
|
|
local nCharSkinId = mapDamage.nSkinId or PlayerData.Char:GetCharSkinId(mapDamage.nCharId)
|
|
local mapCharSkin = ConfigTable.GetData_CharacterSkin(nCharSkinId)
|
|
local mapCharCfg = ConfigTable.GetData_Character(mapDamage.nCharId)
|
|
if mapCharSkin ~= nil and mapCharSkin ~= nil then
|
|
local sFrame = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[mapCharCfg.Grade]
|
|
self:SetPngSprite(imgItemIcon, mapCharSkin.Icon, AllEnum.CharHeadIconSurfix.XXL)
|
|
self:SetAtlasSprite(imgItemRare, "12_rare", sFrame)
|
|
NovaAPI.SetTMPText(txtCharName, mapCharCfg.Name)
|
|
end
|
|
NovaAPI.SetTMPText(txtDamageValue, mapDamage.nDamage)
|
|
local nPercent = self.nTotalDamage > 0 and mapDamage.nDamage / self.nTotalDamage or 0
|
|
nPercent = math.floor(nPercent * 10000 + 0.5) / 10000
|
|
local nWidth = rtBarBg.sizeDelta.x
|
|
local nHeight = rtBarBg.sizeDelta.y
|
|
local v2Target = Vector2(nWidth * nPercent, nHeight)
|
|
local tweener = rtBar:DOSizeDelta(v2Target, 0.5):SetUpdate(true)
|
|
local twTxt = DOTween.To(function()
|
|
return 0
|
|
end, function(value)
|
|
NovaAPI.SetTMPText(txtDamagePercent, string.format("%.1f%%", value))
|
|
end, nPercent * 100, 0.5):SetUpdate(true)
|
|
end
|
|
end
|
|
end
|
|
function BattleDamageCtrl:PlayCloseAnim()
|
|
self._mapNode.imgBlurredBg:SetActive(false)
|
|
self._mapNode.animWindow:Play("t_window_04_t_out")
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
|
|
self:AddTimer(1, 0.2, "Close", true, true, true)
|
|
end
|
|
function BattleDamageCtrl:Close()
|
|
EventManager.Hit(EventId.ClosePanel, PanelId.BattleDamage)
|
|
end
|
|
function BattleDamageCtrl:Awake()
|
|
end
|
|
function BattleDamageCtrl:OnEnable()
|
|
local tbParam = self:GetPanelParam()
|
|
self.nTotalDamage = 0
|
|
self.tbCharDamage = {}
|
|
if tbParam ~= nil and tbParam[1] ~= nil then
|
|
self.tbCharDamage = tbParam[1]
|
|
for _, v in pairs(self.tbCharDamage) do
|
|
self.nTotalDamage = self.nTotalDamage + v.nDamage
|
|
end
|
|
end
|
|
self._mapNode.animWindow.gameObject:SetActive(false)
|
|
self._mapNode.imgBlurredBg.gameObject:SetActive(true)
|
|
local wait = function()
|
|
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
|
self._mapNode.animWindow.gameObject:SetActive(true)
|
|
self._mapNode.animWindow:Play("t_window_04_t_in")
|
|
NovaAPI.SetTMPText(self._mapNode.txtAllDamageValue, self.nTotalDamage)
|
|
self:RefreshDamageList()
|
|
end
|
|
cs_coroutine.start(wait)
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
|
|
end
|
|
function BattleDamageCtrl:OnDisable()
|
|
end
|
|
function BattleDamageCtrl:OnDestroy()
|
|
end
|
|
function BattleDamageCtrl:OnBtnClick_Close()
|
|
self:PlayCloseAnim()
|
|
end
|
|
function BattleDamageCtrl:OnEvent_AAA()
|
|
end
|
|
return BattleDamageCtrl
|