PGRData/Script/matrix/xui/xuidormtask/XUiDormTask.lua

129 lines
No EOL
4.8 KiB
Lua

local XUiDormTask = XLuaUiManager.Register(XLuaUi, "UiDormTask")
local TextManager = CS.XTextManager
local PANEL_INDEX
function XUiDormTask:OnAwake()
PANEL_INDEX = XTaskConfig.PANELINDEX
self:InitBtnSound()
end
function XUiDormTask:OnStart(toggleType)
local lastSelectTab = XDataCenter.TaskManager.GetNewPlayerHint(XDataCenter.TaskManager.DormTaskLastSelectTab, PANEL_INDEX.Story)
self.CurToggleType = toggleType or lastSelectTab
self:Init()
end
function XUiDormTask:OnEnable()
self:CheckTogLockStatus()
self.TabPanelGroup:SelectIndex(self.CurToggleType)
XEventManager.AddEventListener(XEventId.EVENT_TASK_SYNC, self.OnTaskChangeSync, self)
end
function XUiDormTask:Init()
local itemId = XDataCenter.ItemManager.ItemId
self.AssetPanel = XUiPanelAsset.New(self, self.PanelAsset, itemId.FreeGem, itemId.ActionPoint, itemId.Coin)
self.BtnBack.CallBack = function() self:Close() end
self.BtnMainUi.CallBack = function() XLuaUiManager.RunMain() end
self.BtnMoneyReward.gameObject:SetActiveEx(false)
self.TogStory:SetNameByGroup(1, TextManager.GetText("DormTaskNText"))
self.TogDaily:SetNameByGroup(1, TextManager.GetText("DormTaskDText"))
self.TaskStoryModule = XUiPanelDormTaskStory.New(self.PanelTaskStory, self)
self.TaskDailyModule = XUiPanelDormTaskDaily.New(self.PanelTaskDaily, self)
self.TabList = {}
table.insert(self.TabList, self.TogStory)
table.insert(self.TabList, self.TogDaily)
self.TabPanelGroup:Init(self.TabList, function(index) self:OnTaskPanelSelect(index) end)
self:CheckTogLockStatus()
local lastSelectTab = XDataCenter.TaskManager.GetNewPlayerHint(XDataCenter.TaskManager.DormTaskLastSelectTab, PANEL_INDEX.Story)
self.CurToggleType = self.CurToggleType or lastSelectTab
-- 红点
self:AddRedPointEvent()
end
function XUiDormTask:CheckTogLockStatus()
local uiButtonState = CS.UiButtonState
local functionName = XFunctionManager.FunctionName
local dailyBtnStatus = XFunctionManager.JudgeCanOpen(functionName.TaskDay) and uiButtonState.Normal or uiButtonState.Disable
self.TogDaily:SetButtonState(dailyBtnStatus)
local activityBtnStatus = XFunctionManager.JudgeCanOpen(functionName.TaskActivity) and uiButtonState.Normal or uiButtonState.Disable
self.TogActivity:SetButtonState(activityBtnStatus)
end
function XUiDormTask:OnTaskChangeSync()
if self.CurToggleType == PANEL_INDEX.Story then
self.TaskStoryModule:Refresh()
elseif self.CurToggleType == PANEL_INDEX.Daily then
self.TaskDailyModule:Refresh()
end
end
function XUiDormTask:OnDisable()
XEventManager.RemoveEventListener(XEventId.EVENT_TASK_SYNC, self.OnTaskChangeSync, self)
end
function XUiDormTask:OnDestroy()
XDataCenter.TaskManager.UpdateViewCallback = nil
self.TaskDailyModule:StopSchedule()
end
--添加点事件
function XUiDormTask:AddRedPointEvent()
XRedPointManager.AddRedPointEvent(self.ImgStoryNewTag, self.RefreshStoryTabRedDot, self, { XRedPointConditions.Types.CONDITION_DORM_TASK }, XDataCenter.TaskManager.TaskType.DormNormal)
self.DailyPointId = XRedPointManager.AddRedPointEvent(self.ImgDailyNewTag, self.RefreshDailyTabRedDot, self, { XRedPointConditions.Types.CONDITION_DORM_TASK }, XDataCenter.TaskManager.TaskType.DormDaily)
end
function XUiDormTask:CheckDailyTask()
if self.DailyPointId then
XRedPointManager.Check(self.DailyPointId, XDataCenter.TaskManager.TaskType.DormDaily)
end
end
--剧情标签红点
function XUiDormTask:RefreshStoryTabRedDot(count)
self.ImgStoryNewTag.gameObject:SetActive(count >= 0)
end
--日常标签红点
function XUiDormTask:RefreshDailyTabRedDot(count)
self.ImgDailyNewTag.gameObject:SetActive(count >= 0)
end
function XUiDormTask:GetAutoKey(uiNode, eventName)
if not uiNode then
return
end
return eventName .. uiNode:GetHashCode()
end
function XUiDormTask:InitBtnSound()
self.SpecialSoundMap = {}
self.SpecialSoundMap[self:GetAutoKey(self.BtnBack, "onClick")] = XSoundManager.UiBasicsMusic.Return
self.SpecialSoundMap[self:GetAutoKey(self.BtnMainUi, "onClick")] = XSoundManager.UiBasicsMusic.Return
end
function XUiDormTask:OnTaskPanelSelect(index)
self.CurToggleType = index
if index == PANEL_INDEX.Story then
self.TaskDailyModule:HidePanel()
self.TaskStoryModule:ShowPanel()
XDataCenter.TaskManager.SaveNewPlayerHint(XDataCenter.TaskManager.DormTaskLastSelectTab, index)
self:PlayAnimation("StoryQieHuan")
elseif index == PANEL_INDEX.Daily then
if not XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.TaskDay) then
return
end
self.TaskStoryModule:HidePanel()
self.TaskDailyModule:ShowPanel()
XDataCenter.TaskManager.SaveNewPlayerHint(XDataCenter.TaskManager.DormTaskLastSelectTab, index)
self:PlayAnimation("DailyQieHuan")
end
end