Files
StellaSora_DataLua/lua/game/ui/messageboxex/messageboxcommonctrl.lua
T
SL1900 eafd8f4088 Update - 1.9.0.107
EN: 1.9.0.107
CN: 1.9.0.108
JP: 1.9.0.112
KR: 1.9.0.112
2026-05-14 16:00:00 +09:00

320 lines
11 KiB
Lua

local MessageBoxCommonCtrl = class("MessageBoxCommonCtrl", BaseCtrl)
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
MessageBoxCommonCtrl._mapNodeConfig = {
aniMessageBox = {
sNodeName = "goMessageBox",
sComponentName = "Animator"
},
txtWindowTitle = {
sComponentName = "TMP_Text",
sLanguageId = "MessageBox_Title"
},
txtContentMain = {sComponentName = "TMP_Text"},
txtContentSub = {sComponentName = "TMP_Text"},
btnClose = {sComponentName = "UIButton"},
btnCancel = {
sComponentName = "NaviButton",
sAction = "Back",
sActionIconType = "Dark"
},
btnCancel2 = {
sComponentName = "NaviButton",
sAction = "Giveup",
sActionIconType = "Dark"
},
btnConfirm = {
nCount = 2,
sComponentName = "NaviButton",
sAction = "Confirm",
sActionIconType = "Dark"
},
btnConfirmDisable = {
sComponentName = "NaviButton",
sAction = "Confirm",
sActionIconType = "Dark"
},
txtBtnCancel = {
nCount = 2,
sComponentName = "TMP_Text",
sLanguageId = "MessageBox_Cancel"
},
txtCancel2_ = {
nCount = 2,
sComponentName = "TMP_Text",
sLanguageId = "MessageBox_Cancel"
},
txtConfirmDisable = {
nCount = 2,
sComponentName = "TMP_Text",
sLanguageId = "MessageBox_Confirm"
},
txtConfirm2_ = {
nCount = 2,
sComponentName = "TMP_Text",
sLanguageId = "MessageBox_Confirm"
},
txtConfirm1_ = {
nCount = 2,
sComponentName = "TMP_Text",
sLanguageId = "MessageBox_Confirm"
},
btnAgain = {sComponentName = "NaviButton"},
againSelect = {},
texAgainTip = {
sComponentName = "TMP_Text",
sLanguageId = "MessageBox_TodayWarning"
},
goAgain = {}
}
MessageBoxCommonCtrl._mapEventConfig = {}
function MessageBoxCommonCtrl:OpenBox(mapMsg, ctrlBase)
if mapMsg.nType == AllEnum.MessageBox.Alert then
self:RefreshAlert(mapMsg, ctrlBase)
elseif mapMsg.nType == AllEnum.MessageBox.Confirm then
self:RefreshConfirm(mapMsg, ctrlBase)
end
end
function MessageBoxCommonCtrl:RefreshPlainText(mapMsg, ctrlBase)
local sContent = mapMsg.sContent
local sTitle = mapMsg.sTitle
local callbackCancel = mapMsg.callbackCancel
self._mapNode.txtContentSub.gameObject:SetActive(false)
self._mapNode.btnConfirm[1].gameObject:SetActive(false)
self._mapNode.btnConfirm[2].gameObject:SetActive(false)
self._mapNode.btnCancel.gameObject:SetActive(false)
self._mapNode.btnAgain.gameObject:SetActive(false)
self._mapNode.goAgain.gameObject:SetActive(false)
NovaAPI.SetTMPText(self._mapNode.txtContentMain, sContent)
if sTitle then
NovaAPI.SetTMPText(self._mapNode.txtWindowTitle, sTitle)
end
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)
self._mapNode.aniMessageBox:Play("t_window_04_t_in", 0, 0)
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
end
function MessageBoxCommonCtrl:RefreshConfirm(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 callbackConfirmAfterClose = mapMsg.callbackConfirmAfterClose
local callbackCancel = mapMsg.callbackCancel
local callbackAgain = mapMsg.callbackAgain
self.bDisableSnap = mapMsg.bDisableSnap
self.bCloseNoHandler = mapMsg.bCloseNoHandler
self._mapNode.txtContentSub.gameObject:SetActive(sContentSub)
self._mapNode.btnConfirm[1].gameObject:SetActive(mapMsg.bGrayConfirm ~= true)
self._mapNode.btnConfirmDisable.gameObject:SetActive(mapMsg.bGrayConfirm == true)
self._mapNode.btnConfirm[2].gameObject:SetActive(false)
self._mapNode.btnCancel.gameObject:SetActive(mapMsg.bRedCancel ~= true)
self._mapNode.btnCancel2.gameObject:SetActive(mapMsg.bRedCancel == true)
self._mapNode.btnAgain.gameObject:SetActive(callbackAgain ~= nil)
self._mapNode.againSelect:SetActive(false)
self._mapNode.goAgain.gameObject:SetActive(callbackAgain ~= nil)
if mapMsg.sAgain then
NovaAPI.SetTMPText(self._mapNode.texAgainTip, mapMsg.sAgain)
end
if sContentSub then
NovaAPI.SetTMPText(self._mapNode.txtContentSub, sContentSub)
end
if sConfirm then
for i = 1, 3 do
NovaAPI.SetTMPText(self._mapNode.txtConfirm1_[i], sConfirm)
end
for i = 1, 3 do
NovaAPI.SetTMPText(self._mapNode.txtConfirmDisable[i], sConfirm)
end
else
for i = 1, 3 do
NovaAPI.SetTMPText(self._mapNode.txtConfirm1_[i], ConfigTable.GetUIText("MessageBox_Confirm"))
end
for i = 1, 3 do
NovaAPI.SetTMPText(self._mapNode.txtConfirmDisable[i], ConfigTable.GetUIText("MessageBox_Confirm"))
end
end
if sCancel then
for i = 1, 3 do
NovaAPI.SetTMPText(self._mapNode.txtBtnCancel[i], sCancel)
NovaAPI.SetTMPText(self._mapNode.txtCancel2_[i], sCancel)
end
else
for i = 1, 3 do
NovaAPI.SetTMPText(self._mapNode.txtBtnCancel[i], ConfigTable.GetUIText("MessageBox_Cancel"))
NovaAPI.SetTMPText(self._mapNode.txtCancel2_[i], ConfigTable.GetUIText("MessageBox_Cancel"))
end
end
NovaAPI.SetTMPText(self._mapNode.txtContentMain, sContent)
if sTitle then
NovaAPI.SetTMPText(self._mapNode.txtWindowTitle, sTitle)
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, callbackConfirmAfterClose)
end
self.handlerConfirm = ui_handler(self, func_confirm, self._mapNode.btnConfirm[1])
self._mapNode.btnConfirm[1].onClick:AddListener(self.handlerConfirm)
if self.handlerConfirmGray then
self._mapNode.btnConfirmDisable.onClick:RemoveListener(self.handlerConfirmGray)
end
self.handlerConfirmGray = nil
local func_confirmGray = function()
callbackConfirm()
end
self.handlerConfirmGray = ui_handler(self, func_confirmGray, self._mapNode.btnConfirmDisable)
self._mapNode.btnConfirmDisable.onClick:AddListener(self.handlerConfirmGray)
if self.handlerCancel then
self._mapNode.btnCancel.onClick:RemoveListener(self.handlerCancel)
self._mapNode.btnCancel2.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)
self._mapNode.btnCancel2.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(nil)
end
if self.bCloseNoHandler then
self.handlerClose = ui_handler(self, func_close, self._mapNode.btnClose)
else
self.handlerClose = ui_handler(self, func_cancel, self._mapNode.btnClose)
end
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 MessageBoxCommonCtrl:RefreshAlert(mapMsg, ctrlBase)
local sContent = mapMsg.sContent
local sContentSub = mapMsg.sContentSub
local sTitle = mapMsg.sTitle
local sConfirm = mapMsg.sConfirm
local callbackConfirm = mapMsg.callbackConfirm
local callbackConfirmAfterClose = mapMsg.callbackConfirmAfterClose
self.bDisableSnap = mapMsg.bDisableSnap
self._mapNode.txtContentSub.gameObject:SetActive(sContentSub)
self._mapNode.btnConfirm[1].gameObject:SetActive(false)
self._mapNode.btnConfirm[2].gameObject:SetActive(true)
self._mapNode.btnCancel.gameObject:SetActive(false)
self._mapNode.btnAgain.gameObject:SetActive(false)
self._mapNode.goAgain.gameObject:SetActive(false)
if sContentSub then
NovaAPI.SetTMPText(self._mapNode.txtContentSub, sContentSub)
end
if sConfirm then
for i = 1, 3 do
NovaAPI.SetTMPText(self._mapNode.txtConfirm2_[i], sConfirm)
end
for i = 1, 3 do
NovaAPI.SetTMPText(self._mapNode.txtConfirmDisable[i], sConfirm)
end
else
for i = 1, 3 do
NovaAPI.SetTMPText(self._mapNode.txtConfirm2_[i], ConfigTable.GetUIText("MessageBox_Confirm"))
end
for i = 1, 3 do
NovaAPI.SetTMPText(self._mapNode.txtConfirmDisable[i], ConfigTable.GetUIText("MessageBox_Confirm"))
end
end
NovaAPI.SetTMPText(self._mapNode.txtContentMain, sContent)
if sTitle then
NovaAPI.SetTMPText(self._mapNode.txtWindowTitle, sTitle)
end
if self.handlerConfirm then
self._mapNode.btnConfirm[2].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, callbackConfirmAfterClose)
end
self.handlerConfirm = ui_handler(self, func_confirm, self._mapNode.btnConfirm[2])
self._mapNode.btnConfirm[2].onClick:AddListener(self.handlerConfirm)
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(callbackConfirm)
end
self.handlerClose = ui_handler(self, func_close, self._mapNode.btnClose)
self._mapNode.btnClose.onClick:AddListener(self.handlerClose)
self._mapNode.aniMessageBox:Play("t_window_04_t_in", 0, 0)
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
end
function MessageBoxCommonCtrl:Close()
if self.bDisableSnap then
return
end
if self.handlerClose then
self.handlerClose()
end
end
function MessageBoxCommonCtrl:Awake()
self.tbGamepadUINode = self:GetGamepadUINode()
end
function MessageBoxCommonCtrl:OnEnable()
if GamepadUIManager.GetInputState() then
GamepadUIManager.EnableGamepadUI("MessageBoxCommonCtrl", self.tbGamepadUINode)
else
for _, v in pairs(self.tbGamepadUINode) do
if v.sComponentName == "NaviButton" then
NovaAPI.SetNaviButtonAction(v.mapNode, false)
end
end
end
end
function MessageBoxCommonCtrl:OnDisable()
if GamepadUIManager.GetInputState() then
GamepadUIManager.DisableGamepadUI("MessageBoxCommonCtrl")
end
end
return MessageBoxCommonCtrl