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,179 @@
|
||||
local DailyCheckInCtrl = class("DailyCheckInCtrl", BaseCtrl)
|
||||
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
|
||||
DailyCheckInCtrl._mapNodeConfig = {
|
||||
aniRoot = {
|
||||
sNodeName = "----SafeAreaRoot----",
|
||||
sComponentName = "Animator"
|
||||
},
|
||||
cgRoot = {
|
||||
sNodeName = "----SafeAreaRoot----",
|
||||
sComponentName = "CanvasGroup"
|
||||
},
|
||||
cgBlur = {
|
||||
sNodeName = "t_fullscreen_blur_blue",
|
||||
sComponentName = "CanvasGroup"
|
||||
},
|
||||
blur = {
|
||||
sNodeName = "t_fullscreen_blur_blue"
|
||||
},
|
||||
snapshot = {
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
btnClose = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Close"
|
||||
},
|
||||
imgMonth = {nCount = 2, sComponentName = "Image"},
|
||||
txtYear = {sComponentName = "TMP_Text"},
|
||||
goSpace = {},
|
||||
txtRewardTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "DailyCheckIn_Reward"
|
||||
},
|
||||
goCurItem = {
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl"
|
||||
},
|
||||
txtRewardName = {sComponentName = "TMP_Text"},
|
||||
btnCur = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Tips"
|
||||
},
|
||||
sv = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
trSv = {sNodeName = "sv", sComponentName = "Transform"}
|
||||
}
|
||||
DailyCheckInCtrl._mapEventConfig = {}
|
||||
function DailyCheckInCtrl:Refresh()
|
||||
self:RefreshRight()
|
||||
self:RefreshList()
|
||||
self:RefreshSelect()
|
||||
end
|
||||
function DailyCheckInCtrl:RefreshRight()
|
||||
local nTimeNow = CS.ClientManager.Instance.serverTimeStampWithTimeZone
|
||||
local nYear = tonumber(os.date("!%Y", nTimeNow))
|
||||
local nTens, _ = math.modf(self.nMonth / 10 % 10)
|
||||
local nOnes, _ = math.modf(self.nMonth % 10)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtYear, nYear)
|
||||
self._mapNode.goSpace:SetActive(nTens == 1)
|
||||
self:SetAtlasSprite(self._mapNode.imgMonth[1], "05_number", "zs_dailycheckin_month_" .. nTens)
|
||||
NovaAPI.SetImageNativeSize(self._mapNode.imgMonth[1])
|
||||
self:SetAtlasSprite(self._mapNode.imgMonth[2], "05_number", "zs_dailycheckin_month_" .. nOnes)
|
||||
NovaAPI.SetImageNativeSize(self._mapNode.imgMonth[2])
|
||||
end
|
||||
function DailyCheckInCtrl:RefreshList()
|
||||
for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do
|
||||
self:UnbindCtrlByNode(objCtrl)
|
||||
self.tbGridCtrl[nInstanceId] = nil
|
||||
end
|
||||
self._mapNode.sv:Init(#self.tbList, self, self.OnGridRefresh, self.OnGridBtnClick)
|
||||
end
|
||||
function DailyCheckInCtrl:OnGridRefresh(goGrid, gridIndex)
|
||||
local nIndex = gridIndex + 1
|
||||
local mapItem = self.tbList[nIndex]
|
||||
local nInstanceID = goGrid:GetInstanceID()
|
||||
if not self.tbGridCtrl[nInstanceID] then
|
||||
self.tbGridCtrl[nInstanceID] = self:BindCtrlByNode(goGrid, "Game.UI.TemplateEx.TemplateItemCtrl")
|
||||
end
|
||||
if nIndex == self.nIndex then
|
||||
self.tbGridCtrl[nInstanceID]:SetItem(mapItem.ItemId, nil, mapItem.ItemQty, nil, self.bReceived, nil, nil, true)
|
||||
else
|
||||
self.tbGridCtrl[nInstanceID]:SetItem(mapItem.ItemId, nil, mapItem.ItemQty, nil, nIndex <= self.nIndex, nil, nil, true)
|
||||
end
|
||||
self.tbGridCtrl[nInstanceID]:SetMultiSelected_Blue(nIndex == self.nIndex)
|
||||
self.tbGridCtrl[nInstanceID]:SetSelect(nIndex == self.nSelect)
|
||||
end
|
||||
function DailyCheckInCtrl:OnGridBtnClick(goGrid, gridIndex)
|
||||
local nIndex = gridIndex + 1
|
||||
local nInstanceID = goGrid:GetInstanceID()
|
||||
if self.nSelect then
|
||||
local goSelect = self._mapNode.trSv:Find("Viewport/Content/" .. self.nSelect - 1)
|
||||
if goSelect then
|
||||
self.tbGridCtrl[goSelect.gameObject:GetInstanceID()]:SetSelect(false)
|
||||
end
|
||||
end
|
||||
self.nSelect = nIndex
|
||||
self.tbGridCtrl[nInstanceID]:SetSelect(true)
|
||||
self:RefreshSelect()
|
||||
end
|
||||
function DailyCheckInCtrl:RefreshSelect()
|
||||
local mapItem = self.tbList[self.nSelect]
|
||||
local mapCfg = ConfigTable.GetData_Item(mapItem.ItemId)
|
||||
self._mapNode.goCurItem:SetItem(mapItem.ItemId, mapCfg.nRarity, mapItem.ItemQty, nil, nil, nil, nil, true)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtRewardName, mapCfg.Title)
|
||||
end
|
||||
function DailyCheckInCtrl:PlayReceiveAni()
|
||||
local goCur = self._mapNode.trSv:Find("Viewport/Content/" .. self.nIndex - 1)
|
||||
local aniReceive = goCur:Find("btnGrid/AnimRoot/goItem/--Common--/goReceived"):GetComponent("Animator")
|
||||
aniReceive.gameObject:SetActive(true)
|
||||
aniReceive:SetTrigger("tIn")
|
||||
CS.WwiseAudioManager.Instance:PlaySound("ui_common_stamp")
|
||||
self:AddTimer(1, 0.4, function()
|
||||
UTILS.OpenReceiveByReward(self.mapReward, function()
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgRoot, true)
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgBlur, true)
|
||||
end)
|
||||
end, true, true, true)
|
||||
end
|
||||
function DailyCheckInCtrl:FadeIn(bPlayFadeIn)
|
||||
self._mapNode.aniRoot:SetTrigger("tIn")
|
||||
if not self.bReceived then
|
||||
self:AddTimer(1, 0.4, "PlayReceiveAni", true, true, true)
|
||||
end
|
||||
end
|
||||
function DailyCheckInCtrl:Awake()
|
||||
local tbParam = self:GetPanelParam()
|
||||
if type(tbParam) == "table" then
|
||||
self.mapReward = tbParam[1]
|
||||
self.callback = tbParam[2]
|
||||
end
|
||||
local nMonth, nDays = PlayerData.Daily.GetMonthAndDays()
|
||||
self.nMonth = nMonth
|
||||
self.nIndex = PlayerData.Daily.GetDailyCheckInIndex()
|
||||
self.tbList = PlayerData.Daily.GetDailyCheckInList(nDays)
|
||||
self.nSelect = self.nIndex
|
||||
self.bReceived = self.mapReward == nil or self.mapReward.tbReward == nil or #self.mapReward.tbReward == 0
|
||||
if self.bReceived then
|
||||
PlayerData.Daily.SetManualPanel(true)
|
||||
else
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgRoot, false)
|
||||
NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.cgBlur, false)
|
||||
end
|
||||
end
|
||||
function DailyCheckInCtrl:OnEnable()
|
||||
self.tbGridCtrl = {}
|
||||
self._mapNode.blur:SetActive(true)
|
||||
self:Refresh()
|
||||
end
|
||||
function DailyCheckInCtrl:OnDisable()
|
||||
for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do
|
||||
self:UnbindCtrlByNode(objCtrl)
|
||||
self.tbGridCtrl[nInstanceId] = nil
|
||||
end
|
||||
self.tbGridCtrl = {}
|
||||
end
|
||||
function DailyCheckInCtrl:OnDestroy()
|
||||
end
|
||||
function DailyCheckInCtrl:OnBtnClick_Close(btn)
|
||||
if self.bReceived then
|
||||
PlayerData.Daily.SetManualPanel(false)
|
||||
end
|
||||
WwiseAudioMgr:PlaySound("ui_main_dailyPanel_close")
|
||||
self._mapNode.aniRoot:SetTrigger("tOut")
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.4)
|
||||
self:AddTimer(1, 0.4, function()
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.DailyCheckIn)
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
if self.callback then
|
||||
self.callback()
|
||||
end
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end, true, true, true)
|
||||
end
|
||||
function DailyCheckInCtrl:OnBtnClick_Tips(btn)
|
||||
UTILS.ClickItemGridWithTips(self.tbList[self.nSelect].ItemId, btn.transform, true, true, false)
|
||||
end
|
||||
return DailyCheckInCtrl
|
||||
@@ -0,0 +1,17 @@
|
||||
local DailyCheckInPanel = class("DailyCheckInPanel", BasePanel)
|
||||
DailyCheckInPanel._bIsMainPanel = false
|
||||
DailyCheckInPanel._tbDefine = {
|
||||
{
|
||||
sPrefabPath = "CheckIn/DailyCheckInPanel.prefab",
|
||||
sCtrlName = "Game.UI.CheckIn.DailyCheckInCtrl"
|
||||
}
|
||||
}
|
||||
function DailyCheckInPanel:Awake()
|
||||
end
|
||||
function DailyCheckInPanel:OnEnable()
|
||||
end
|
||||
function DailyCheckInPanel:OnDisable()
|
||||
end
|
||||
function DailyCheckInPanel:OnDestroy()
|
||||
end
|
||||
return DailyCheckInPanel
|
||||
Reference in New Issue
Block a user