forked from endernon/PGRData
339 lines
No EOL
13 KiB
Lua
339 lines
No EOL
13 KiB
Lua
local XUiFubenExperimentDetail = XLuaUiManager.Register(XLuaUi, "UiFubenExperimentDetail")
|
|
|
|
local UiState =
|
|
{
|
|
Normal = 1,
|
|
SkillExplain = 2,
|
|
}
|
|
|
|
local XUiFubenExperimentGridStar = require("XUi/XUiFubenExperiment/XUiFubenExperimentGridStar")
|
|
|
|
function XUiFubenExperimentDetail:OnAwake()
|
|
self:AutoSetGameObject()
|
|
self:AddListener()
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:OnStart(trialLevelInfo, curType)
|
|
self.AssetPanel = XUiPanelAsset.New(self, self.PanelAsset,
|
|
XDataCenter.ItemManager.ItemId.FreeGem,
|
|
XDataCenter.ItemManager.ItemId.ActionPoint,
|
|
XDataCenter.ItemManager.ItemId.Coin)
|
|
self.TrialLevelInfo = trialLevelInfo
|
|
XDataCenter.FubenExperimentManager.SetCurExperimentLevelId(self.TrialLevelInfo.Id)
|
|
self.CurType = curType
|
|
if self.TrialLevelInfo.Type ~= XDataCenter.FubenExperimentManager.TrialLevelType.Switch then
|
|
self.BtnSingle.gameObject:SetActive(false)
|
|
self.BtnMult.gameObject:SetActive(false)
|
|
if curType == XDataCenter.FubenExperimentManager.TrialLevelType.Mult then
|
|
self.MultStageCfg = XDataCenter.FubenManager.GetStageCfg(self.TrialLevelInfo.MultStageId)
|
|
end
|
|
else
|
|
self.CurType = XDataCenter.FubenExperimentManager.GetRecordMode(self.TrialLevelInfo.MultStageId)
|
|
self.MultStageCfg = XDataCenter.FubenManager.GetStageCfg(self.TrialLevelInfo.MultStageId)
|
|
end
|
|
self.CurUiState = UiState.Normal
|
|
self.BtnHelp.gameObject:SetActiveEx(self.TrialLevelInfo.HelpCourseId ~= 0)
|
|
self.PanelSkillInformation.gameObject:SetActiveEx(false)
|
|
|
|
if self.TrialLevelInfo.HeadIcon then
|
|
self.RImgNandu:SetRawImage(self.TrialLevelInfo.HeadIcon)
|
|
end
|
|
|
|
XEventManager.AddEventListener(XEventId.EVENT_ROOM_CANCEL_MATCH, self.OnCancelMatch, self)
|
|
self:UpdateInfo()
|
|
self:UpdateMode()
|
|
self:InitBossSkillInfo()
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:OnEnable()
|
|
self.BtnQuickMatch:SetDisable(false)
|
|
self:UpdatePanelStarReward()
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:OnDestroy()
|
|
XEventManager.RemoveEventListener(XEventId.EVENT_ROOM_CANCEL_MATCH, self.OnCancelMatch, self)
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:OnGetEvents()
|
|
return {
|
|
XEventId.EVENT_EXPERIMENT_GET_STAR_REWARD,
|
|
}
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:OnNotify(evt, ...)
|
|
if evt == XEventId.EVENT_EXPERIMENT_GET_STAR_REWARD then
|
|
self:UpdatePanelStarReward()
|
|
end
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:AddListener()
|
|
self:RegisterClickEvent(self.BtnBack, self.OnBtnBackClick)
|
|
self:RegisterClickEvent(self.BtnMainUi, self.OnBtnMainUiClick)
|
|
self:RegisterClickEvent(self.BtnSingle, self.OnBtnSingleClick)
|
|
self:RegisterClickEvent(self.BtnSingleEnter, self.OnBtnSingleEnterClick)
|
|
self:RegisterClickEvent(self.BtnMult, self.OnBtnMultClick)
|
|
self:RegisterClickEvent(self.BtnMultCreateRoom, self.OnBtnMultCreateRoomClick)
|
|
self:RegisterClickEvent(self.BtnQuickMatch, self.OnBtnQuickMatchClick)
|
|
self.BtnHelp.CallBack = function()
|
|
self:OnBtnHelpClick()
|
|
end
|
|
self:BindHelpBtnOnly(self.BtnHelp)
|
|
self.BtnBossInfo.CallBack = function()
|
|
self:OnBtnBossInfoClick()
|
|
end
|
|
for i=1, #self.GridStarCommonTable, 1 do
|
|
self.GridStarCommonTable[i].BtnGet.CallBack = function ()
|
|
self:OnClickGetBtnStarReward(i)
|
|
end
|
|
end
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:AutoSetGameObject()
|
|
self.GridStageStarTable = {}
|
|
for i=0, self.PanelTargetList.childCount - 1, 1 do
|
|
table.insert(self.GridStageStarTable, XUiFubenExperimentGridStar.New(self.PanelTargetList:GetChild(i)))
|
|
end
|
|
|
|
self.GridStarCommonTable = {}
|
|
for i=1, 3, 1 do
|
|
local panelGridCommon = self.PanelDrop:Find("PanelGridCommon"..i)
|
|
table.insert(self.GridStarCommonTable,
|
|
{ PanelGridCommon = panelGridCommon,
|
|
GridCommon = XUiGridCommon.New(self, panelGridCommon:Find("GridCommon")),
|
|
Effect = panelGridCommon:Find("PanelEffect"),
|
|
BtnGet = panelGridCommon:Find("BtnGet"):GetComponent("XUiButton")})
|
|
end
|
|
end
|
|
|
|
--初始化技能介绍
|
|
function XUiFubenExperimentDetail:InitBossSkillInfo()
|
|
self.PanelTxtDes.gameObject:SetActiveEx(false)
|
|
|
|
if self.TrialLevelInfo.SkillExplainId ~= 0 then
|
|
--是否显示技能按钮
|
|
self.BtnBossInfo.gameObject:SetActiveEx(true)
|
|
|
|
self.SkillDescDatas = XFubenExperimentConfigs.GetExperimentSkillExplainById(self.TrialLevelInfo.SkillExplainId)
|
|
if self.SkillDescDatas and self.SkillDescDatas.SkillTitle then
|
|
for i = 1, #self.SkillDescDatas.SkillTitle do
|
|
local go = CS.UnityEngine.Object.Instantiate(self.PanelTxtDes, self.PanelContent)
|
|
local tmpObj = {}
|
|
tmpObj.Transform = go.transform
|
|
tmpObj.GameObject = go.gameObject
|
|
XTool.InitUiObject(tmpObj)
|
|
tmpObj.TxtRuleTittle.text = self.SkillDescDatas.SkillTitle[i]
|
|
tmpObj.TxtRule.text = self.SkillDescDatas.SkillDesc[i]
|
|
tmpObj.GameObject:SetActiveEx(true)
|
|
end
|
|
end
|
|
else
|
|
self.BtnBossInfo.gameObject:SetActiveEx(false)
|
|
end
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:OnBtnMainUiClick()
|
|
XLuaUiManager.RunMain()
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:OnBtnBackClick()
|
|
if self.CurUiState == UiState.SkillExplain then
|
|
self.CurUiState = UiState.Normal
|
|
self.BtnBossInfo.gameObject:SetActiveEx(true)
|
|
self:UpdateMode()
|
|
--播放动画
|
|
XLuaUiManager.SetMask(true)
|
|
self:PlayAnimation("PanelSkillInformationDisable", function()
|
|
self:PlayAnimation("AnimEnable", function()
|
|
XLuaUiManager.SetMask(false)
|
|
end)
|
|
end)
|
|
return
|
|
end
|
|
local title = CS.XTextManager.GetText("TipTitle")
|
|
local cancelMatchMsg = CS.XTextManager.GetText("OnlineInstanceCancelMatch")
|
|
if XDataCenter.RoomManager.Matching then
|
|
XUiManager.DialogTip(title, cancelMatchMsg, XUiManager.DialogType.Normal, nil, function()
|
|
XDataCenter.RoomManager.CancelMatch(function()
|
|
self:Close()
|
|
end)
|
|
end)
|
|
else
|
|
self:Close()
|
|
end
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:OnBtnSingleClick()
|
|
self:OnSwitchButton()
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:OnBtnSingleEnterClick()
|
|
if self.TrialLevelInfo.TimeId and self.TrialLevelInfo.TimeId ~= 0 then
|
|
if XFunctionManager.CheckInTimeByTimeId(self.TrialLevelInfo.TimeId) then
|
|
if XTool.USENEWBATTLEROOM then
|
|
XLuaUiManager.Open("UiBattleRoleRoom", self.TrialLevelInfo.SingStageId)
|
|
else
|
|
XLuaUiManager.Open("UiNewRoomSingle", self.TrialLevelInfo.SingStageId)
|
|
end
|
|
else
|
|
XUiManager.TipText("ActivityBranchNotOpen")
|
|
end
|
|
else
|
|
if XTool.USENEWBATTLEROOM then
|
|
XLuaUiManager.Open("UiBattleRoleRoom", self.TrialLevelInfo.SingStageId)
|
|
else
|
|
XLuaUiManager.Open("UiNewRoomSingle", self.TrialLevelInfo.SingStageId)
|
|
end
|
|
end
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:OnBtnMultClick()
|
|
self:OnSwitchButton()
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:OnBtnMultCreateRoomClick()
|
|
XDataCenter.FubenManager.RequestCreateRoom(self.MultStageCfg)
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:OnBtnQuickMatchClick()
|
|
if XDataCenter.RoomManager.Matching then
|
|
return
|
|
end
|
|
|
|
XDataCenter.FubenManager.RequestMatchRoom(self.MultStageCfg, function()--匹配房间
|
|
self:RefreshMatching()
|
|
self.BtnQuickMatch:SetDisable(true)
|
|
end)
|
|
end
|
|
|
|
--打开图文面板
|
|
function XUiFubenExperimentDetail:OnBtnHelpClick()
|
|
local template = XHelpCourseConfig.GetHelpCourseTemplateById(self.TrialLevelInfo.HelpCourseId)
|
|
XUiManager.ShowHelpTip(template.Function)
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:OnBtnBossInfoClick()
|
|
self.CurUiState = UiState.SkillExplain
|
|
|
|
self.BtnBossInfo.gameObject:SetActiveEx(false)
|
|
self.PanelSingle.gameObject:SetActive(false)
|
|
self.PanelTeam.gameObject:SetActive(false)
|
|
--播放动画
|
|
XLuaUiManager.SetMask(true)
|
|
self:PlayAnimation("PanelInformationDisable", function()
|
|
self.PanelSkillInformation.gameObject:SetActiveEx(true)
|
|
self:PlayAnimation("PanelSkillInformationEnable", function()
|
|
XLuaUiManager.SetMask(false)
|
|
end)
|
|
end)
|
|
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:OnCancelMatch()
|
|
self.BtnQuickMatch:SetDisable(false)
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:RefreshMatching()
|
|
if XDataCenter.RoomManager.Matching then
|
|
XLuaUiManager.Open("UiOnLineMatching", self.MultStageCfg)
|
|
end
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:OnSwitchButton()
|
|
XDataCenter.RoomManager.CancelMatch() -- 切换模式先取消匹配
|
|
if self.TrialLevelInfo.Type == XDataCenter.FubenExperimentManager.TrialLevelType.Switch then
|
|
if self.CurType == XDataCenter.FubenExperimentManager.TrialLevelType.Signle then
|
|
self.CurType = XDataCenter.FubenExperimentManager.TrialLevelType.Mult
|
|
else
|
|
self.CurType = XDataCenter.FubenExperimentManager.TrialLevelType.Signle
|
|
end
|
|
XDataCenter.FubenExperimentManager.RecordMode(self.TrialLevelInfo.MultStageId,self.CurType)
|
|
end
|
|
self:UpdateMode()
|
|
self:UpdateDes()
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:UpdateMode()
|
|
if self.CurType == XDataCenter.FubenExperimentManager.TrialLevelType.Signle or self.CurType == XDataCenter.FubenExperimentManager.TrialLevelType.SkinTrial then
|
|
self.PanelSingle.gameObject:SetActive(true)
|
|
self.PanelTeam.gameObject:SetActive(false)
|
|
else
|
|
self.PanelSingle.gameObject:SetActive(false)
|
|
self.PanelTeam.gameObject:SetActive(true)
|
|
end
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:UpdateInfo()
|
|
self.TxtTitle.text = self.TrialLevelInfo.Name
|
|
self.TxtRecommendLevel.text = self.TrialLevelInfo.RecommendLevel
|
|
self.ImgFullScreen:SetRawImage(self.TrialLevelInfo.DetailBackGroundIco)
|
|
if self.TrialLevelInfo.StarReward and self.TrialLevelInfo.StarReward > 0 then -- 带有目标奖励的试玩关
|
|
self.PanelJindu.gameObject:SetActiveEx(true)
|
|
self.PanelNor.gameObject:SetActiveEx(false)
|
|
|
|
self:UpdatePanelStarReward()
|
|
else
|
|
self.PanelJindu.gameObject:SetActiveEx(false)
|
|
self.PanelNor.gameObject:SetActiveEx(true)
|
|
end
|
|
self:UpdateDes()
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:UpdateDes()
|
|
if self.CurType == XDataCenter.FubenExperimentManager.TrialLevelType.Signle or self.CurType == XDataCenter.FubenExperimentManager.TrialLevelType.SkinTrial then
|
|
self.TxtDes.text = string.gsub(self.TrialLevelInfo.SingleDescription, "\\n", "\n")
|
|
else
|
|
self.TxtDes.text = string.gsub(self.TrialLevelInfo.MultDescription, "\\n", "\n")
|
|
end
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:UpdatePanelStarReward()
|
|
if not self.TrialLevelInfo.StarReward or self.TrialLevelInfo.StarReward <= 0 then
|
|
return
|
|
end
|
|
|
|
local StarDescList = self.TrialLevelInfo.StarDesc
|
|
for i, gridStageStar in ipairs(self.GridStageStarTable) do
|
|
if StarDescList[i] then
|
|
gridStageStar.GameObject:SetActiveEx(true)
|
|
gridStageStar:SetDesc(StarDescList[i])
|
|
gridStageStar:SetActiveEx(XDataCenter.FubenExperimentManager.CheckTargetComplete(self.TrialLevelInfo.Id, i))
|
|
else
|
|
gridStageStar.GameObject:SetActiveEx(false)
|
|
end
|
|
end
|
|
|
|
local curStarNum, maxStarNum = XDataCenter.FubenExperimentManager.GetExperimentStarProgressById(self.TrialLevelInfo.Id)
|
|
self.ImgProgress.fillAmount = curStarNum / maxStarNum
|
|
local trialRewardCfg = XFubenExperimentConfigs.GetTrialStarRewardCfgById(self.TrialLevelInfo.StarReward)
|
|
local rewardIdList = trialRewardCfg.RewardId
|
|
for i, PanelStarCommon in ipairs(self.GridStarCommonTable) do
|
|
if rewardIdList[i] then
|
|
PanelStarCommon.PanelGridCommon.gameObject:SetActiveEx(true)
|
|
local rewardItemId = XRewardManager.GetRewardList(rewardIdList[i])[1]
|
|
PanelStarCommon.GridCommon:Refresh(rewardItemId)
|
|
local isResived = XDataCenter.FubenExperimentManager.CheckExperimentRewardIsTaked(self.TrialLevelInfo.Id, i)
|
|
if isResived then -- 已领取
|
|
PanelStarCommon.GridCommon:SetReceived(true)
|
|
PanelStarCommon.Effect.gameObject:SetActiveEx(false)
|
|
PanelStarCommon.BtnGet.gameObject:SetActiveEx(true)
|
|
else
|
|
local isCanResive = XDataCenter.FubenExperimentManager.CheckExperimentRewardIsCanTake(self.TrialLevelInfo.Id, i)
|
|
if isCanResive then
|
|
PanelStarCommon.GridCommon:SetReceived(false)
|
|
PanelStarCommon.Effect.gameObject:SetActiveEx(true)
|
|
PanelStarCommon.BtnGet.gameObject:SetActiveEx(true)
|
|
else
|
|
PanelStarCommon.GridCommon:SetReceived(false)
|
|
PanelStarCommon.Effect.gameObject:SetActiveEx(false)
|
|
PanelStarCommon.BtnGet.gameObject:SetActiveEx(false)
|
|
end
|
|
end
|
|
else
|
|
PanelStarCommon.PanelGridCommon.gameObject:SetActiveEx(false)
|
|
end
|
|
end
|
|
end
|
|
|
|
function XUiFubenExperimentDetail:OnClickGetBtnStarReward(index)
|
|
XDataCenter.FubenExperimentManager.GetStarReward(self.TrialLevelInfo.Id, index)
|
|
end |