Files
SL1900 5e0d58cfad 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
2025-12-03 01:00:00 +09:00

233 lines
8.0 KiB
Lua

local StarTowerBuildSaveCtrl = class("StarTowerBuildSaveCtrl", BaseCtrl)
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
StarTowerBuildSaveCtrl._mapNodeConfig = {
goBg = {sNodeName = "---BG---"},
goblur = {
sNodeName = "t_fullscreen_blur_black"
},
goBuildContent = {},
BuildDetail = {
sCtrlName = "Game.UI.StarTower.Build.StarTowerBuildDetailItemCtrl"
},
ContentList = {
sCtrlName = "Game.UI.StarTower.Build.StarTowerBuildContentCtrl"
},
btnLock = {
sComponentName = "UIButton",
callback = "OnBtnClick_Lock"
},
btnPreference = {
sComponentName = "UIButton",
callback = "OnBtnClick_Preference"
},
btnSave = {
sComponentName = "UIButton",
callback = "OnBtnClick_Save"
},
btnDelete = {
sComponentName = "UIButton",
callback = "OnBtnClick_Delete"
},
btnPreferenceIcon = {sComponentName = "Button"},
btnRename = {
sComponentName = "UIButton",
callback = "OnBtnClick_Rename"
},
btnLockIcon = {sComponentName = "Button"},
txtBuildLock = {sComponentName = "TMP_Text"},
txtLike = {
sComponentName = "TMP_Text",
sLanguageId = "StarTower_Build_Like"
},
txtSave = {
sComponentName = "TMP_Text",
sLanguageId = "StarTower_Build_Save"
},
Mask = {
sComponentName = "CanvasGroup"
},
goDeleteResult = {},
goDeleteAnim = {
sNodeName = "goDeleteResult",
sComponentName = "Animator"
},
txtWindowTitle = {
sComponentName = "TMP_Text",
sLanguageId = "RoguelikeBuild_Common_HintTitle"
},
txtDeleteTip = {sComponentName = "TMP_Text", sLanguageId = "BUILD_08"},
imgRewardIcon = {sComponentName = "Image"},
txtDeleteRewardCount = {sComponentName = "TMP_Text"},
btnClose = {
sComponentName = "UIButton",
callback = "OnBtnClick_DeleteResult"
},
btnConfirm2 = {
sComponentName = "UIButton",
callback = "OnBtnClick_DeleteResult"
},
txtDeleteBtn = {
sComponentName = "TMP_Text",
sLanguageId = "RoguelikeBuild_Common_BtnConfirm"
}
}
StarTowerBuildSaveCtrl._mapEventConfig = {}
StarTowerBuildSaveCtrl._mapRedDotConfig = {}
function StarTowerBuildSaveCtrl:InitPanel()
self._mapNode.goBuildContent:SetActive(true)
self._mapNode.BuildDetail:Refresh(self.mapBuild)
self._mapNode.ContentList:Refresh(self.mapBuild)
self.bLock = self.mapBuild.bLock
self._mapNode.btnLockIcon.interactable = self.bLock
NovaAPI.SetTMPText(self._mapNode.txtBuildLock, self.bLock and ConfigTable.GetUIText("RoguelikeBuild_Save_Lock") or ConfigTable.GetUIText("RoguelikeBuild_Save_Unlock"))
NovaAPI.SetTMPColor(self._mapNode.txtBuildLock, self.bLock and Color(0.14901960784313725, 0.25882352941176473, 0.47058823529411764) or Color(0.5803921568627451, 0.6666666666666666, 0.7529411764705882))
end
function StarTowerBuildSaveCtrl:InitPanelDelete()
self._mapNode.goBuildContent:SetActive(false)
self._mapNode.goBg:SetActive(false)
self._mapNode.goDeleteResult:SetActive(true)
self._mapNode.goDeleteAnim:Play("t_window_04_t_in")
NovaAPI.SetTMPText(self._mapNode.txtDeleteRewardCount, string.format("x%d", self.mapBuild))
local nDeleteReturnId = ConfigTable.GetConfigNumber("StarTowerBuildDeleteReturnItemId")
local mapCfg = ConfigTable.GetData_Item(nDeleteReturnId)
if mapCfg ~= nil then
self:SetPngSprite(self._mapNode.imgRewardIcon, mapCfg.Icon)
end
end
function StarTowerBuildSaveCtrl:OpenConfirmHint()
local nCoin = math.floor(math.min(math.max(self.mapBuild.nScore / tonumber(self.tbCoinRate[1]), tonumber(self.tbCoinRate[2])), tonumber(self.tbCoinRate[3])))
local CheckCallback = function()
local sTip = ""
if self.mapBuild.mapRank.Rarity == GameEnum.itemRarity.SSR then
sTip = ConfigTable.GetUIText("BUILD_07")
else
sTip = ConfigTable.GetUIText("BUILD_10")
end
local msg = {
nType = AllEnum.MessageBox.Item,
sContent = sTip,
tbItem = {
[1] = {
nTid = AllEnum.CoinItemId.FRRewardCurrency,
nCount = nCoin
}
},
callbackConfirm = function()
local callback = function(mapChangeInfo)
UTILS.OpenReceiveByChangeInfo(mapChangeInfo, function()
self:ClosePanel()
end)
end
PlayerData.Build:SaveBuild(self.mapBuild.nBuildId, true, self.bLock, self.bPreference, self.sName, callback)
end
}
EventManager.Hit(EventId.OpenMessageBox, msg)
end
PlayerData.Build:CheckCoinMax(nCoin, CheckCallback)
end
function StarTowerBuildSaveCtrl:ClosePanel()
if NovaAPI.GetCurrentModuleName() == "MainMenuModuleScene" then
EventManager.Hit(EventId.CloesCurPanel)
PlayerData.Base:CheckNextDayForSweep()
else
PanelManager.InputEnable(nil, true)
NovaAPI.SetCanvasGroupAlpha(self._mapNode.Mask, 0)
self._mapNode.Mask.gameObject:SetActive(true)
local sequence = DOTween.Sequence()
sequence:Append(self._mapNode.Mask:DOFade(1, 0.5):SetUpdate(true))
sequence:AppendCallback(function()
if self.bSuccess then
NovaAPI.EnterModule("MainMenuModuleScene", true, 17)
else
local function levelEndCallback()
EventManager.Remove("ADVENTURE_LEVEL_UNLOAD_COMPLETE", self, levelEndCallback)
NovaAPI.EnterModule("MainMenuModuleScene", true, 17)
end
EventManager.Add("ADVENTURE_LEVEL_UNLOAD_COMPLETE", self, levelEndCallback)
CS.AdventureModuleHelper.LevelStateChanged(true, 0, true)
end
end)
sequence:SetUpdate(true)
end
end
function StarTowerBuildSaveCtrl:Awake()
self._mapNode.goBuildContent:SetActive(false)
if NovaAPI.GetCurrentModuleName() ~= "MainMenuModuleScene" then
PanelManager.InputDisable()
end
self.tbCoinRate = ConfigTable.GetConfigArray("StarTowerBuildTransformParas")
local tbParam = self:GetPanelParam()
if type(tbParam) == "table" then
self.bSuccess = tbParam[1]
self.mapBuild = tbParam[2]
self.bSweep = tbParam[4]
end
end
function StarTowerBuildSaveCtrl:OnEnable()
if NovaAPI.GetCurrentModuleName() ~= "MainMenuModuleScene" then
self._mapNode.goBg:SetActive(false)
self._mapNode.goblur:SetActive(true)
else
self._mapNode.goBg:SetActive(true)
self._mapNode.goblur:SetActive(false)
end
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
if type(self.mapBuild) == "table" then
self:InitPanel()
else
self:InitPanelDelete()
end
end
cs_coroutine.start(wait)
end
function StarTowerBuildSaveCtrl:OnDisable()
end
function StarTowerBuildSaveCtrl:OnDestroy()
end
function StarTowerBuildSaveCtrl:OnRelease()
end
function StarTowerBuildSaveCtrl:OnBtnClick_Rename()
local callback = function(sName)
self._mapNode.BuildDetail:SetName(sName)
self.sName = sName
end
EventManager.Hit(EventId.OpenPanel, PanelId.BuildRename, self.mapBuild, callback, true, self.sName)
end
function StarTowerBuildSaveCtrl:OnBtnClick_Lock()
self.bLock = not self.bLock
self._mapNode.btnLockIcon.interactable = self.bLock
NovaAPI.SetTMPText(self._mapNode.txtBuildLock, self.bLock and ConfigTable.GetUIText("RoguelikeBuild_Save_Lock") or ConfigTable.GetUIText("RoguelikeBuild_Save_Unlock"))
NovaAPI.SetTMPColor(self._mapNode.txtBuildLock, self.bLock and Color(0.14901960784313725, 0.25882352941176473, 0.47058823529411764) or Color(0.5803921568627451, 0.6666666666666666, 0.7529411764705882))
end
function StarTowerBuildSaveCtrl:OnBtnClick_Preference()
self.bPreference = not self.bPreference
self._mapNode.btnPreferenceIcon.interactable = self.bPreference
NovaAPI.SetTMPColor(self._mapNode.txtLike, self.bPreference and Color(0.14901960784313725, 0.25882352941176473, 0.47058823529411764) or Color(0.5803921568627451, 0.6666666666666666, 0.7529411764705882))
end
function StarTowerBuildSaveCtrl:OnBtnClick_Save(btn)
local callback = function()
local msg = {
nType = AllEnum.MessageBox.Alert,
sContent = ConfigTable.GetUIText("BUILD_09"),
callbackConfirm = function()
self:ClosePanel()
end
}
EventManager.Hit(EventId.OpenMessageBox, msg)
end
PlayerData.Build:SaveBuild(self.mapBuild.nBuildId, false, self.bLock, self.bPreference, self.sName, callback)
end
function StarTowerBuildSaveCtrl:OnBtnClick_Delete()
if self.bLock then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Build_LockDelete"))
return
end
self:OpenConfirmHint()
end
function StarTowerBuildSaveCtrl:OnBtnClick_DeleteResult()
self._mapNode.goDeleteResult:SetActive(false)
self:ClosePanel()
end
return StarTowerBuildSaveCtrl