PGRData/Resources/Scripts/XMovieActions/XMovieActionSelection.lua
2022-12-26 14:06:01 +05:30

124 lines
No EOL
3.6 KiB
Lua

local tableInsert = table.insert
local MAX_SELECTION_NUM = 3
local ROLE_NAME = "[ " .. CS.XTextManager.GetText("StoryReviewTip") .. " ]"
local LastSelectedId
local XMovieActionSelection = XClass(XMovieActionBase, "XMovieActionSelection")
function XMovieActionSelection:Ctor(actionData)
local params = actionData.Params
local paramToNumber = XDataCenter.MovieManager.ParamToNumber
local replacePlayerName = XDataCenter.MovieManager.ReplacePlayerName
self.DelaySelectKey = paramToNumber(params[1])
local selectList = {}
local selectParamsNum = MAX_SELECTION_NUM * 2 + 1
for i = 2, selectParamsNum, 2 do
if params[i] and params[i] ~= "" then
local data = {}
data.DialogContent = replacePlayerName(params[i])
data.ActionId = paramToNumber(params[i + 1])
tableInsert(selectList, data)
end
end
self.OriginalSelectList = selectList
end
function XMovieActionSelection:IsBlock()
return true
end
function XMovieActionSelection:CanContinue()
return false
end
function XMovieActionSelection:GetSelectedActionId()
return self.SelectedActionId or 0
end
function XMovieActionSelection:GetBeginAnim()
return self.BeginAnim or "SelectEnable"
end
function XMovieActionSelection:OnUiRootInit()
self.TabGroupList = {
self.UiRoot.BtnSelect1,
self.UiRoot.BtnSelect2,
self.UiRoot.BtnSelect3,
}
end
function XMovieActionSelection:OnUiRootDestroy()
LastSelectedId = nil
self.RepeatClick = nil
self.TabGroupList = {}
end
function XMovieActionSelection:OnInit()
self.UiRoot.TabBtnSelectGroup:Init(self.TabGroupList, function(tabIndex) self:OnClickTabCallBack(tabIndex) end)
self.UiRoot.PanelSelectableDialog.gameObject:SetActiveEx(true)
self.SelectedActionId = 0
--成环时隐藏掉导致成环的分支
self.SelectList = {}
for _, data in pairs(self.OriginalSelectList) do
if data.ActionId ~= LastSelectedId then
tableInsert(self.SelectList, data)
end
end
if not next(self.SelectList) then
XLog.Error("XMovieActionSelection:OnRunning error:SelectList is empty, actionId is: " .. self.ActionId)
return
end
local dataNum = #self.SelectList
for i = 1, dataNum do
local btn = self.TabGroupList[i]
local data = self.SelectList[i]
btn:SetName(data.DialogContent)
btn.gameObject:SetActiveEx(true)
end
for i = dataNum + 1, MAX_SELECTION_NUM do
self.TabGroupList[i].gameObject:SetActiveEx(false)
end
end
function XMovieActionSelection:OnRunning()
self.RepeatClick = nil--进入动画播放完毕后按钮恢复可点击状态
end
function XMovieActionSelection:OnDestroy()
self.RepeatClick = nil
self.UiRoot.PanelSelectableDialog.gameObject:SetActiveEx(false)
end
function XMovieActionSelection:OnClickTabCallBack(tabIndex)
if self.RepeatClick then return end
self.RepeatClick = true
local selectedData = self.SelectList[tabIndex]
local delaySelectKey = self.DelaySelectKey
local actionId = selectedData.ActionId
if delaySelectKey == 0 then
self.SelectedActionId = actionId
else
XDataCenter.MovieManager.DelaySelectAction(delaySelectKey, actionId)
end
LastSelectedId = self.SelectedActionId
XDataCenter.MovieManager.PushInReviewDialogList(ROLE_NAME, selectedData.DialogContent)
XEventManager.DispatchEvent(XEventId.EVENT_MOVIE_BREAK_BLOCK)
end
function XMovieActionSelection:OnUndo()
XDataCenter.MovieManager.RemoveFromReviewDialogList()
LastSelectedId = nil
end
return XMovieActionSelection