Files
SL1900 35c8d87e86 Update - 1.4.0.73
EN: 1.4.0.73
CN: 1.4.0.74
JP: 1.4.0.77
KR: 1.4.0.80
2025-12-25 19:00:00 +09:00

137 lines
4.8 KiB
Lua

local MessageBoxCharBoxCtrl = class("MessageBoxCharBoxCtrl", BaseCtrl)
MessageBoxCharBoxCtrl._mapNodeConfig = {
aniMessageBox = {
sNodeName = "goMessageBox",
sComponentName = "Animator"
},
txtWindowTitle = {
sComponentName = "TMP_Text",
sLanguageId = "MessageBox_Title"
},
goCharItem = {},
imgItemIcon = {sComponentName = "Image"},
imgItemRare = {sComponentName = "Image"},
txtCharName = {sComponentName = "TMP_Text"},
txtContentMain = {sComponentName = "TMP_Text"},
txtContentSub = {sComponentName = "TMP_Text"},
btnClose = {sComponentName = "UIButton"},
btnCancel = {sComponentName = "UIButton"},
btnConfirm = {nCount = 2, sComponentName = "UIButton"},
txtCancel = {
sComponentName = "TMP_Text",
sLanguageId = "MessageBox_Cancel"
},
txtConfirm = {
nCount = 2,
sComponentName = "TMP_Text",
sLanguageId = "MessageBox_Confirm"
},
btnAgain = {sComponentName = "NaviButton"},
againSelect = {},
texAgainTip = {
sComponentName = "TMP_Text",
sLanguageId = "MessageBox_TodayWarning"
},
goAgain = {}
}
function MessageBoxCharBoxCtrl:OpenBox(mapMsg, ctrlBase)
local sContent = mapMsg.sContent
local sContentSub = mapMsg.sContentSub
local sTitle = mapMsg.sTitle
local sConfirm = mapMsg.sConfirm
local sCancel = mapMsg.sCancel
local callbackConfirm = mapMsg.callbackConfirm
local callbackCancel = mapMsg.callbackCancel
local callbackAgain = mapMsg.callbackAgain
local nCharId = mapMsg.nCharId
self._mapNode.btnConfirm[1].gameObject:SetActive(true)
self._mapNode.btnConfirm[2].gameObject:SetActive(false)
self._mapNode.btnCancel.gameObject:SetActive(true)
self._mapNode.btnAgain.gameObject:SetActive(callbackAgain ~= nil)
self._mapNode.againSelect:SetActive(false)
self._mapNode.goAgain.gameObject:SetActive(callbackAgain ~= nil)
self._mapNode.txtContentSub.gameObject:SetActive(sContentSub)
if sContentSub then
NovaAPI.SetTMPText(self._mapNode.txtContentSub, sContentSub)
end
NovaAPI.SetTMPText(self._mapNode.txtContentMain, sContent)
if sTitle then
NovaAPI.SetTMPText(self._mapNode.txtWindowTitle, sTitle)
end
if nCharId then
local mapCharCfg = ConfigTable.GetData_Character(nCharId)
if mapCharCfg then
NovaAPI.SetTMPText(self._mapNode.txtCharName, mapCharCfg.Name)
local nCharSkinId = mapCharCfg.DefaultSkinId
local mapCharSkin = ConfigTable.GetData_CharacterSkin(nCharSkinId)
if mapCharSkin then
self:SetPngSprite(self._mapNode.imgItemIcon, mapCharSkin.Icon, AllEnum.CharHeadIconSurfix.XXL)
end
local rareIconName = AllEnum.FrameType_New.BoardFrame .. AllEnum.BoardFrameColor[mapCharCfg.Grade]
self:SetAtlasSprite(self._mapNode.imgItemRare, "12_rare", rareIconName)
end
end
if sConfirm then
NovaAPI.SetTMPText(self._mapNode.txtConfirm[1], sConfirm)
end
if sCancel then
NovaAPI.SetTMPText(self._mapNode.txtCancel, sCancel)
end
if self.handlerConfirm then
self._mapNode.btnConfirm[1].onClick:RemoveListener(self.handlerConfirm)
end
self.handlerConfirm = nil
local func_confirm = function()
if self._panel.bBlur then
self._mapNode.aniMessageBox:Play("t_window_04_t_out")
end
ctrlBase:DefaultClick(callbackConfirm)
end
self.handlerConfirm = ui_handler(self, func_confirm, self._mapNode.btnConfirm[1])
self._mapNode.btnConfirm[1].onClick:AddListener(self.handlerConfirm)
if self.handlerCancel then
self._mapNode.btnCancel.onClick:RemoveListener(self.handlerCancel)
end
self.handlerCancel = nil
local func_cancel = function()
if self._panel.bBlur then
self._mapNode.aniMessageBox:Play("t_window_04_t_out")
end
ctrlBase:DefaultClick(callbackCancel)
end
self.handlerCancel = ui_handler(self, func_cancel, self._mapNode.btnCancel)
self._mapNode.btnCancel.onClick:AddListener(self.handlerCancel)
if self.handlerClose then
self._mapNode.btnClose.onClick:RemoveListener(self.handlerClose)
end
self.handlerClose = nil
local func_close = function()
if self._panel.bBlur then
self._mapNode.aniMessageBox:Play("t_window_04_t_out")
end
ctrlBase:DefaultClick(callbackCancel)
end
self.handlerClose = ui_handler(self, func_close, self._mapNode.btnClose)
self._mapNode.btnClose.onClick:AddListener(self.handlerClose)
if self.handlerAgain then
self._mapNode.btnAgain.onClick:RemoveListener(self.handlerAgain)
end
self.handlerAgain = nil
if callbackAgain ~= nil then
local func_again = function()
self._mapNode.againSelect:SetActive(not self._mapNode.againSelect.activeSelf)
callbackAgain(self._mapNode.againSelect.activeSelf)
end
self.handlerAgain = ui_handler(self, func_again, self._mapNode.btnAgain)
self._mapNode.btnAgain.onClick:AddListener(self.handlerAgain)
end
self._mapNode.aniMessageBox:Play("t_window_04_t_in", 0, 0)
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
end
function MessageBoxCharBoxCtrl:Close()
if self.handlerClose then
self.handlerClose()
end
end
return MessageBoxCharBoxCtrl