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

100 lines
4.0 KiB
Lua

local TowerDefenseStoryCtrl = class("TowerDefenseStoryCtrl", BaseCtrl)
TowerDefenseStoryCtrl._mapNodeConfig = {
txtWindowTitle_Story = {
sComponentName = "TMP_Text",
sLanguageId = "TowerDef_Story"
},
btnClose = {
sComponentName = "UIButton",
callback = "OnBtnClick_Close"
},
sv_story = {
sComponentName = "LoopScrollView"
}
}
TowerDefenseStoryCtrl._mapEventConfig = {}
TowerDefenseStoryCtrl._mapRedDotConfig = {}
function TowerDefenseStoryCtrl:Awake()
self.animator = self.gameObject:GetComponent("Animator")
end
function TowerDefenseStoryCtrl:SetData(ActId)
self.animator:Play("t_window_04_t_in")
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
self.TowerDefenseData = PlayerData.Activity:GetActivityDataById(ActId)
self.tbStoryId = {}
local forEach = function(data)
if ActId == data.ActivityIdId then
table.insert(self.tbStoryId, data.Id)
end
end
ForEachTableLine(DataTable.TowerDefenseStory, forEach)
local sortFunc = function(a, b)
return a < b
end
table.sort(self.tbStoryId, sortFunc)
self._mapNode.sv_story:Init(#self.tbStoryId, self, self.OnRefreshGrid)
end
function TowerDefenseStoryCtrl:OnRefreshGrid(goGrid, gridIndex)
local nIndex = gridIndex + 1
local bUnlock = self.TowerDefenseData:IsStoryUnlock(self.tbStoryId[nIndex])
local go_lock = goGrid.transform:Find("btnGrid/lock")
local go_AnimRoot = goGrid.transform:Find("btnGrid/AnimRoot")
local storyConfig = ConfigTable.GetData("TowerDefenseStory", self.tbStoryId[nIndex])
if storyConfig == nil then
return
end
if bUnlock then
go_lock.gameObject:SetActive(false)
go_AnimRoot.gameObject:SetActive(true)
local txt_index = go_AnimRoot.transform:Find("txtLevelIndex"):GetComponent("TMP_Text")
NovaAPI.SetTMPText(txt_index, orderedFormat(ConfigTable.GetUIText("TowerDef_Story_Index"), nIndex))
local txt_name = go_AnimRoot.transform:Find("txtLevelName"):GetComponent("TMP_Text")
NovaAPI.SetTMPText(txt_name, storyConfig.Name)
local imgReward = go_AnimRoot.transform:Find("img_reward"):GetComponent("Image")
local txt_Reward = go_AnimRoot.transform:Find("txt_reward"):GetComponent("TMP_Text")
if storyConfig.Item1 ~= 0 then
local itemConfig = ConfigTable.GetData_Item(storyConfig.Item1)
if itemConfig ~= nil then
self:SetPngSprite(imgReward, itemConfig.Icon)
NovaAPI.SetTMPText(txt_Reward, "x" .. storyConfig.Qty1)
end
end
local btn_go = go_AnimRoot.transform:Find("btnSelect"):GetComponent("UIButton")
btn_go.onClick:RemoveAllListeners()
btn_go.onClick:AddListener(function()
self.TowerDefenseData:PlayAvg(storyConfig.Id, storyConfig.AvgId)
end)
local reddot = go_AnimRoot.transform:Find("RedDot")
RedDotManager.RegisterNode(RedDotDefine.Activity_TowerDefense_Story, storyConfig.Id, reddot)
else
go_lock.gameObject:SetActive(true)
go_AnimRoot.gameObject:SetActive(false)
local txtUnlock = go_lock.transform:Find("txtUnlock"):GetComponent("TMP_Text")
local levelConfig = ConfigTable.GetData("TowerDefenseLevel", storyConfig.LevelId)
if levelConfig == nil then
NovaAPI.SetTMPText(txtUnlock, orderedFormat(ConfigTable.GetUIText("TowerDef_Story_Lock"), ""))
else
NovaAPI.SetTMPText(txtUnlock, orderedFormat(ConfigTable.GetUIText("TowerDef_Story_Lock"), levelConfig.LevelName))
end
local txt_reward_title = go_lock.transform:Find("txtreward_title"):GetComponent("TMP_Text")
local imgReward = go_lock.transform:Find("img_reward"):GetComponent("Image")
local txt_Reward = go_lock.transform:Find("txt_reward"):GetComponent("TMP_Text")
if storyConfig.Item1 ~= 0 then
local itemConfig = ConfigTable.GetData_Item("storyConfig.Item1")
if itemConfig ~= nil then
self:SetPngSprite(imgReward, itemConfig.Icon)
NovaAPI.SetTMPText(txt_Reward, storyConfig.Qty1)
NovaAPI.SetTMPText(txt_reward_title, ConfigTable.GetUIText("TowerDef_Story_RewardTitle"))
end
end
end
end
function TowerDefenseStoryCtrl:OnBtnClick_Close()
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
self.animator:Play("t_window_04_t_out")
self:AddTimer(1, 0.2, function()
EventManager.Hit("CloseTowerDefenseStoryPanel")
end, true, true, true)
end
return TowerDefenseStoryCtrl