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

137 lines
5.2 KiB
Lua

local StarTowerBossChallenge = class("StarTowerBossChallenge", BaseCtrl)
local colorWhite = Color(1, 1, 1, 1)
local colorRed = Color(0.8470588235294118, 0.3137254901960784, 0.32941176470588235)
StarTowerBossChallenge._mapNodeConfig = {
rtnfo = {},
TMPDesc = {sComponentName = "TMP_Text"},
TMPComplete = {
sComponentName = "TMP_Text",
sLanguageId = "Quest_Complete"
},
TMPChallengeTime = {sComponentName = "TMP_Text"},
rtChallengeTime = {},
animatorTime = {
sNodeName = "rtChallengeTime",
sComponentName = "Animator"
},
AnimatorInfo = {sNodeName = "rtnfo", sComponentName = "Animator"}
}
StarTowerBossChallenge._mapEventConfig = {}
function StarTowerBossChallenge:Awake()
self.AnimatorRoot = self.gameObject:GetComponent("Animator")
end
function StarTowerBossChallenge:FadeIn()
end
function StarTowerBossChallenge:FadeOut()
end
function StarTowerBossChallenge:OnEnable()
end
function StarTowerBossChallenge:OnDisable()
end
function StarTowerBossChallenge:OnDestroy()
EventManager.Remove("StarTower_Start_Battle", self, self.OnEvent_StartBattle)
EventManager.Remove("Roguelike_BossMonster_CountUp", self, self.OnEvent_SpecialMode_Count)
EventManager.Remove("OnEvent_ShowRtChallengeTime", self, self.ShowRtChallengeTime)
end
function StarTowerBossChallenge:OnRelease()
end
function StarTowerBossChallenge:SetTime(nTime)
local nMin = math.floor(nTime / 60)
local nSec = math.fmod(nTime, 60)
NovaAPI.SetTMPText(self._mapNode.TMPChallengeTime, string.format("%02d:%02d", nMin, nSec))
end
function StarTowerBossChallenge:StartEvent(tbTime)
self.tbTime = tbTime
self.nState = 1
self.nAllState = #tbTime
self.maxRewardTime = tbTime[self.nAllState]
self.bEnd = false
self._mapNode.rtnfo:SetActive(false)
self._mapNode.rtChallengeTime:SetActive(false)
self._mapNode.TMPDesc.gameObject:SetActive(false)
self._mapNode.TMPComplete.gameObject:SetActive(false)
NovaAPI.SetTMPText(self._mapNode.TMPChallengeTime, "00:00")
NovaAPI.SetTMPColor(self._mapNode.TMPChallengeTime, colorWhite)
local nStateDesc = 1
local nextStateTime = self.tbTime[self.nState]
NovaAPI.SetTMPText(self._mapNode.TMPDesc, orderedFormat(ConfigTable.GetUIText("StarTower_BossChallenge"), nextStateTime, ConfigTable.GetUIText("FRBattleInfo_Box" .. nStateDesc)))
EventManager.Add("StarTower_Start_Battle", self, self.OnEvent_StartBattle)
EventManager.Add("Roguelike_BossMonster_CountUp", self, self.OnEvent_SpecialMode_Count)
EventManager.Add("OnEvent_ShowRtChallengeTime", self, self.ShowRtChallengeTime)
end
function StarTowerBossChallenge:OnEvent_StartBattle()
self._mapNode.rtnfo:SetActive(true)
self._mapNode.TMPDesc.gameObject:SetActive(true)
end
function StarTowerBossChallenge:OnEvent_SpecialMode_Count(nTime)
local nCurTime = nTime
local nextStateTime = 0
if self.tbTime[self.nState] then
nextStateTime = self.tbTime[self.nState]
end
if 0 < nextStateTime and nextStateTime - nCurTime <= 5 then
NovaAPI.SetTMPColor(self._mapNode.TMPChallengeTime, colorRed)
self._mapNode.animatorTime:Play("BossChallengeTime_show")
else
NovaAPI.SetTMPColor(self._mapNode.TMPChallengeTime, colorWhite)
end
if nCurTime == nextStateTime then
self:StageChange()
end
if 0 <= nCurTime then
self:SetTime(nCurTime)
else
self._mapNode.rtChallengeTime:SetActive(false)
end
end
function StarTowerBossChallenge:StageChange()
if self.bEnd then
return
end
self.nState = self.nState + 1
local callback = function()
if self.bEnd then
self._mapNode.TMPDesc.gameObject:SetActive(false)
self._mapNode.TMPComplete.gameObject:SetActive(true)
return
end
self._mapNode.AnimatorInfo:Play("StarTowerRoomInfoBossRtnfo_switch", 0, 0)
if self.nState > self.nAllState then
NovaAPI.SetTMPText(self._mapNode.TMPDesc, ConfigTable.GetUIText("StarTower_BossChallenge_Min"))
else
local nextStateTime = self.tbTime[self.nState]
local nStateDesc = 2
NovaAPI.SetTMPText(self._mapNode.TMPDesc, orderedFormat(ConfigTable.GetUIText("StarTower_BossChallenge_Zero"), nextStateTime, ConfigTable.GetUIText("StarTower_RoomInfo_Box" .. nStateDesc)))
end
self._mapNode.TMPDesc.gameObject:SetActive(true)
self.AnimatorRoot:Play("StarTowerBossChallenge_trail")
end
self:AddTimer(1, 0.7, callback, true, true, true)
end
function StarTowerBossChallenge:Success()
self._mapNode.TMPDesc.gameObject:SetActive(false)
self._mapNode.TMPComplete.gameObject:SetActive(true)
self.bEnd = true
self._mapNode.rtChallengeTime:SetActive(false)
self._mapNode.AnimatorInfo:Play("StarTowerRoomInfoBossRtnfo_Finish", 0, 0)
self:AddTimer(1, 3, function()
self:EventEnd()
end, true, true, true)
end
function StarTowerBossChallenge:EventEnd()
EventManager.Remove("StarTower_Start_Battle", self, self.OnEvent_StartBattle)
EventManager.Remove("Roguelike_BossMonster_CountUp", self, self.OnEvent_SpecialMode_Count)
EventManager.Remove("OnEvent_ShowRtChallengeTime", self, self.ShowRtChallengeTime)
local nAnimLength = NovaAPI.GetAnimClipLength(self._mapNode.AnimatorInfo, {
"StarTowerRoomInfoBossRtnfo_out"
})
self._mapNode.AnimatorInfo:Play("StarTowerRoomInfoBossRtnfo_out", 0, 0)
self:AddTimer(1, nAnimLength, function()
self.gameObject:SetActive(false)
end, true, true, true)
end
function StarTowerBossChallenge:ShowRtChallengeTime()
self._mapNode.rtChallengeTime:SetActive(true)
end
return StarTowerBossChallenge