528 lines
No EOL
23 KiB
Lua
528 lines
No EOL
23 KiB
Lua
local CsXTextManager = CS.XTextManager
|
|
local XUiPanelRoleModel = require("XUi/XUiCharacter/XUiPanelRoleModel")
|
|
|
|
--######################## XUiReformTaskGrid ########################
|
|
local XUiReformTaskGrid = XClass(nil, "XUiReformTaskGrid")
|
|
|
|
function XUiReformTaskGrid:Ctor(ui, rootUi)
|
|
self.GameObject = ui.gameObject
|
|
self.Transform = ui.transform
|
|
XTool.InitUiObject(self)
|
|
self.Data = nil
|
|
self.RootUi = rootUi
|
|
self.UiGridCommon = XUiGridCommon.New(rootUi, self.GridCommon)
|
|
self.BtnClick.CallBack = function() self:OnBtnClicked() end
|
|
end
|
|
|
|
-- data : TaskData
|
|
function XUiReformTaskGrid:SetData(data, nextData, maxScore, normalMaxScore)
|
|
-- if normalMaxScore == nil then normalMaxScore = 0 end
|
|
self.Data = data
|
|
-- 分数
|
|
local score = XDataCenter.ReformActivityManager.GetTaskFinishScore(data.Id)
|
|
self.TxtScore.text = score
|
|
-- 完成状态
|
|
self.PanelFinish.gameObject:SetActiveEx(data.State == XDataCenter.TaskManager.TaskState.Finish)
|
|
-- 物品信息
|
|
local rewardId = XTaskConfig.GetTaskRewardId(data.Id)
|
|
local rewardList = XRewardManager.GetRewardList(rewardId)
|
|
self.UiGridCommon:Refresh(rewardList[1])
|
|
-- 红点
|
|
self.Red.gameObject:SetActiveEx(data.State == XDataCenter.TaskManager.TaskState.Achieved)
|
|
-- self.ImgEffect.gameObject:SetActiveEx(data.State == XDataCenter.TaskManager.TaskState.Achieved)
|
|
-- 任务进度
|
|
local nextScore = XDataCenter.ReformActivityManager.GetTaskFinishScore(nextData.Id)
|
|
-- local progress = (maxScore + normalMaxScore - score) / (nextScore - score)
|
|
local progress = (maxScore - score) / (nextScore - score)
|
|
self.PanelPassedLine.fillAmount = progress
|
|
end
|
|
|
|
function XUiReformTaskGrid:OnBtnClicked()
|
|
if not XDataCenter.ReformActivityManager.GetIsOpen() then
|
|
XLuaUiManager.RunMain()
|
|
XUiManager.TipError(CsXTextManager.GetText("ReformAtivityTimeEnd"))
|
|
return
|
|
end
|
|
if self.Data.State == XDataCenter.TaskManager.TaskState.Achieved then
|
|
XDataCenter.ReformActivityManager.RequestFinishAllTask(function(rewardGoodsList)
|
|
XUiManager.OpenUiObtain(rewardGoodsList)
|
|
self.RootUi:RefreshTaskDataGrid()
|
|
end)
|
|
return
|
|
end
|
|
XUiManager.OpenUiTipRewardByRewardId(XTaskConfig.GetTaskRewardId(self.Data.Id))
|
|
end
|
|
|
|
--######################## XUiReformReadyPanel ########################
|
|
local XUiReformReadyPanel = XClass(nil, "XUiReformReadyPanel")
|
|
|
|
function XUiReformReadyPanel:Ctor(ui, rootUi)
|
|
self.GameObject = ui.gameObject
|
|
self.Transform = ui.transform
|
|
self.RootUi = rootUi
|
|
XTool.InitUiObject(self)
|
|
self.BaseStage = nil
|
|
self.GridBuff.gameObject:SetActiveEx(false)
|
|
self.GridCommon.gameObject:SetActiveEx(false)
|
|
self:RegisterUiEvents()
|
|
-- 资源
|
|
XUiPanelAsset.New(self, self.PanelAsset, XDataCenter.ItemManager.ItemId.FreeGem
|
|
, XDataCenter.ItemManager.ItemId.ActionPoint)
|
|
end
|
|
|
|
function XUiReformReadyPanel:SetData(baseStage)
|
|
self.BaseStage = baseStage
|
|
-- 关卡名称
|
|
local evolableStage = baseStage:GetCurrentEvolvableStage()
|
|
self.TxtTitle.text = CsXTextManager.GetText("ReformReadyTitleText", baseStage:GetName()
|
|
, evolableStage:GetName())
|
|
-- 词缀
|
|
local fightEvents = baseStage:GetShowFightEvents()
|
|
self.PanelBuffContent.gameObject:SetActiveEx(#fightEvents > 0)
|
|
self.PanelBuffNone.gameObject:SetActiveEx(#fightEvents <= 0)
|
|
if #fightEvents > 0 then
|
|
for i = 2, self.PanelBuffContent.childCount do
|
|
CS.UnityEngine.Object.Destroy(self.PanelBuffContent:GetChild(i - 1).gameObject)
|
|
end
|
|
local go
|
|
for i, v in ipairs(fightEvents) do
|
|
go = CS.UnityEngine.Object.Instantiate(self.GridBuff, self.PanelBuffContent)
|
|
go.gameObject:SetActiveEx(true)
|
|
go.transform:Find("Buff"):GetComponent("RawImage"):SetRawImage(v.Icon)
|
|
end
|
|
end
|
|
-- 奖励面板
|
|
local isPassed = baseStage:GetIsPassed()
|
|
self.PanelPassed.gameObject:SetActiveEx(true)
|
|
self.PanelNotPassed.gameObject:SetActiveEx(not isPassed)
|
|
self.TxtRecommendScoreTip1.text = XUiHelper.GetText("ReformChallengeScoreTip", self.BaseStage:GetMaxChallengeScore())
|
|
self.TxtRecommendScoreTip2.text = self.TxtRecommendScoreTip1.text
|
|
self.TxtScoreTip1.text = XUiHelper.GetText("ReformRecommendScoreTip", self.BaseStage:GetAccumulativeScore()
|
|
, self.BaseStage:GetRecommendScore())
|
|
self.TxtScoreTip2.text = self.TxtScoreTip1.text
|
|
-- 显示的首通奖励
|
|
local rewardList = baseStage:GetFirstRewards()
|
|
XUiHelper.RefreshCustomizedList(self.PanelReward, self.GridCommon, #rewardList, function(index, go)
|
|
local gridCommont = XUiGridCommon.New(self.RootUi, go)
|
|
gridCommont:Refresh(rewardList[index])
|
|
end)
|
|
-- local reward = baseStage:GetFirstRewards()[1]
|
|
-- self.GridCommon.gameObject:SetActiveEx(reward ~= nil)
|
|
-- if reward then
|
|
-- local gridCommont = XUiGridCommon.New(self.RootUi, self.GridCommon)
|
|
-- gridCommont:Refresh(reward)
|
|
-- gridCommont:SetProxyClickFunc(function()
|
|
-- XUiManager.OpenUiTipRewardByRewardId(self.BaseStage:GetFirstRewardId())
|
|
-- end)
|
|
-- end
|
|
-- 显示的推荐角色
|
|
local icons = self.BaseStage:GetRecommendCharacterIcons()
|
|
local icon
|
|
for i = 1, 3 do
|
|
icon = icons[i]
|
|
self["PanelHead" .. i].gameObject:SetActiveEx(icon ~= nil)
|
|
if icon then
|
|
self["RImgHeadIcon" .. i]:SetRawImage(icon)
|
|
end
|
|
end
|
|
self.TxtRecommendTip.gameObject:SetActiveEx(evolableStage:GetChallengeScore()
|
|
< baseStage:GetRecommendScore())
|
|
end
|
|
|
|
function XUiReformReadyPanel:Open(baseStage)
|
|
local showTip, evolvableStage = baseStage:GetIsShowEvolvableDiffTip()
|
|
if showTip then
|
|
XUiManager.TipError(CsXTextManager.GetText("ReformEvolvableDiffOpenTip", baseStage:GetName()
|
|
, evolvableStage:GetName()))
|
|
end
|
|
self.EnterAnim:Play()
|
|
self.GameObject:SetActiveEx(true)
|
|
XDataCenter.ReformActivityManager.SetCurrentBaseStageId(baseStage:GetId(), baseStage:GetStageType())
|
|
end
|
|
|
|
function XUiReformReadyPanel:Close()
|
|
self.EnterAnim:Stop()
|
|
self.GameObject:SetActiveEx(false)
|
|
-- self.RootUi.UiPanelAsset.GameObject:SetActiveEx(true)
|
|
end
|
|
|
|
--######################## 私有方法 ########################
|
|
function XUiReformReadyPanel:RegisterUiEvents()
|
|
self.BtnClose.CallBack = function() self:Close() end
|
|
self.BtnEnter.CallBack = function() self:OnBtnEnterClicked() end
|
|
self.BtnBuffTip.CallBack = function() self:OnBtnBuffTipClicked() end
|
|
end
|
|
|
|
function XUiReformReadyPanel:OnBtnEnterClicked()
|
|
self:Close()
|
|
-- XLuaUiManager.Open("UiNewRoomSingle", self.BaseStage:GetId())
|
|
local evolvableStage = self.BaseStage:GetCurrentEvolvableStage()
|
|
local diff = evolvableStage:GetDifficulty()
|
|
-- 非基础关从上一关难度继承队伍
|
|
if diff > 1 then
|
|
evolvableStage:InheritTeamFromEvolableStage(self.BaseStage:GetEvolvableStageByDiffIndex(diff - 1))
|
|
end
|
|
XLuaUiManager.Open("UiBattleRoleRoom",
|
|
self.BaseStage:GetId(),
|
|
evolvableStage:GetTeam(),
|
|
require("XUi/XUiReform/XUiReformBattleRoleRoom"))
|
|
end
|
|
|
|
function XUiReformReadyPanel:OnBtnBuffTipClicked()
|
|
local showFightEvents = self.BaseStage:GetShowFightEvents()
|
|
if #showFightEvents > 0 then
|
|
XLuaUiManager.Open("UiReformBuffTips", showFightEvents, CsXTextManager.GetText("ReformMainBuffTipsTitle"))
|
|
end
|
|
end
|
|
|
|
--######################## XUiReform ########################
|
|
local XUiReformStageGridContainer = require("XUi/XUiReform/XUiReformStageGridContainer")
|
|
local XUiReform = XLuaUiManager.Register(XLuaUi, "UiReform")
|
|
|
|
function XUiReform:OnAwake()
|
|
self.ReformActivityManager = XDataCenter.ReformActivityManager
|
|
self.CurrentStageType = XReformConfigs.StageType.Normal
|
|
self.CurrentBaseStage = nil
|
|
self.CurrentEvolvableBaseStage = nil
|
|
self.ActivityTimer = nil
|
|
self:RegisterUiEvents()
|
|
self.UiReformReadyPanel = XUiReformReadyPanel.New(self.PanelStageDetail, self)
|
|
self.MosterHideParts = {}
|
|
self.MosterEffects = {}
|
|
XUiNewRoomSingleProxy.RegisterProxy(XDataCenter.FubenManager.StageType.Reform,
|
|
require("XUi/XUiReform/XUiReformNewRoomSingle"))
|
|
-- 关卡列表
|
|
self.UiReformStageGridDic = {}
|
|
self.GridStage.gameObject:SetActiveEx(false)
|
|
self.DynamicTable = XDynamicTableNormal.New(self.PanelStageList)
|
|
self.DynamicTable:SetProxy(XUiReformStageGridContainer)
|
|
self.DynamicTable:SetDelegate(self)
|
|
-- 初始化任务
|
|
self.UiReformTaskGrids = {}
|
|
-- self:InitTaskDataGrid()
|
|
-- 模型动画播放
|
|
self.ModelAnimEnter = self.UiModelGo.transform:FindTransform("CamNearAnimation"):GetComponent("PlayableDirector")
|
|
self.ModelAnimEnter:Play()
|
|
-- 模型初始化
|
|
local panelRoleModel = self.UiModelGo.transform:FindTransform("PanelRoleModel")
|
|
self.UiPanelRoleModel = XUiPanelRoleModel.New(panelRoleModel, self.Name, nil, true)
|
|
-- 资源
|
|
self.UiPanelAsset = XUiPanelAsset.New(self, self.PanelAsset, XDataCenter.ItemManager.ItemId.FreeGem
|
|
, XDataCenter.ItemManager.ItemId.ActionPoint, XDataCenter.ItemManager.ItemId.Coin)
|
|
self.EffectReformUnlock.gameObject:SetActiveEx(false)
|
|
self.ImgEffectHuanren = self.UiModelGo.transform:FindTransform("ImgEffectHuanren")
|
|
-- 自动关闭
|
|
local endTime = self.ReformActivityManager.GetActivityEndTime()
|
|
self:SetAutoCloseInfo(endTime, function(isClose)
|
|
if isClose then
|
|
self.ReformActivityManager.HandleActivityEndTime()
|
|
else
|
|
self.TxtRemainTime.text = self.ReformActivityManager.GetLeaveTimeStr()
|
|
self.TxtRemainTimeHard.text = self.TxtRemainTime.text
|
|
for _, grid in pairs(self.UiReformStageGridDic) do
|
|
grid:RefreshStatus()
|
|
end
|
|
end
|
|
end, nil, 1500)
|
|
end
|
|
|
|
function XUiReform:OnStart()
|
|
self.CurrentStageType = self.ReformActivityManager.GetCurrentStageType()
|
|
self.CurrentBaseStage = self.ReformActivityManager.GetCurrentBaseStage(self.CurrentStageType)
|
|
self.CurrentEvolvableBaseStage = self.CurrentBaseStage:GetCurrentEvolvableStage()
|
|
self.TxtMaxScoreTitle.text = CsXTextManager.GetText("ReformMaxScoreTitle")
|
|
self.PanelNormal.gameObject:SetActiveEx(self.CurrentStageType == XReformConfigs.StageType.Normal)
|
|
self.PanelHard.gameObject:SetActiveEx(self.CurrentStageType == XReformConfigs.StageType.Challenge)
|
|
end
|
|
|
|
function XUiReform:OnEnable()
|
|
XUiReform.Super.OnEnable(self)
|
|
self:RefreshUiScene(self.CurrentStageType, function()
|
|
self.TxtRemainTime.text = self.ReformActivityManager.GetLeaveTimeStr()
|
|
-- 基础关卡列表
|
|
self:RefreshDynamicTable()
|
|
self:RefreshBaseStageInfo(self.CurrentBaseStage)
|
|
self:RefreshTaskDataGrid()
|
|
-- XEventManager.AddEventListener(XEventId.EVENT_FINISH_TASK, self.RefreshTaskDataGrid, self)
|
|
self.BtnHard:SetDisable(not self.ReformActivityManager.CheckIsUnlockChallenge())
|
|
end)
|
|
end
|
|
|
|
function XUiReform:OnDisable()
|
|
XUiReform.Super.OnDisable(self)
|
|
-- XEventManager.RemoveEventListener(XEventId.EVENT_FINISH_TASK, self.RefreshTaskDataGrid, self)
|
|
end
|
|
|
|
--######################## 私有方法 ########################
|
|
function XUiReform:OnCheckBtnReformRedPoint(count)
|
|
self.BtnReform:ShowReddot(count >= 0)
|
|
self.BtnReformHard:ShowReddot(count >= 0)
|
|
end
|
|
|
|
function XUiReform:RefreshTaskDataGridGo()
|
|
local taskDatas = self.ReformActivityManager.GetTaskDatas(self.CurrentStageType)
|
|
self.UiReformTaskGrids = {}
|
|
XUiHelper.RefreshCustomizedList(self.PanelCourseContainer, self.GridCourse, #taskDatas + 1, function(index, go)
|
|
if index > 1 then
|
|
local grid = XUiReformTaskGrid.New(go, self)
|
|
self.UiReformTaskGrids[index - 1] = grid
|
|
end
|
|
end)
|
|
end
|
|
|
|
function XUiReform:RefreshTaskDataGrid()
|
|
self:RefreshTaskDataGridGo()
|
|
local taskDatas = self.ReformActivityManager.GetTaskDatas(self.CurrentStageType)
|
|
local maxScore = self.ReformActivityManager.GetTaskMaxScore()
|
|
local scrollIndex = nil
|
|
local tmpTaskData = nil
|
|
local lastFinishIndex = 0
|
|
local noramlTasks, normalMaxScore
|
|
if self.CurrentStageType == XReformConfigs.StageType.Challenge then
|
|
noramlTasks = self.ReformActivityManager.GetTaskDatas(XReformConfigs.StageType.Normal)
|
|
normalMaxScore = self.ReformActivityManager.GetTaskFinishScore(noramlTasks[#noramlTasks].Id)
|
|
end
|
|
for index, grid in ipairs(self.UiReformTaskGrids) do
|
|
tmpTaskData = taskDatas[index]
|
|
-- 一进来去到开始能完成的任务
|
|
if tmpTaskData.State == XDataCenter.TaskManager.TaskState.Achieved and scrollIndex == nil then
|
|
scrollIndex = index
|
|
elseif tmpTaskData.State == XDataCenter.TaskManager.TaskState.Finish then
|
|
lastFinishIndex = index
|
|
end
|
|
grid:SetData(tmpTaskData, taskDatas[math.min(index + 1, #taskDatas)], maxScore, normalMaxScore)
|
|
end
|
|
if scrollIndex == nil then
|
|
scrollIndex = math.min(lastFinishIndex + 1, #taskDatas)
|
|
end
|
|
local firstTaskData = taskDatas[1]
|
|
self.TxtTaskScore.text = maxScore
|
|
local nextScore = self.ReformActivityManager.GetTaskFinishScore(firstTaskData.Id)
|
|
local progress = maxScore / nextScore
|
|
if self.CurrentStageType == XReformConfigs.StageType.Challenge then
|
|
progress = (maxScore - normalMaxScore) / (nextScore - normalMaxScore)
|
|
end
|
|
self.ImgFirstPassedLine.fillAmount = progress
|
|
XScheduleManager.ScheduleOnce(function()
|
|
self:ScrollTaskGrid(scrollIndex)
|
|
end, 0.01)
|
|
end
|
|
|
|
function XUiReform:RegisterUiEvents()
|
|
self.BtnBack.CallBack = function() self:Close() end
|
|
self.BtnMainUi.CallBack = function() XLuaUiManager.RunMain() end
|
|
self.BtnReform.CallBack = function() self:OnBtnReformClicked() end
|
|
self.BtnReformHard.CallBack = function() self:OnBtnReformClicked() end
|
|
self.BtnEnterStage.CallBack = function() self:OnBtnEnterStageClicked() end
|
|
self.BtnEnterStageHard.CallBack = function() self:OnBtnEnterStageClicked() end
|
|
-- self.BtnPreview.CallBack = function() self:OnBtnPreviewClicked() end
|
|
self:BindHelpBtn(self.BtnHelp, self.ReformActivityManager.GetHelpName())
|
|
self:BindHelpBtn(self.BtnScoreHelp, self.ReformActivityManager.GetScoreHelpName())
|
|
if self.BtnScoreHelp2 then -- 防打包
|
|
self:BindHelpBtn(self.BtnScoreHelp2, self.ReformActivityManager.GetScoreHelpName())
|
|
end
|
|
XUiHelper.RegisterClickEvent(self, self.BtnNormal, self.OnBtnNormalClicked)
|
|
XUiHelper.RegisterClickEvent(self, self.BtnHard, self.OnBtnHardClicked)
|
|
end
|
|
|
|
function XUiReform:OnBtnNormalClicked()
|
|
self.CurrentStageType = XReformConfigs.StageType.Normal
|
|
self:RefreshUiScene(self.CurrentStageType, function()
|
|
self:RefreshDynamicTable()
|
|
self:RefreshBaseStageInfo(self.ReformActivityManager.GetCurrentBaseStage(self.CurrentStageType))
|
|
self.PanelNormal.gameObject:SetActiveEx(true)
|
|
self.PanelHard.gameObject:SetActiveEx(false)
|
|
self.AnimSwitch:Play()
|
|
self:RefreshTaskDataGrid()
|
|
end)
|
|
end
|
|
|
|
function XUiReform:OnBtnHardClicked()
|
|
if not self.ReformActivityManager.CheckIsUnlockChallenge() then
|
|
XUiManager.TipErrorWithKey("ReformLockChallengeTip", self.ReformActivityManager.GetUnlockChallengeScores())
|
|
return
|
|
end
|
|
self.CurrentStageType = XReformConfigs.StageType.Challenge
|
|
self:RefreshUiScene(self.CurrentStageType, function()
|
|
self:RefreshDynamicTable()
|
|
self:RefreshBaseStageInfo(self.ReformActivityManager.GetCurrentBaseStage(self.CurrentStageType))
|
|
self.PanelNormal.gameObject:SetActiveEx(false)
|
|
self.PanelHard.gameObject:SetActiveEx(true)
|
|
self.AnimSwitch:Play()
|
|
self:RefreshTaskDataGrid()
|
|
end)
|
|
end
|
|
|
|
function XUiReform:RefreshUiScene(stageType, cb)
|
|
local sceneUrl, modelUrl = self.ReformActivityManager.GetSceneUrlAndModelUrl(self.CurrentStageType)
|
|
self:LoadUiScene(sceneUrl, modelUrl, function()
|
|
self.ModelAnimEnter = self.UiModelGo.transform:FindTransform("CamNearAnimation"):GetComponent("PlayableDirector")
|
|
local panelRoleModel = self.UiModelGo.transform:FindTransform("PanelRoleModel")
|
|
self.UiPanelRoleModel = XUiPanelRoleModel.New(panelRoleModel, self.Name, nil, true)
|
|
self.ImgEffectHuanren = self.UiModelGo.transform:FindTransform("ImgEffectHuanren")
|
|
if cb then cb() end
|
|
end)
|
|
end
|
|
|
|
function XUiReform:RefreshBaseStageInfo(baseStage)
|
|
self.CurrentBaseStage = baseStage
|
|
self.CurrentEvolvableBaseStage = self.CurrentBaseStage:GetCurrentEvolvableStage()
|
|
-- 累计积分
|
|
self.TxtAccumulativeScore.text = self.CurrentBaseStage:GetAccumulativeScore()
|
|
self.TxtAccumulativeScoreHard.text = self.TxtAccumulativeScore.text
|
|
-- 本次挑战积分
|
|
self.TxtChallengeScore.text = self.CurrentEvolvableBaseStage:GetChallengeScore()
|
|
self.TxtChallengeScoreHard.text = self.TxtChallengeScore.text
|
|
-- 推荐积分
|
|
self.TxtRecommendScore.text = self.CurrentBaseStage:GetRecommendScore()
|
|
self.TxtRecommendScoreHard.text = self.TxtRecommendScore.text
|
|
-- -- 当前改造等级名称
|
|
-- self.TxtGrade.text = self.CurrentEvolvableBaseStage:GetName()
|
|
-- 刷新模型
|
|
self:RefreshModel(baseStage:GetShowNpcId())
|
|
self.BtnReform:SetDisable(not baseStage:CheckIsCanReform())
|
|
self.BtnReformHard:SetDisable(not baseStage:CheckIsCanReform())
|
|
-- 播放开锁特效
|
|
if baseStage:GetIsPlayReformUnlockEffect() then
|
|
XScheduleManager.ScheduleOnce(function()
|
|
if self == nil then return end
|
|
if XTool.UObjIsNil(self.EffectReformUnlock) then
|
|
return
|
|
end
|
|
self.EffectReformUnlock.gameObject:SetActiveEx(false)
|
|
self.EffectReformUnlock.gameObject:SetActiveEx(true)
|
|
end, 1000)
|
|
end
|
|
-- 检查改造关卡小红点
|
|
XRedPointManager.CheckOnce(self.OnCheckBtnReformRedPoint, self, { XRedPointConditions.Types.CONDITION_REFORM_EVOLVABLE_STAGE_UNLOCK }, {
|
|
BaseStageId = self.CurrentBaseStage:GetId(),
|
|
EvolvableDiffIndex = nil
|
|
})
|
|
end
|
|
|
|
function XUiReform:RefreshModel(npcId)
|
|
self.ImgEffectHuanren.gameObject:SetActiveEx(false)
|
|
self.ImgEffectHuanren.gameObject:SetActiveEx(true)
|
|
for _, prats in pairs(self.MosterHideParts) do
|
|
if not XTool.UObjIsNil(prats) then
|
|
prats.gameObject:SetActiveEx(true)
|
|
end
|
|
end
|
|
for _, effect in pairs(self.MosterEffects) do
|
|
if not XTool.UObjIsNil(effect) then
|
|
effect.gameObject:SetActiveEx(false)
|
|
end
|
|
end
|
|
self.MosterHideParts = {}
|
|
self.MosterEffects = {}
|
|
local transDatas = XArchiveConfigs.GetMonsterTransDatas(npcId, 1)
|
|
local effectDatas = XArchiveConfigs.GetMonsterEffectDatas(npcId, 1)
|
|
local modelId = XArchiveConfigs.GetMonsterModel(npcId)
|
|
self.UiPanelRoleModel:SetDefaultAnimation(transDatas and transDatas.StandAnime)
|
|
self.UiPanelRoleModel:UpdateArchiveMonsterModel(modelId, XModelManager.MODEL_UINAME.UiReform)
|
|
self.UiPanelRoleModel:ShowRoleModel()
|
|
local modelInfo = self.UiPanelRoleModel:GetModelInfoByName(modelId)
|
|
local modelGo = modelInfo.Model
|
|
if transDatas then
|
|
for _, node in pairs(transDatas.HideNodeName or {}) do
|
|
local parts = modelGo.gameObject:FindTransform(node)
|
|
if not XTool.UObjIsNil(parts) then
|
|
parts.gameObject:SetActiveEx(false)
|
|
table.insert(self.MosterHideParts, parts)
|
|
else
|
|
XLog.Error("HideNodeName Is Wrong :" .. node)
|
|
end
|
|
end
|
|
end
|
|
if effectDatas then
|
|
for node, effectPath in pairs(effectDatas) do
|
|
local parts = modelGo.gameObject:FindTransform(node)
|
|
if not XTool.UObjIsNil(parts) then
|
|
local effect = parts.gameObject:LoadPrefab(effectPath, false)
|
|
if effect then
|
|
effect.gameObject:SetActiveEx(true)
|
|
table.insert(self.MosterEffects, effect)
|
|
end
|
|
else
|
|
XLog.Error("EffectNodeName Is Wrong :" .. node)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function XUiReform:RefreshDynamicTable(baseStages)
|
|
local index = 1
|
|
if baseStages == nil then
|
|
baseStages = self.ReformActivityManager.GetBaseStages(self.CurrentStageType)
|
|
end
|
|
for i, baseStage in ipairs(baseStages) do
|
|
if baseStage:GetId() == self.ReformActivityManager.GetCurrentBaseStageId(self.CurrentStageType) then
|
|
index = i
|
|
break
|
|
end
|
|
end
|
|
self.UiReformStageGridDic = {}
|
|
self.DynamicTable:SetDataSource(baseStages)
|
|
self.DynamicTable:ReloadDataSync(index)
|
|
self.ReformActivityManager.SetBaseStageRedDotHistory(baseStages[index]:GetId())
|
|
end
|
|
|
|
function XUiReform:OnDynamicTableEvent(event, index, grid)
|
|
if index <= 0 then return end
|
|
local baseStage = self.DynamicTable.DataSource[index]
|
|
if baseStage == nil then return end
|
|
self.UiReformStageGridDic[baseStage:GetId()] = grid
|
|
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
|
|
grid:SetData(baseStage, index)
|
|
grid:SetClickCallBack(self, self.OnStageGridClicked)
|
|
grid:RefreshStatus()
|
|
end
|
|
end
|
|
|
|
function XUiReform:OnStageGridClicked(selectedIndex)
|
|
local baseStage = self.DynamicTable.DataSource[selectedIndex]
|
|
if not baseStage:GetIsUnlock() then
|
|
XUiManager.TipError(CsXTextManager.GetText("ReformStageTimeLockTip"))
|
|
return
|
|
end
|
|
self.ReformActivityManager.SetCurrentBaseStageId(baseStage:GetId(), baseStage:GetStageType())
|
|
self:RefreshBaseStageInfo(self.DynamicTable.DataSource[selectedIndex])
|
|
for id, stageGrid in pairs(self.UiReformStageGridDic) do
|
|
stageGrid:SetSelectStatus(baseStage:GetId() == id)
|
|
end
|
|
self.UiReformStageGridDic[baseStage:GetId()]:SetSelectStatus(true)
|
|
end
|
|
|
|
function XUiReform:OnBtnReformClicked()
|
|
if not self.CurrentBaseStage:CheckIsCanReform() then
|
|
XUiManager.TipError(CsXTextManager.GetText("ReformStagePassLockTip"))
|
|
return
|
|
end
|
|
XLuaUiManager.Open("UiReformList", self.CurrentBaseStage)
|
|
end
|
|
|
|
function XUiReform:OnBtnEnterStageClicked()
|
|
self.UiReformReadyPanel:Open(self.CurrentBaseStage)
|
|
self.UiReformReadyPanel:SetData(self.CurrentBaseStage)
|
|
-- self.UiPanelAsset.GameObject:SetActiveEx(false)
|
|
end
|
|
|
|
-- function XUiReform:OnBtnPreviewClicked()
|
|
-- if not self.CurrentBaseStage:CheckIsCanReform() then
|
|
-- XUiManager.TipError(CsXTextManager.GetText("ReformPreviewLimitTip"))
|
|
-- return
|
|
-- end
|
|
-- XLuaUiManager.Open("UiReformPreview", self.CurrentEvolvableBaseStage)
|
|
-- end
|
|
|
|
function XUiReform:ScrollTaskGrid(index)
|
|
local grid = self.UiReformTaskGrids[index]
|
|
if grid == nil then return end
|
|
local targetPos = self.PanelCourseContainer.localPosition
|
|
local viewPortWidthHalf = self.PanelCourseContainer.parent.rect.width / 2
|
|
local maxValue = (self.PanelCourseContainer.rect.width - viewPortWidthHalf) * -1
|
|
targetPos.x = math.max(maxValue, -grid.Transform.localPosition.x + grid.Transform.rect.width / 2 - viewPortWidthHalf + 50)
|
|
XUiHelper.DoMove(self.PanelCourseContainer, targetPos, 0.3, XUiHelper.EaseType.Sin)
|
|
end
|
|
|
|
return XUiReform |