8c4bd41668
EN: 1.13.0.124 CN: 1.13.0.124 JP: 1.13.0.128 KR: 1.13.0.130
255 lines
8.2 KiB
Lua
255 lines
8.2 KiB
Lua
local IceCreamLevelDetailCtrl = class("IceCreamLevelDetailCtrl", BaseCtrl)
|
|
IceCreamLevelDetailCtrl._mapNodeConfig = {
|
|
btn_ClosePanel = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtn_ClosePanel"
|
|
},
|
|
btn_tag = {
|
|
nCount = 2,
|
|
sNodeName = "btn_tag",
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtn_SwitchTag"
|
|
},
|
|
txt_UnSelect = {sComponentName = "TMP_Text"},
|
|
txt_Select = {sComponentName = "TMP_Text"},
|
|
txt_LevelName = {sComponentName = "TMP_Text"},
|
|
txt_detailDesc = {sComponentName = "TMP_Text"},
|
|
obj_MaxScore = {},
|
|
txt_ScoreTitle = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "IceCreamTruck_MaxScore"
|
|
},
|
|
txt_MaxScore = {sComponentName = "TMP_Text"},
|
|
obj_Target = {},
|
|
txt_TitleTarget = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "IceCreamTruck_LevelTarget"
|
|
},
|
|
obj_Task = {nCount = 2, sNodeName = "obj_Task"},
|
|
txtTask = {nCount = 2, sComponentName = "TMP_Text"},
|
|
txt_Reward = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "IceCreamTruck_LevelAward"
|
|
},
|
|
item = {
|
|
nCount = 4,
|
|
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl"
|
|
},
|
|
btn_item = {
|
|
nCount = 4,
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_RewardItem"
|
|
},
|
|
LevelState = {},
|
|
btn_Go = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Go"
|
|
},
|
|
txtBtnGo = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "IceCreamTruck_Open"
|
|
},
|
|
btn_Next = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Next"
|
|
},
|
|
txtBtnNext = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "IceCreamTruck_NextIsland"
|
|
},
|
|
levelLockRoot = {},
|
|
UnlockTime = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "IceCreamTruck_LevelLockPreTip"
|
|
}
|
|
}
|
|
IceCreamLevelDetailCtrl._mapEventConfig = {}
|
|
function IceCreamLevelDetailCtrl:Awake()
|
|
end
|
|
function IceCreamLevelDetailCtrl:FadeIn()
|
|
end
|
|
function IceCreamLevelDetailCtrl:FadeOut()
|
|
end
|
|
function IceCreamLevelDetailCtrl:OnEnable()
|
|
self.tbGamepadUINode = self:GetGamepadUINode()
|
|
end
|
|
function IceCreamLevelDetailCtrl:Open(nActId, nIndex)
|
|
self.gameObject:SetActive(true)
|
|
self.LevelType = nIndex
|
|
self.nActId = nActId
|
|
self.IceCreamActData = PlayerData.Activity:GetActivityDataById(nActId)
|
|
if self.IceCreamActData == nil then
|
|
printError("没有冰淇淋活动数据")
|
|
self.gameObject:SetActive(false)
|
|
return
|
|
end
|
|
self:InitPanel()
|
|
end
|
|
function IceCreamLevelDetailCtrl:InitPanel()
|
|
self.tbLevels = self.IceCreamActData:GetLevelsByType(self.LevelType)
|
|
if not self.tbLevels then
|
|
printError("没有对应的关卡类型")
|
|
return
|
|
end
|
|
for i = 1, 2 do
|
|
local levelId = self.tbLevels[i]
|
|
if levelId ~= nil then
|
|
self._mapNode.btn_tag[i].gameObject:SetActive(true)
|
|
self:RegisterNewRedNode(self._mapNode.btn_tag[i].gameObject.transform, self.nActId, self.LevelType, levelId)
|
|
else
|
|
self._mapNode.btn_tag[i].gameObject:SetActive(false)
|
|
end
|
|
end
|
|
self:SetCurTag()
|
|
self:RefreshPanel()
|
|
end
|
|
function IceCreamLevelDetailCtrl:SetCurTag()
|
|
if self.tbLevels ~= nil and #self.tbLevels == 2 then
|
|
local bCompleteLevel_1 = self.IceCreamActData:GetLevelData(self.tbLevels[1]).bFirstComplete
|
|
local bCompleteLevel_2 = self.IceCreamActData:GetLevelData(self.tbLevels[2]).bFirstComplete
|
|
if bCompleteLevel_1 ~= bCompleteLevel_2 then
|
|
self.nCurTag = 2
|
|
elseif bCompleteLevel_1 == bCompleteLevel_2 and bCompleteLevel_2 then
|
|
self.nCurTag = 2
|
|
else
|
|
self.nCurTag = 1
|
|
end
|
|
else
|
|
self.nCurTag = 1
|
|
end
|
|
end
|
|
function IceCreamLevelDetailCtrl:RefreshPanel()
|
|
self.curLevelId = self.tbLevels[self.nCurTag]
|
|
self.CurrentMapData = self.IceCreamActData:GetLevelMapData(self.curLevelId)
|
|
self:RefreshTagState()
|
|
self:RefreshData()
|
|
self:RefreshReward()
|
|
self:RefreshButton()
|
|
self:RefreshLevelRedDot(self.nCurTag)
|
|
end
|
|
function IceCreamLevelDetailCtrl:RefreshReward()
|
|
self.tbReward = {}
|
|
for i = 1, 4 do
|
|
local nRewardId = self.CurrentMapData["FirstCompleteReward" .. i .. "Tid"]
|
|
local nRewardQty = self.CurrentMapData["FirstCompleteReward" .. i .. "Qty"]
|
|
if nRewardId ~= nil and 0 < nRewardId and nRewardQty ~= nil and 0 < nRewardQty then
|
|
table.insert(self.tbReward, {nRewardId, nRewardQty})
|
|
self._mapNode.btn_item[i].gameObject:SetActive(true)
|
|
else
|
|
self._mapNode.btn_item[i].gameObject:SetActive(false)
|
|
end
|
|
end
|
|
local bIsComplete = self.IceCreamActData:GetLevelData(self.curLevelId).bFirstComplete
|
|
for k, v in pairs(self.tbReward) do
|
|
self._mapNode.item[k]:SetItem(v[1], nil, v[2], nil, bIsComplete)
|
|
end
|
|
end
|
|
function IceCreamLevelDetailCtrl:RefreshButton()
|
|
local bIsPreLock = false
|
|
local bIsUnlockIsland = false
|
|
if self.IceCreamActData:CheckLevelLockByPrev(self.curLevelId) then
|
|
bIsPreLock = true
|
|
end
|
|
if self.tbLevels[2] ~= nil and self.IceCreamActData:GetLevelData(self.tbLevels[2]).bFirstComplete and not self.IceCreamActData:GetNextIslandIsLock(self.LevelType) then
|
|
bIsUnlockIsland = true
|
|
end
|
|
self._mapNode.LevelState:SetActive(not bIsPreLock)
|
|
self._mapNode.levelLockRoot:SetActive(bIsPreLock)
|
|
self._mapNode.btn_Next.gameObject:SetActive(bIsUnlockIsland)
|
|
end
|
|
function IceCreamLevelDetailCtrl:RefreshTagState()
|
|
if not self.nCurTag then
|
|
self.nCurTag = 1
|
|
end
|
|
for key, tag in ipairs(self._mapNode.btn_tag) do
|
|
local obj_Select = tag.gameObject.transform:Find("AnimRoot/obj_Select")
|
|
local obj_UnSelect = tag.gameObject.transform:Find("AnimRoot/obj_UnSelect")
|
|
obj_Select.gameObject:SetActive(key == self.nCurTag)
|
|
obj_UnSelect.gameObject:SetActive(key ~= self.nCurTag)
|
|
end
|
|
end
|
|
function IceCreamLevelDetailCtrl:RefreshData()
|
|
if self.CurrentMapData then
|
|
NovaAPI.SetTMPText(self._mapNode.txt_LevelName, self.CurrentMapData.Name)
|
|
NovaAPI.SetTMPText(self._mapNode.txt_detailDesc, self.CurrentMapData.Des)
|
|
if self.CurrentMapData.PassScoreDes == "" then
|
|
self._mapNode.obj_Task[1]:SetActive(false)
|
|
else
|
|
self._mapNode.obj_Task[1]:SetActive(true)
|
|
NovaAPI.SetTMPText(self._mapNode.txtTask[1], self.CurrentMapData.PassScoreDes)
|
|
end
|
|
if self.CurrentMapData.OrderNumDes == "" then
|
|
self._mapNode.obj_Task[2]:SetActive(false)
|
|
else
|
|
self._mapNode.obj_Task[2]:SetActive(true)
|
|
NovaAPI.SetTMPText(self._mapNode.txtTask[2], self.CurrentMapData.OrderNumDes)
|
|
end
|
|
end
|
|
local bIsInfinite = self.LevelType == GameEnum.ActivityIceCreamLevelType.Infinite
|
|
self._mapNode.obj_MaxScore:SetActive(bIsInfinite)
|
|
if bIsInfinite then
|
|
local MaxScore = self.IceCreamActData:GetLevelMaxScore(self.curLevelId)
|
|
NovaAPI.SetTMPText(self._mapNode.txt_MaxScore, MaxScore)
|
|
end
|
|
self._mapNode.obj_Target:SetActive(not bIsInfinite)
|
|
end
|
|
function IceCreamLevelDetailCtrl:RefreshLevelRedDot(nIndex)
|
|
self.IceCreamActData:SetLevelNew(self.LevelType, self.tbLevels[nIndex])
|
|
self.IceCreamActData:RefreshLevelRedDot()
|
|
end
|
|
function IceCreamLevelDetailCtrl:OnDisable()
|
|
self:UnRegisterNewRedNode()
|
|
end
|
|
function IceCreamLevelDetailCtrl:OnDestroy()
|
|
end
|
|
function IceCreamLevelDetailCtrl:OnBtnClick_RewardItem(btn, nIndex)
|
|
local nRewardId
|
|
if self.tbReward ~= nil and self.tbReward[nIndex] ~= nil then
|
|
nRewardId = self.tbReward[nIndex][1]
|
|
end
|
|
if nRewardId ~= nil then
|
|
UTILS.ClickItemGridWithTips(nRewardId, btn.transform, true, true, false)
|
|
end
|
|
end
|
|
function IceCreamLevelDetailCtrl:OnBtn_SwitchTag(btn, nIndex)
|
|
if nIndex == self.nCurTag then
|
|
return
|
|
end
|
|
self.nCurTag = nIndex
|
|
self:RefreshLevelRedDot(nIndex)
|
|
self:RefreshPanel()
|
|
end
|
|
function IceCreamLevelDetailCtrl:OnBtn_ClosePanel()
|
|
self.gameObject:SetActive(false)
|
|
EventManager.Hit("Event_CloseLevelDetail", self.LevelType)
|
|
end
|
|
function IceCreamLevelDetailCtrl:OnBtnClick_Next()
|
|
self.gameObject:SetActive(false)
|
|
EventManager.Hit("Event_ChangeNextDetail", self.LevelType, self.LevelType + 1)
|
|
end
|
|
function IceCreamLevelDetailCtrl:OnBtnClick_Go()
|
|
self.gameObject:SetActive(false)
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.IceCreamTruckGamePanel, self.nActId, self.curLevelId)
|
|
end
|
|
function IceCreamLevelDetailCtrl:RegisterNewRedNode(trTag, nActId, nIndex, nLevel)
|
|
local objRed = trTag:Find("AnimRoot/redH")
|
|
RedDotManager.RegisterNode(RedDotDefine.Activity_IceCreamTruck_NewLevel, {
|
|
nActId,
|
|
nIndex,
|
|
nLevel
|
|
}, objRed)
|
|
end
|
|
function IceCreamLevelDetailCtrl:UnRegisterNewRedNode()
|
|
for i = 1, 2 do
|
|
local objRed = self._mapNode.btn_tag[i] and self._mapNode.btn_tag[i].gameObject.transform:Find("AnimRoot/redH")
|
|
if objRed then
|
|
RedDotManager.UnRegisterNode(RedDotDefine.Activity_IceCreamTruck_NewLevel, {
|
|
nActId,
|
|
nIndex,
|
|
nLevel
|
|
}, objRed)
|
|
end
|
|
end
|
|
end
|
|
return IceCreamLevelDetailCtrl
|