forked from endernon/PGRData
206 lines
6.3 KiB
Lua
206 lines
6.3 KiB
Lua
|
local XExFubenActivityManager = require("XEntity/XFuben/XExFubenActivityManager")
|
|||
|
|
|||
|
-- 2023年情人节活动
|
|||
|
XMazeManagerCreator = function()
|
|||
|
local RequestProto = {
|
|||
|
GetTicket = "MazeGetTicketRequest",
|
|||
|
SetRobotId = "MazeSetRobotRequest",
|
|||
|
}
|
|||
|
|
|||
|
---@class XMazeManager
|
|||
|
local XMazeManager = XExFubenActivityManager.New(XFubenConfigs.ChapterType.Maze, "MazeManager")
|
|||
|
|
|||
|
local _IsGetTicket = false
|
|||
|
local _PartnerRobotId = false
|
|||
|
local _Stage = {}
|
|||
|
|
|||
|
function XMazeManager.SetActivityData(data)
|
|||
|
--// 当前重置计数
|
|||
|
--public int ResetCount;
|
|||
|
--
|
|||
|
--// 领取重置计数
|
|||
|
--public int AwardResetCount;
|
|||
|
|
|||
|
if data.ActivityId then
|
|||
|
XMazeConfig.SetActivityId(data.ActivityId)
|
|||
|
end
|
|||
|
_IsGetTicket = data.IsGetTicket
|
|||
|
_PartnerRobotId = data.RobotId
|
|||
|
_Stage = data.PassStages
|
|||
|
end
|
|||
|
|
|||
|
function XMazeManager.IsOpen()
|
|||
|
local timeId = XMazeConfig.GetTimeId()
|
|||
|
if XFunctionManager.CheckInTimeByTimeId(timeId) and XPlayer.Level >= 52 then
|
|||
|
return true
|
|||
|
end
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
function XMazeManager.OpenMain()
|
|||
|
if XMazeManager.IsOpen() then
|
|||
|
XLuaUiManager.Open("UiMazeMain")
|
|||
|
else
|
|||
|
XUiManager.TipText("CommonActivityNotStart")
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XMazeManager:ExGetProgressTip()
|
|||
|
local str = ""
|
|||
|
if not self:ExGetIsLocked() then
|
|||
|
local finishCount, totalCount = XMazeManager.GetTaskProgress()
|
|||
|
str = XUiHelper.GetText("StrongholdActivityProgress", finishCount, totalCount)
|
|||
|
end
|
|||
|
return str
|
|||
|
end
|
|||
|
|
|||
|
function XMazeManager.GetPassedStageAmount()
|
|||
|
local allStage = _Stage
|
|||
|
local amountPassed = 0
|
|||
|
for i, stage in pairs(allStage) do
|
|||
|
if stage.MaxScore >= 0 then
|
|||
|
amountPassed = amountPassed + 1
|
|||
|
end
|
|||
|
end
|
|||
|
return amountPassed
|
|||
|
end
|
|||
|
|
|||
|
function XMazeManager.IsStagePassed(stageId)
|
|||
|
local allStage = _Stage
|
|||
|
for i, stage in pairs(allStage) do
|
|||
|
if stage.StageId == stageId then
|
|||
|
return true
|
|||
|
end
|
|||
|
end
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
function XMazeManager.GetTaskList()
|
|||
|
local taskId = XMazeConfig.GetTaskId()
|
|||
|
return XDataCenter.TaskManager.GetTimeLimitTaskListByGroupId(taskId)
|
|||
|
end
|
|||
|
|
|||
|
local TaskState = XDataCenter.TaskManager.TaskState
|
|||
|
function XMazeManager.GetTaskProgress()
|
|||
|
local taskAmount, finishAmount = 0, 0
|
|||
|
local taskId = XMazeConfig.GetTaskId()
|
|||
|
if taskId and taskId > 0 then
|
|||
|
local taskList = XDataCenter.TaskManager.GetTimeLimitTaskListByGroupId(taskId, false)
|
|||
|
if taskList then
|
|||
|
for i = 1, #taskList do
|
|||
|
local taskData = taskList[i]
|
|||
|
if taskData.State == TaskState.Finish then
|
|||
|
finishAmount = finishAmount + 1
|
|||
|
end
|
|||
|
taskAmount = taskAmount + 1
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
return finishAmount, taskAmount
|
|||
|
end
|
|||
|
|
|||
|
function XMazeManager.IsTaskCanGetReward()
|
|||
|
local taskId = XMazeConfig.GetTaskId()
|
|||
|
if taskId and taskId > 0 then
|
|||
|
local taskList = XDataCenter.TaskManager.GetTimeLimitTaskListByGroupId(taskId, false)
|
|||
|
if taskList then
|
|||
|
for i = 1, #taskList do
|
|||
|
local taskData = taskList[i]
|
|||
|
if taskData.State == TaskState.Achieved then
|
|||
|
return true
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
function XMazeManager.IsGetTicket()
|
|||
|
return _IsGetTicket
|
|||
|
end
|
|||
|
|
|||
|
function XMazeManager.GetPartnerRobotId()
|
|||
|
return _PartnerRobotId
|
|||
|
end
|
|||
|
|
|||
|
function XMazeManager.InitStageInfo()
|
|||
|
-- 关卡池的关卡
|
|||
|
local configs = XMazeConfig.GetAllStageConfig()
|
|||
|
local stageInfo = nil
|
|||
|
for _, stageConfig in pairs(configs) do
|
|||
|
local stageId = stageConfig.StageId
|
|||
|
stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
|
|||
|
if stageInfo then
|
|||
|
stageInfo.Type = XDataCenter.FubenManager.StageType.Maze
|
|||
|
else
|
|||
|
XLog.Error("[XMazeManager] 找不到配置的关卡id:", stageId)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XMazeManager.PreFight(stage, teamId, isAssist, challengeCount)
|
|||
|
local robotId = XMazeManager.GetPartnerRobotId()
|
|||
|
return {
|
|||
|
StageId = stage.StageId,
|
|||
|
IsHasAssist = isAssist,
|
|||
|
ChallengeCount = challengeCount,
|
|||
|
CaptainPos = 1,
|
|||
|
FirstFightPos = 1,
|
|||
|
CardIds = {},
|
|||
|
RobotIds = { robotId },
|
|||
|
}
|
|||
|
end
|
|||
|
|
|||
|
function XMazeManager.ShowReward(winData)
|
|||
|
local data = winData.SettleData.MazeResult
|
|||
|
XLuaUiManager.Open("UiMazeSettle", data)
|
|||
|
end
|
|||
|
|
|||
|
function XMazeManager.RequestSetPartnerRobotId(robotId)
|
|||
|
XNetwork.Call(RequestProto.SetRobotId, {
|
|||
|
RobotId = robotId
|
|||
|
}, function(res)
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
XUiManager.TipCode(res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
_PartnerRobotId = robotId
|
|||
|
XEventManager.DispatchEvent(XEventId.EVENT_MAZE_UPDATE_ROBOT_SELECTED)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
function XMazeManager.AutoRequestGetTicket()
|
|||
|
if _IsGetTicket then
|
|||
|
return
|
|||
|
end
|
|||
|
if not XMazeManager.IsOpen() then
|
|||
|
return
|
|||
|
end
|
|||
|
XNetwork.Call(RequestProto.GetTicket, {}, function(res)
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
--XUiManager.TipCode(res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
_IsGetTicket = true
|
|||
|
local rewardGoodList = res.RewardGoodsList
|
|||
|
if #rewardGoodList > 0 then
|
|||
|
XUiManager.OpenUiObtain(rewardGoodList)
|
|||
|
end
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
function XMazeManager.GetPlayerPrefsKey()
|
|||
|
return string.format("ValentinesDay2023_Open_UI_First_Time_%s", XPlayer.Id)
|
|||
|
end
|
|||
|
|
|||
|
function XMazeManager.IsFirstTime()
|
|||
|
local isFirstTimeOpenUi = CS.UnityEngine.PlayerPrefs.GetInt(XMazeManager.GetPlayerPrefsKey(), 1)
|
|||
|
return isFirstTimeOpenUi == 1
|
|||
|
end
|
|||
|
|
|||
|
return XMazeManager
|
|||
|
end
|
|||
|
|
|||
|
XRpc.NotifyMazeData = function(res)
|
|||
|
XDataCenter.MazeManager.SetActivityData(res)
|
|||
|
end
|