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
This commit is contained in:
@@ -0,0 +1,410 @@
|
||||
local DiscCtrl = class("DiscCtrl", BaseCtrl)
|
||||
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
|
||||
local MoveBarPos = {
|
||||
-484.2,
|
||||
-159.5,
|
||||
161.6,
|
||||
484.2
|
||||
}
|
||||
local TogAni = {
|
||||
[AllEnum.DiscTab.Info] = {
|
||||
[AllEnum.DiscTab.Development] = "DiscPanel_Development",
|
||||
[AllEnum.DiscTab.BreakLimit] = "DiscPanel_Development",
|
||||
[AllEnum.DiscTab.Music] = "DiscPanel_Music"
|
||||
},
|
||||
[AllEnum.DiscTab.Development] = {
|
||||
[AllEnum.DiscTab.Info] = "DiscPanel_in3",
|
||||
[AllEnum.DiscTab.BreakLimit] = "DiscPanel_Development1",
|
||||
[AllEnum.DiscTab.Music] = "DiscPanel_Music1"
|
||||
},
|
||||
[AllEnum.DiscTab.BreakLimit] = {
|
||||
[AllEnum.DiscTab.Info] = "DiscPanel_in3",
|
||||
[AllEnum.DiscTab.Development] = "DiscPanel_Development1",
|
||||
[AllEnum.DiscTab.Music] = "DiscPanel_Music1"
|
||||
},
|
||||
[AllEnum.DiscTab.Music] = {
|
||||
[AllEnum.DiscTab.Info] = "DiscPanel_in1",
|
||||
[AllEnum.DiscTab.Development] = "DiscPanel_in2",
|
||||
[AllEnum.DiscTab.BreakLimit] = "DiscPanel_in2"
|
||||
}
|
||||
}
|
||||
DiscCtrl._mapNodeConfig = {
|
||||
TopBar = {
|
||||
sNodeName = "TopBarPanel",
|
||||
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
|
||||
},
|
||||
UIDrag = {
|
||||
sComponentName = "UIDrag",
|
||||
callback = "OnDrag_Disc"
|
||||
},
|
||||
imgDiscFrame = {sComponentName = "Image"},
|
||||
imgDiscIcon = {sComponentName = "Image"},
|
||||
Middle = {
|
||||
sNodeName = "---Middle---"
|
||||
},
|
||||
liveDiscCtrl = {
|
||||
sNodeName = "goLiveDisc",
|
||||
sCtrlName = "Game.UI.Disc.LiveDiscCtrl"
|
||||
},
|
||||
FullImage = {
|
||||
sNodeName = "----Full----"
|
||||
},
|
||||
imgFull = {nCount = 2, sComponentName = "Image"},
|
||||
rtImgFull2 = {
|
||||
sNodeName = "imgFull2",
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
imgFullBg = {},
|
||||
btnCloseFull = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_CloseFull"
|
||||
},
|
||||
btnOpenFull2 = {
|
||||
sNodeName = "imgDiscFrame",
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_OpenFull"
|
||||
},
|
||||
Development = {
|
||||
sNodeName = "---Development---"
|
||||
},
|
||||
Info = {
|
||||
sNodeName = "---Info---",
|
||||
sCtrlName = "Game.UI.Disc.DiscInfoCtrl"
|
||||
},
|
||||
Upgrade = {
|
||||
sCtrlName = "Game.UI.Disc.DiscUpgradeCtrl"
|
||||
},
|
||||
Advance = {
|
||||
sCtrlName = "Game.UI.Disc.DiscAdvanceCtrl"
|
||||
},
|
||||
BreakLimit = {
|
||||
sNodeName = "---BreakLimit---",
|
||||
sCtrlName = "Game.UI.Disc.DiscBreakLimitCtrl"
|
||||
},
|
||||
Music = {
|
||||
sNodeName = "---Music---",
|
||||
sCtrlName = "Game.UI.Disc.DiscMusicCtrl"
|
||||
},
|
||||
MusicRight = {
|
||||
sNodeName = "--MusicRight--"
|
||||
},
|
||||
cgMiddle = {
|
||||
sNodeName = "---Middle---",
|
||||
sComponentName = "CanvasGroup"
|
||||
},
|
||||
cgMusic = {
|
||||
sNodeName = "---Music---",
|
||||
sComponentName = "CanvasGroup"
|
||||
},
|
||||
Story = {
|
||||
sNodeName = "----Story----",
|
||||
sCtrlName = "Game.UI.Disc.DiscStoryCtrl"
|
||||
},
|
||||
btnTab = {
|
||||
nCount = 4,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Tab"
|
||||
},
|
||||
imgTabOn = {nCount = 4},
|
||||
txtTabOn = {nCount = 4, sComponentName = "TMP_Text"},
|
||||
txtTabOff = {nCount = 4, sComponentName = "TMP_Text"},
|
||||
layoutOff = {nCount = 4},
|
||||
reddot = {nCount = 4},
|
||||
imgMoveBar = {sComponentName = "Transform"},
|
||||
MatList = {
|
||||
sCtrlName = "Game.UI.Disc.DiscMatListCtrl"
|
||||
},
|
||||
btnMask = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Mask"
|
||||
},
|
||||
aniMatList = {sNodeName = "MatList", sComponentName = "Animator"},
|
||||
anibtnMask = {sNodeName = "btnMask", sComponentName = "Animator"},
|
||||
aniRoot = {
|
||||
sNodeName = "----SafeAreaRoot----",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
reddotB = {},
|
||||
reddotBreak = {},
|
||||
reddotBRead = {},
|
||||
reddotBAvg = {},
|
||||
btnTabSwitchLeft = {
|
||||
sComponentName = "NaviButton",
|
||||
callback = "OnBtnClick_TabSwitchLeft"
|
||||
},
|
||||
btnTabSwitchRight = {
|
||||
sComponentName = "NaviButton",
|
||||
callback = "OnBtnClick_TabSwitchRight"
|
||||
}
|
||||
}
|
||||
DiscCtrl._mapEventConfig = {
|
||||
DiscRefresh = "OnEvent_GrowthRefresh",
|
||||
DiscOpenMatList = "OnEvent_OpenMatList",
|
||||
ClickLiveDisc = "OnEvent_OpenFull",
|
||||
Guide_DiscSkill = "OnEvent_Guide_DiscSkill"
|
||||
}
|
||||
function DiscCtrl:Refresh()
|
||||
self:ClosePopup()
|
||||
self:RefreshMiddle()
|
||||
self:SwitchTog()
|
||||
self:RefreshIndex()
|
||||
end
|
||||
function DiscCtrl:ClosePopup()
|
||||
self._mapNode.MatList:Open(false)
|
||||
self._mapNode.btnMask.gameObject:SetActive(false)
|
||||
end
|
||||
function DiscCtrl:RefreshMiddle()
|
||||
local mapCfg = ConfigTable.GetData("Disc", self._panel.nId)
|
||||
local mapData = PlayerData.Disc:GetDiscById(self._panel.nId)
|
||||
if not mapCfg then
|
||||
return
|
||||
end
|
||||
self._mapNode.imgDiscIcon.gameObject:SetActive(false)
|
||||
self._mapNode.liveDiscCtrl:SetDiscActive(true, mapCfg.DiscBg ~= "")
|
||||
self._mapNode.liveDiscCtrl:SetRawImage(mapCfg.DiscBg, mapData.nRarity)
|
||||
if mapCfg.DiscBg ~= "" then
|
||||
local bSSR = mapData.nRarity == GameEnum.itemRarity.SSR
|
||||
self._mapNode.imgFull[1].gameObject:SetActive(bSSR)
|
||||
self._mapNode.imgFull[2].gameObject:SetActive(not bSSR)
|
||||
if bSSR then
|
||||
self:SetPngSprite(self._mapNode.imgFull[1], mapCfg.DiscBg .. AllEnum.DiscBgSurfix.Image)
|
||||
else
|
||||
self:SetPngSprite(self._mapNode.imgFull[2], mapCfg.DiscBg .. AllEnum.DiscBgSurfix.Image)
|
||||
local nH = Settings.CURRENT_CANVAS_FULL_RECT_HEIGHT
|
||||
self._mapNode.rtImgFull2.sizeDelta = Vector2(nH, nH)
|
||||
end
|
||||
end
|
||||
end
|
||||
function DiscCtrl:SwitchTog()
|
||||
self._mapNode.TopBar:SetCoinVisible(self._panel.nCurTog == AllEnum.DiscTab.Development)
|
||||
local mapData = PlayerData.Disc:GetDiscById(self._panel.nId)
|
||||
local bMaxLv = mapData.nLevel == mapData.nMaxLv
|
||||
local bAdvance = mapData.nPhase < mapData.nMaxPhase and bMaxLv
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgMusic, self._panel.nCurTog == AllEnum.DiscTab.Music)
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgMiddle, self._panel.nCurTog ~= AllEnum.DiscTab.Music)
|
||||
self._mapNode.Info.gameObject:SetActive(self._panel.nCurTog == AllEnum.DiscTab.Info)
|
||||
self._mapNode.Development:SetActive(self._panel.nCurTog == AllEnum.DiscTab.Development)
|
||||
self._mapNode.BreakLimit.gameObject:SetActive(self._panel.nCurTog == AllEnum.DiscTab.BreakLimit)
|
||||
self._mapNode.MusicRight:SetActive(self._panel.nCurTog == AllEnum.DiscTab.Music)
|
||||
if self._panel.nCurTog == AllEnum.DiscTab.Info then
|
||||
self._mapNode.Info:RefreshContent()
|
||||
elseif self._panel.nCurTog == AllEnum.DiscTab.Development then
|
||||
self._mapNode.Upgrade.gameObject:SetActive(not bAdvance)
|
||||
self._mapNode.Advance.gameObject:SetActive(bAdvance)
|
||||
if bAdvance then
|
||||
self._mapNode.Advance:Refresh()
|
||||
else
|
||||
self._mapNode.Upgrade:Refresh()
|
||||
end
|
||||
elseif self._panel.nCurTog == AllEnum.DiscTab.BreakLimit then
|
||||
self._mapNode.BreakLimit:Refresh()
|
||||
elseif self._panel.nCurTog == AllEnum.DiscTab.Music then
|
||||
self._mapNode.Music:Refresh()
|
||||
end
|
||||
end
|
||||
function DiscCtrl:PlayBGM()
|
||||
local mapCfg = ConfigTable.GetData("DiscIP", self._panel.nId)
|
||||
if mapCfg == nil then
|
||||
return
|
||||
end
|
||||
local sState = mapCfg.VoFile
|
||||
WwiseAudioMgr:SetState_Custom("outfit", sState)
|
||||
self._mapNode.Music:InitMusic()
|
||||
end
|
||||
function DiscCtrl:QuitBGM()
|
||||
if self._panel.bPause and not self._panel.bAvg then
|
||||
WwiseAudioMgr:PostEvent("music_outfit_resume")
|
||||
end
|
||||
end
|
||||
function DiscCtrl:ClosePanel()
|
||||
EventManager.Hit(EventId.CloesCurPanel)
|
||||
end
|
||||
function DiscCtrl:InitTab()
|
||||
if self._panel.nCurTog == nil then
|
||||
self._panel.nCurTog = AllEnum.DiscTab.Info
|
||||
end
|
||||
self._mapNode.imgMoveBar.localPosition = Vector3(MoveBarPos[self._panel.nCurTog], 4.5, 0)
|
||||
for i = 1, 4 do
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTabOn[i], ConfigTable.GetUIText("Disc_Tab" .. i))
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTabOff[i], ConfigTable.GetUIText("Disc_Tab" .. i))
|
||||
self._mapNode.imgTabOn[i]:SetActive(self._panel.nCurTog == i)
|
||||
self._mapNode.txtTabOn[i].gameObject:SetActive(self._panel.nCurTog == i)
|
||||
self._mapNode.layoutOff[i].gameObject:SetActive(self._panel.nCurTog ~= i)
|
||||
end
|
||||
end
|
||||
function DiscCtrl:RefreshIndex()
|
||||
for index, discId in ipairs(self._panel.tbId) do
|
||||
if self._panel.nId == discId then
|
||||
self.curDiscIndex = index
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
function DiscCtrl:RegisterRedDot()
|
||||
RedDotManager.RegisterNode(RedDotDefine.Disc_BreakLimit, self._panel.nId, self._mapNode.reddot[3])
|
||||
RedDotManager.RegisterNode(RedDotDefine.Disc_Music, self._panel.nId, self._mapNode.reddot[4])
|
||||
RedDotManager.RegisterNode(RedDotDefine.Disc_SideB, self._panel.nId, self._mapNode.reddotB)
|
||||
RedDotManager.RegisterNode(RedDotDefine.Disc_BreakBtn, self._panel.nId, self._mapNode.reddotBreak)
|
||||
RedDotManager.RegisterNode(RedDotDefine.Disc_SideB_Read, self._panel.nId, self._mapNode.reddotBRead)
|
||||
RedDotManager.RegisterNode(RedDotDefine.Disc_SideB_Avg, self._panel.nId, self._mapNode.reddotBAvg)
|
||||
end
|
||||
function DiscCtrl:FadeIn()
|
||||
if self._panel._nFadeInType == 1 then
|
||||
self._mapNode.aniRoot:Play("DiscPanel_in")
|
||||
elseif self._panel.nCurTog == AllEnum.DiscTab.Development or self._panel.nCurTog == AllEnum.DiscTab.BreakLimit then
|
||||
self._mapNode.aniRoot:Play("DiscPanel_Development", 0, 1)
|
||||
elseif self._panel.nCurTog == AllEnum.DiscTab.Music then
|
||||
self._mapNode.aniRoot:Play("DiscPanel_Music", 0, 1)
|
||||
else
|
||||
self._mapNode.aniRoot:Play("DiscPanel_in")
|
||||
end
|
||||
end
|
||||
function DiscCtrl:Awake()
|
||||
self.aniFull = self.gameObject.transform:GetComponent("Animator")
|
||||
self.aniFull.enabled = false
|
||||
self.nDragStartPosX = nil
|
||||
self.nDragThreshold = ConfigTable.GetConfigNumber("DiscDragThreshold")
|
||||
self.curDiscIndex = nil
|
||||
self:InitTab()
|
||||
end
|
||||
function DiscCtrl:OnEnable()
|
||||
self:RegisterRedDot()
|
||||
self:PlayBGM()
|
||||
self:Refresh()
|
||||
self.nTabCount = 0
|
||||
for k, v in pairs(AllEnum.DiscTab) do
|
||||
self.nTabCount = self.nTabCount + 1
|
||||
end
|
||||
end
|
||||
function DiscCtrl:OnDisable()
|
||||
self:QuitBGM()
|
||||
end
|
||||
function DiscCtrl:OnDestroy()
|
||||
end
|
||||
function DiscCtrl:OnBtnClick_Tab(btn, nIndex)
|
||||
if nIndex == self._panel.nCurTog then
|
||||
return
|
||||
end
|
||||
if self._panel.nCurTog == AllEnum.DiscTab.Music then
|
||||
self._mapNode.Music:PlayOutMusic()
|
||||
end
|
||||
local sAni = TogAni[self._panel.nCurTog][nIndex]
|
||||
self._mapNode.aniRoot:Play(sAni, 0, 0)
|
||||
self._mapNode.imgMoveBar:DOLocalMoveX(MoveBarPos[nIndex], 0.1):SetUpdate(true)
|
||||
self._mapNode.imgTabOn[self._panel.nCurTog]:SetActive(false)
|
||||
self._mapNode.txtTabOn[self._panel.nCurTog].gameObject:SetActive(false)
|
||||
self._mapNode.layoutOff[self._panel.nCurTog].gameObject:SetActive(true)
|
||||
self._mapNode.imgTabOn[nIndex]:SetActive(true)
|
||||
self._mapNode.txtTabOn[nIndex].gameObject:SetActive(true)
|
||||
self._mapNode.layoutOff[nIndex].gameObject:SetActive(false)
|
||||
self._panel.nCurTog = nIndex
|
||||
self:SwitchTog()
|
||||
end
|
||||
function DiscCtrl:OnBtnClick_TabSwitchLeft()
|
||||
if #self._panel.tbId <= 1 then
|
||||
return
|
||||
end
|
||||
self.curDiscIndex = self.curDiscIndex - 1
|
||||
if 1 > self.curDiscIndex then
|
||||
self.curDiscIndex = #self._panel.tbId
|
||||
end
|
||||
self._panel.nId = self._panel.tbId[self.curDiscIndex]
|
||||
self:OnEvent_Drag()
|
||||
self._mapNode.Info:RefreshShow()
|
||||
end
|
||||
function DiscCtrl:OnBtnClick_TabSwitchRight()
|
||||
if #self._panel.tbId <= 1 then
|
||||
return
|
||||
end
|
||||
self.curDiscIndex = self.curDiscIndex + 1
|
||||
if self.curDiscIndex > #self._panel.tbId then
|
||||
self.curDiscIndex = 1
|
||||
end
|
||||
self._panel.nId = self._panel.tbId[self.curDiscIndex]
|
||||
self:OnEvent_Drag()
|
||||
self._mapNode.Info:RefreshShow()
|
||||
end
|
||||
function DiscCtrl:OnBtnClick_Mask(btn)
|
||||
self._mapNode.anibtnMask:SetTrigger("tOut")
|
||||
self._mapNode.aniMatList:Play("MatList_out")
|
||||
local ani_end = function()
|
||||
self._mapNode.MatList:Open(false)
|
||||
self._mapNode.btnMask.gameObject:SetActive(false)
|
||||
end
|
||||
self:AddTimer(1, 0.2, ani_end, true, true, true)
|
||||
end
|
||||
function DiscCtrl:OnBtnClick_OpenFull()
|
||||
if self._mapNode.liveDiscCtrl:GetCanOpenFullState() then
|
||||
self.aniFull.enabled = true
|
||||
self._mapNode.FullImage.gameObject:SetActive(true)
|
||||
if self._mapNode.imgFull[2].gameObject.activeSelf then
|
||||
self._mapNode.imgFullBg.gameObject:SetActive(true)
|
||||
end
|
||||
if self._panel.nCurTog == AllEnum.DiscTab.Info then
|
||||
self.aniFull:Play("DiscPanel_Full_in", 0, 0)
|
||||
elseif self._panel.nCurTog == AllEnum.DiscTab.Development or self._panel.nCurTog == AllEnum.DiscTab.BreakLimit then
|
||||
self.aniFull:Play("DiscPanel_Full_in1", 0, 0)
|
||||
end
|
||||
end
|
||||
end
|
||||
function DiscCtrl:OnBtnClick_CloseFull()
|
||||
if self._panel.nCurTog == AllEnum.DiscTab.Info then
|
||||
self.aniFull:Play("DiscPanel_Full_out")
|
||||
elseif self._panel.nCurTog == AllEnum.DiscTab.Development or self._panel.nCurTog == AllEnum.DiscTab.BreakLimit then
|
||||
self.aniFull:Play("DiscPanel_Full_out1")
|
||||
end
|
||||
local ani_end = function()
|
||||
self.aniFull.enabled = false
|
||||
self._mapNode.FullImage.gameObject:SetActive(false)
|
||||
self._mapNode.imgFullBg.gameObject:SetActive(false)
|
||||
end
|
||||
self:AddTimer(1, 0.4, ani_end, true, true, true)
|
||||
end
|
||||
function DiscCtrl:OnDrag_Disc(mDrag)
|
||||
if mDrag.DragEventType == AllEnum.UIDragType.DragStart then
|
||||
self.nDragStartPosX = mDrag.EventData.position.x
|
||||
elseif mDrag.DragEventType == AllEnum.UIDragType.DragEnd then
|
||||
local dragEndPosX = mDrag.EventData.position.x
|
||||
if dragEndPosX - self.nDragStartPosX > self.nDragThreshold then
|
||||
self:OnBtnClick_TabSwitchLeft()
|
||||
elseif dragEndPosX - self.nDragStartPosX < -self.nDragThreshold then
|
||||
self:OnBtnClick_TabSwitchRight()
|
||||
end
|
||||
end
|
||||
end
|
||||
function DiscCtrl:OnEvent_OpenMatList()
|
||||
self._mapNode.btnMask.gameObject:SetActive(true)
|
||||
self._mapNode.MatList:Open(true)
|
||||
end
|
||||
function DiscCtrl:OnEvent_Drag()
|
||||
self:RefreshMiddle()
|
||||
self:RegisterRedDot()
|
||||
self:PlayBGM()
|
||||
local mapData = PlayerData.Disc:GetDiscById(self._panel.nId)
|
||||
local bMaxLv = mapData.nLevel == mapData.nMaxLv
|
||||
local bAdvance = mapData.nPhase < mapData.nMaxPhase and bMaxLv
|
||||
if self._panel.nCurTog == AllEnum.DiscTab.Development then
|
||||
self._mapNode.Upgrade.gameObject:SetActive(not bAdvance)
|
||||
self._mapNode.Advance.gameObject:SetActive(bAdvance)
|
||||
if bAdvance then
|
||||
self._mapNode.Advance:Refresh()
|
||||
else
|
||||
self._mapNode.Upgrade:Refresh()
|
||||
end
|
||||
elseif self._panel.nCurTog == AllEnum.DiscTab.BreakLimit then
|
||||
self._mapNode.BreakLimit:Refresh()
|
||||
elseif self._panel.nCurTog == AllEnum.DiscTab.Music then
|
||||
self._mapNode.Music:Refresh()
|
||||
end
|
||||
end
|
||||
function DiscCtrl:OnEvent_OpenFull()
|
||||
self:OnBtnClick_OpenFull()
|
||||
end
|
||||
function DiscCtrl:OnEvent_Guide_DiscSkill()
|
||||
EventManager.Hit("Guide_SelectDisc", self._panel.nId)
|
||||
end
|
||||
function DiscCtrl:OnEvent_GrowthRefresh()
|
||||
self:ClosePopup()
|
||||
self:SwitchTog()
|
||||
end
|
||||
return DiscCtrl
|
||||
Reference in New Issue
Block a user