193 lines
No EOL
7 KiB
Lua
193 lines
No EOL
7 KiB
Lua
local XUiSummerEpisodeNew = XLuaUiManager.Register(XLuaUi, "UiSummerEpisodeNew")
|
|
local XUiGridSummerEpisodePicture = require("XUi/XUiSummerEpisode/XUiGridSummerEpisodePicture")
|
|
local HELP_KEY = "SummerEpisodeHelp"
|
|
function XUiSummerEpisodeNew:OnAwake()
|
|
self.GameObject.transform:FindGameObject("BtnPhotograph"):SetActiveEx(false) -- 海外屏蔽自动存图
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnStart()
|
|
self.Lock = false
|
|
self:InitUiView()
|
|
self:RegisterButtonEvent()
|
|
XEventManager.AddEventListener(XEventId.EVENT_ROOM_ENTER_ROOM, self.OnCancelMatching, self)
|
|
XEventManager.AddEventListener(XEventId.EVENT_ROOM_CANCEL_MATCH, self.OnCancelMatching, self)
|
|
self.TaskRedEventId = XRedPointManager.AddRedPointEvent(self.BtnTask, self.OnCheckRedPoint, self, { XRedPointConditions.Types.CONDITION_SPECIALTRAIN_RED })
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnEnable()
|
|
self:UpdateActivityTime()
|
|
self:UpdateStageDetail()
|
|
self:StartTimer()
|
|
self.BtnMatching.gameObject:SetActiveEx(XDataCenter.RoomManager.Matching)
|
|
self.BtnMatch.gameObject:SetActiveEx(not XDataCenter.RoomManager.Matching)
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnDisable()
|
|
self:StopTimer()
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnDestroy()
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_ROOM_ENTER_ROOM, self.OnCancelMatching, self)
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_ROOM_CANCEL_MATCH, self.OnCancelMatching, self)
|
|
if self.TaskRedEventId then
|
|
XRedPointManager.RemoveRedPointEvent(self.TaskRedEventId)
|
|
end
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnCancelMatching()
|
|
self.BtnMatch.gameObject:SetActiveEx(true)
|
|
self.BtnMatching.gameObject:SetActiveEx(false)
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:InitUiView()
|
|
local activityConfig = XFubenSpecialTrainConfig.GetActivityConfigById(XDataCenter.FubenSpecialTrainManager.GetCurActivityId())
|
|
if not activityConfig then
|
|
return
|
|
end
|
|
self.AssetPanel = XUiPanelAsset.New(self, self.PanelAsset, XDataCenter.ItemManager.ItemId.FreeGem, XDataCenter.ItemManager.ItemId.ActionPoint, XDataCenter.ItemManager.ItemId.Coin)
|
|
self.EndTime = XFunctionManager.GetEndTimeByTimeId(activityConfig.TimeId)
|
|
self.Chapters = activityConfig.ChapterIds
|
|
self.CurChapter = {Id = self.Chapters[1]}
|
|
self.TxtName.text = activityConfig.Name
|
|
self.HelpDataFunc = function () return self:GetHelpDataFunc() end
|
|
self:BindHelpBtnNew(self.BtnHelpCourse, self.HelpDataFunc)
|
|
local isSave = XDataCenter.FubenSpecialTrainManager.GetSavePhotoValue()
|
|
if isSave == true then
|
|
self.BtnCircuit:SetButtonState(CS.UiButtonState.Select)
|
|
else
|
|
self.BtnCircuit:SetButtonState(CS.UiButtonState.Normal)
|
|
end
|
|
self:InitDynamicTable()
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:InitDynamicTable()
|
|
self.DynamicTable = XDynamicTableCurve.New(self.PanelMapList)
|
|
self.DynamicTable:SetDelegate(self)
|
|
self.DynamicTable:SetProxy(XUiGridSummerEpisodePicture)
|
|
self:SetupDynamicTable()
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:SetupDynamicTable()
|
|
local stages = XDataCenter.FubenSpecialTrainManager.GetPhotoStages()
|
|
self.DynamicTable:SetDataSource(stages)
|
|
self.DynamicTable:ReloadData(1)
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnDynamicTableEvent(event,index,grid)
|
|
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
|
|
self.CurIndex = index
|
|
local i = (index - 1) % #self.DynamicTable.DataSource + 1
|
|
self.StageId = self.DynamicTable.DataSource[i]
|
|
grid:Refresh(XDataCenter.FubenManager.GetStageIcon(self.StageId))
|
|
self:UpdateStageDetail()
|
|
end
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:UpdateStageDetail()
|
|
--照相特训关只有一关直接取第一章节第一关的数据作为展示
|
|
if not self.StageId then return end
|
|
local stageConfig = XDataCenter.FubenManager.GetStageCfg(self.StageId)
|
|
self:PlayAnimation("TxtMapNameEnable")
|
|
self.TxtStageDesc.text = stageConfig.Description
|
|
self.TxtCostNum.text = stageConfig.RequireActionPoint
|
|
self.TxtPeople.text = stageConfig.OnlinePlayerLeast
|
|
self.TxtMapName.text = stageConfig.Name
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:RegisterButtonEvent()
|
|
self.BtnBack.CallBack = function()
|
|
if XDataCenter.RoomManager.Matching then
|
|
XDataCenter.RoomManager.CancelMatch(function()
|
|
self:Close()
|
|
end)
|
|
else
|
|
self:Close()
|
|
end
|
|
end
|
|
self:BindHelpBtn(self.BtnHelpCourse, HELP_KEY)
|
|
self.BtnMainUi.CallBack = function() XLuaUiManager.RunMain() end
|
|
self.BtnTask.CallBack = function() self:OpenOneChildUi("UiSummerTaskReward",self) end
|
|
self.BtnMatch.CallBack = function() self:OnClickBtnMatch() end
|
|
self.BtnCreateRoom.CallBack = function() self:OnClickBtnCreateRoom() end
|
|
self.BtnCircuit.CallBack = function() self:OnClickBtnCircuit() end
|
|
self.BtnSwitch.CallBack = function() self.DynamicTable:TweenToIndex(self.CurIndex + 1) end
|
|
if self.BtnMatching then
|
|
self:RegisterClickEvent(self.BtnMatching,self.OnClickBtnMatching)
|
|
end
|
|
end
|
|
function XUiSummerEpisodeNew:OnClickBtnMatching()
|
|
XDataCenter.RoomManager.CancelMatch(function()
|
|
self.BtnMatch.gameObject:SetActiveEx(true)
|
|
self.BtnMatching.gameObject:SetActiveEx(false)
|
|
end)
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnClickBtnMatch()
|
|
self.BtnMatching.gameObject:SetActiveEx(true)
|
|
self.BtnMatch.gameObject:SetActiveEx(false)
|
|
XDataCenter.RoomManager.PhotoMatch(self.StageId,function()
|
|
XLuaUiManager.Open("UiOnLineMatching",self.StageId)
|
|
end)
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnClickBtnCreateRoom()
|
|
XDataCenter.RoomManager.PhotoCreateRoom(self.StageId)
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnClickBtnCircuit()
|
|
local isSave = self.BtnCircuit:GetToggleState()
|
|
XDataCenter.FubenSpecialTrainManager.SetSavePhotoValue(isSave)
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:UpdateActivityTime()
|
|
if XTool.UObjIsNil(self.TxtTime) then
|
|
self:StopTimer()
|
|
return
|
|
end
|
|
local now = XTime.GetServerNowTimestamp()
|
|
local offset = self.EndTime - now
|
|
if offset < 0 then
|
|
offset = 0
|
|
XUiManager.TipText("SummerEpisodeActivityEnd")
|
|
XLuaUiManager.RunMain()
|
|
self:StopTimer()
|
|
return
|
|
end
|
|
self.TxtTime.text = XUiHelper.GetTime(offset, XUiHelper.TimeFormatType.ACTIVITY)
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:StartTimer()
|
|
if self.Timer then self:StopTimer() end
|
|
self.Timer = XScheduleManager.ScheduleForever(handler(self, self.UpdateActivityTime), XScheduleManager.SECOND)
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:StopTimer()
|
|
if not self.Timer then return end
|
|
XScheduleManager.UnSchedule(self.Timer)
|
|
self.Timer = nil
|
|
end
|
|
|
|
-- 获取教程数据函数
|
|
function XUiSummerEpisodeNew:GetHelpDataFunc()
|
|
local helpIds = {}
|
|
for _, var in ipairs(self.CurChapter.HelpId) do
|
|
table.insert(helpIds, var)
|
|
end
|
|
|
|
if not helpIds then
|
|
return
|
|
end
|
|
|
|
local helpConfigs = {}
|
|
for i = 1, #helpIds do
|
|
helpConfigs[i] = XHelpCourseConfig.GetHelpCourseTemplateById(helpIds[i])
|
|
end
|
|
|
|
return helpConfigs
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnCheckRedPoint(count)
|
|
self.BtnTask:ShowReddot(count >= 0)
|
|
end
|
|
|
|
return XUiSummerEpisodeNew |