forked from endernon/PGRData
320 lines
No EOL
11 KiB
Lua
320 lines
No EOL
11 KiB
Lua
local XUiSummerEpisodeNew = XLuaUiManager.Register(XLuaUi, "UiSummerEpisodeNew")
|
|
local HELP_KEY = "SummerEpisodeHelp"
|
|
function XUiSummerEpisodeNew:OnAwake()
|
|
--2.6默认为竞争模式
|
|
self.IsPeaceModel = false
|
|
self.IsRandomStage = true
|
|
self.GameObject.transform:FindGameObject("BtnPhotograph"):SetActiveEx(false) -- 海外屏蔽自动存图
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnStart()
|
|
self.Pos = 1
|
|
self.MaxStageCount = 1
|
|
self:InitUiView()
|
|
self:RegisterButtonEvent()
|
|
XEventManager.AddEventListener(XEventId.EVENT_ROOM_ENTER_ROOM, self.OnCancelMatching, self)
|
|
XEventManager.AddEventListener(XEventId.EVENT_ROOM_CANCEL_MATCH, self.OnCancelMatching, self)
|
|
XEventManager.AddEventListener(XEventId.EVENT_ROOM_MATCH_PLAYERS, self.OnMatchPlayers, self)
|
|
self.TaskRedEventId = XRedPointManager.AddRedPointEvent(self.BtnTask, self.OnCheckRedPoint, self, { XRedPointConditions.Types.CONDITION_SPECIALTRAINPOINT_RED },nil,true)
|
|
self.MapRedPointId=XRedPointManager.AddRedPointEvent(self.BtnMap,self.OnCheckMapRedPoint,self,{XRedPointConditions.Types.CONDITION_SPECIALTRAINMAP_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)
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_ROOM_MATCH_PLAYERS, self.OnMatchPlayers, self)
|
|
if self.TaskRedEventId then
|
|
XRedPointManager.RemoveRedPointEvent(self.TaskRedEventId)
|
|
end
|
|
if self.MapRedPointId then
|
|
XRedPointManager.RemoveRedPointEvent(self.MapRedPointId)
|
|
end
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnCancelMatching()
|
|
self.BtnMatch.gameObject:SetActiveEx(true)
|
|
self.BtnMatching.gameObject:SetActiveEx(false)
|
|
self.BtnMask.gameObject:SetActiveEx(false)
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnBeginMatch()
|
|
self.BtnMatch.gameObject:SetActiveEx(false)
|
|
self.BtnMatching.gameObject:SetActiveEx(true)
|
|
self.BtnMask.gameObject:SetActiveEx(true)
|
|
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.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
|
|
|
|
--2.6取消竞争模式
|
|
if self.BtnPeace then
|
|
--self.BtnPeace:SetButtonState(self.IsPeaceModel and CS.UiButtonState.Select or CS.UiButtonState.Normal)
|
|
self.BtnPeace.gameObject:SetActiveEx(false)
|
|
end
|
|
|
|
self.StageIds = XDataCenter.FubenSpecialTrainManager.GetAllStageIdByActivityId(activityConfig.Id, true)
|
|
self.MaxStageCount = #self.StageIds
|
|
self:UpdateStageId()
|
|
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:UpdateStageDetail()
|
|
self:UpdateStageId()
|
|
if not self.CurrentStageId then return end
|
|
-- 当前选择的关卡是否为随机关卡
|
|
self.IsRandomStage = XDataCenter.FubenSpecialTrainManager.CheckHasRandomStage(self.CurrentStageId)
|
|
self.BtnCreateRoom:SetButtonState(self.IsRandomStage and CS.UiButtonState.Disable or CS.UiButtonState.Normal)
|
|
-- 刷新关卡图片
|
|
if not self.IsRandomStage then
|
|
local imgPath = XDataCenter.FubenManager.GetStageIcon(self.CurrentStageId)
|
|
self.PanelPhoto:SetRawImage(imgPath)
|
|
self.MapName.text=XDataCenter.FubenManager.GetStageName(self.CurrentStageId)
|
|
else
|
|
local icon = XFubenSpecialTrainConfig.GetRandomStageIconById(self.CurrentStageId)
|
|
self.MapName.text=XFubenSpecialTrainConfig.GetRandomStageNameById(self.CurrentStageId)
|
|
self.PanelPhoto:SetRawImage(icon)
|
|
end
|
|
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:RegisterButtonEvent()
|
|
self.BtnBack.CallBack = function()
|
|
if XDataCenter.RoomManager.Matching then
|
|
XDataCenter.RoomManager.CancelPhotoMatch(function()
|
|
XDataCenter.FubenSpecialTrainManager.SetCurrentStageId(nil)
|
|
self:Close()
|
|
end)
|
|
else
|
|
XDataCenter.FubenSpecialTrainManager.SetCurrentStageId(nil)
|
|
self:Close()
|
|
end
|
|
end
|
|
self:BindHelpBtn(self.BtnHelpCourse, HELP_KEY)
|
|
self.BtnMainUi.CallBack = function()
|
|
XDataCenter.FubenSpecialTrainManager.SetCurrentStageId(nil)
|
|
XLuaUiManager.RunMain()
|
|
end
|
|
self.BtnTask.CallBack = function() XLuaUiManager.Open("UiSummerEpisodeNewTask",function() XRedPointManager.Check(self.TaskRedEventId) end) end
|
|
self.BtnMatch.CallBack = function() self:OnClickBtnMatch() end
|
|
self.BtnCreateRoom.CallBack = function() self:OnClickBtnCreateRoom() end
|
|
self.BtnCircuit.CallBack = function() self:OnClickBtnCircuit() end
|
|
self.BtnMapName.CallBack=function() self:OnClickBtnMap() end
|
|
--2.6取消竞争模式
|
|
--self.BtnPeace.CallBack = function() self:OnClickBtnPeace() end
|
|
|
|
if self.BtnMatching then
|
|
self:RegisterClickEvent(self.BtnMatching,self.OnClickBtnMatching)
|
|
end
|
|
self.BtnYou.CallBack = function() self:OnClickBtnYou() end
|
|
self.BtnZuo.CallBack = function() self:OnClickBtnZuo() end
|
|
self.BtnMap.CallBack = function() self:OnClickBtnMap() end
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnClickBtnMatching()
|
|
XDataCenter.RoomManager.CancelPhotoMatch(function()
|
|
self:OnCancelMatching()
|
|
end)
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnClickBtnMatch()
|
|
self:Match(true)
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnClickBtnCreateRoom()
|
|
if self.IsRandomStage then
|
|
XUiManager.TipMsg(CSXTextManagerGetText("SpecialTrainRandomMapTip"))
|
|
return
|
|
end
|
|
|
|
local stageId = self.CurrentStageId
|
|
if self.IsPeaceModel then
|
|
stageId = XFubenSpecialTrainConfig.GetHellStageId(self.CurrentStageId)
|
|
end
|
|
|
|
XDataCenter.RoomManager.PhotoCreateRoom(stageId)
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:OnClickBtnCircuit()
|
|
local isSave = self.BtnCircuit:GetToggleState()
|
|
XDataCenter.FubenSpecialTrainManager.SetSavePhotoValue(isSave)
|
|
end
|
|
|
|
-- 右
|
|
function XUiSummerEpisodeNew:OnClickBtnYou()
|
|
if self.Pos then
|
|
local nextPos = self.Pos + 1
|
|
if nextPos > self.MaxStageCount then
|
|
nextPos = 1
|
|
end
|
|
self:GotoStage(nextPos)
|
|
end
|
|
end
|
|
|
|
-- 左
|
|
function XUiSummerEpisodeNew:OnClickBtnZuo()
|
|
if self.Pos then
|
|
local lastPos = self.Pos - 1
|
|
if lastPos < 1 then
|
|
lastPos = self.MaxStageCount
|
|
end
|
|
self:GotoStage(lastPos)
|
|
end
|
|
end
|
|
|
|
--2.6取消竞争模式,没有模式切换
|
|
--[[
|
|
function XUiSummerEpisodeNew:OnClickBtnPeace()
|
|
self.IsPeaceModel = self.BtnPeace:GetToggleState()
|
|
end
|
|
--]]
|
|
|
|
function XUiSummerEpisodeNew:OnClickBtnMap()
|
|
XLuaUiManager.Open("UiSummerEpisodeMap", self.CurrentStageId, true, handler(self, self.BtnSwitchCallback))
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:BtnSwitchCallback(stageId)
|
|
for index, id in pairs(self.StageIds) do
|
|
if id == stageId then
|
|
self.Pos = index
|
|
end
|
|
end
|
|
self.CurrentStageId = stageId
|
|
XDataCenter.FubenSpecialTrainManager.SetCurrentStageId(stageId)
|
|
self:UpdateStageDetail()
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:UpdateStageId()
|
|
self.CurrentStageId=XDataCenter.FubenSpecialTrainManager.GetCurrentStageId()
|
|
if not self.CurrentStageId then
|
|
self.CurrentStageId = self.StageIds[self.Pos]
|
|
XDataCenter.FubenSpecialTrainManager.SetCurrentStageId(self.CurrentStageId)
|
|
else
|
|
for index, id in pairs(self.StageIds) do
|
|
if id == self.CurrentStageId then
|
|
self.Pos = index
|
|
end
|
|
end
|
|
end
|
|
if XDataCenter.FubenSpecialTrainManager.CheckStageIsNewUnLock(self.CurrentStageId) then
|
|
XDataCenter.FubenSpecialTrainManager.SaveForOldUnLock(self.CurrentStageId)
|
|
end
|
|
XRedPointManager.Check(self.MapRedPointId)
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:GotoStage(index)
|
|
if self.Pos == index then
|
|
return
|
|
end
|
|
|
|
self.Pos = index
|
|
self.CurrentStageId = self.StageIds[index]
|
|
self:UpdateStageDetail()
|
|
self:PlayAnimation("QieHuan")
|
|
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
|
|
|
|
function XUiSummerEpisodeNew:OnCheckMapRedPoint(count)
|
|
self.BtnMap:ShowReddot(count>=0)
|
|
end
|
|
|
|
-- 匹配人数过多
|
|
function XUiSummerEpisodeNew:OnMatchPlayers(recommendStageId)
|
|
self:OnCancelMatching()
|
|
XUiManager.DialogTip(CS.XTextManager.GetText("SpecialTrainMatchTipTitle"),
|
|
CS.XTextManager.GetText("SpecialTrainMatchTipContent"),
|
|
XUiManager.DialogType.Normal,
|
|
function()
|
|
self:Match(false)
|
|
end, function()
|
|
--根据服务端下方的id创建房间
|
|
XDataCenter.RoomManager.PhotoCreateRoom(recommendStageId)
|
|
end)
|
|
end
|
|
|
|
function XUiSummerEpisodeNew:Match(needMatchCountCheck)
|
|
-- 随机关卡匹配
|
|
local stageIds = XDataCenter.FubenSpecialTrainManager.GetStageIdsByHellMode(self.IsPeaceModel)
|
|
XDataCenter.RoomManager.PhotoMatch(stageIds, function()
|
|
self:OnBeginMatch()
|
|
XLuaUiManager.Open("UiOnLineMatching")
|
|
end, needMatchCountCheck)
|
|
end
|
|
|
|
return XUiSummerEpisodeNew |