c1_lua/lua/app/userdata/tutorial/tutorial_data.lua
2025-10-28 20:57:39 +08:00

265 lines
5.8 KiB
Lua

local TutorialConst = require "app/module/tutorial/tutorial_const"
local TUTORIAL_CFG = ConfigManager:getConfig("tutorial")
local TUTORIAL_STARTCFG = ConfigManager:getConfig("tutorial_start")
local TutorialData = class("TutorialData", BaseData)
function TutorialData:ctor()
self.inTutorial = false
self.data.tutorialId = 0 -- 强制引导步骤
self.isFuncTutorial = false
end
function TutorialData:clear()
self.inTutorial = false
self.data.tutorialId = 0
self.isFuncTutorial = false
end
function TutorialData:init(data)
data = data or {}
self.inTutorial = false
-- 功能开启引导列表
self.funcTutorialMap = {}
if data.func then
for id,v in pairs(data.func) do
self.funcTutorialMap[id] = v
end
end
end
function TutorialData:getIsHaveTutorial()
if self.data.tutorialId > 0 and self.tutorialInfo ~= nil then
self.isFuncTutorial = false
return true
end
return false
end
function TutorialData:getIsFuncTutorial()
return self.isFuncTutorial
end
-- 是不是引导的第一步
function TutorialData:getIsInFirstStep()
return self.data.tutorialId == 10010
end
-- 是否有下一步
function TutorialData:nextTutorial()
local id = self.tutorialInfo.next_id
local tutorialInfo = TUTORIAL_CFG[id]
if tutorialInfo == nil then
return false
end
self.data.tutorialId = id
self.tutorialInfo = tutorialInfo
return true
end
function TutorialData:stopTutorial()
self.inTutorial = false
self.data.tutorialId = 0
end
-- 当前是否处于引导中
function TutorialData:getIsInTutorial()
return self.inTutorial
end
-- 开启引导
function TutorialData:setInTutorial(value)
self.inTutorial = value
end
-- 获取当前引导的id
function TutorialData:getTutorialId()
return self.data.tutorialId
end
-- 是否显示遮罩
function TutorialData:getShowMask()
return self.tutorialInfo.show_mask
end
-- 遮罩半径
function TutorialData:getMaskRadius()
return self.tutorialInfo.circle_r
end
-- 圆形遮罩偏移
function TutorialData:getMaskCircleOffset()
return self.tutorialInfo.circle_offset
end
-- 遮罩半径尺寸
function TutorialData:getMaskSquareSize()
return self.tutorialInfo.square_size
end
-- 遮罩坐标偏移
function TutorialData:getMaskSquareOffset()
return self.tutorialInfo.square_offset
end
-- 获取延迟开始的时间
function TutorialData:getDelayStartTime()
return self.tutorialInfo.delay or 0
end
-- 是否需要屏蔽点击
function TutorialData:getTouchEnabled()
return true
end
function TutorialData:getTutorialType()
return self.tutorialInfo.type
end
function TutorialData:getTutorialStopFight()
return self.tutorialInfo.stop_fight ~= nil
end
function TutorialData:getTutorialTypeById(id)
local tutorialInfo = TUTORIAL_CFG[id]
if tutorialInfo == nil then
return nil
end
return tutorialInfo.type
end
-- 完成条件
function TutorialData:getFinishType()
return self.tutorialInfo.finish
end
function TutorialData:getFinishTypeById(id)
local tutorialInfo = TUTORIAL_CFG[id]
if tutorialInfo == nil then
return nil
end
return tutorialInfo.finish
end
-- 完成条件的参数
function TutorialData:getFinishTypeParams()
return self.tutorialInfo.finish_parameter
end
-- 引导参数
function TutorialData:getTypeParameter()
return self.tutorialInfo.type_parameter
end
function TutorialData:getTargetElement()
return self.tutorialInfo.target_element
end
function TutorialData:getIsHaveTutorialText()
if self.tutorialInfo.txt and self.tutorialInfo.txt ~= "" then
return true
end
return false
end
function TutorialData:getTutorialText()
local tutorialInfoTx = I18N:getConfig("tutorial")[self.tutorialInfo.txt]
if tutorialInfoTx == nil then
return GConst.EMPTY_STRING
end
return tutorialInfoTx.value
end
function TutorialData:getTutorialDirLeft()
return self.tutorialInfo.txt_direction == 1
end
function TutorialData:getTutorialOffset()
return self.tutorialInfo.txt_offset
end
function TutorialData:getFingerDir()
return self.tutorialInfo.arrow_direction or 2
end
function TutorialData:getFingerOffset()
return self.tutorialInfo.arrow_offset
end
function TutorialData:getTargetName()
return self.tutorialInfo.target_name
end
function TutorialData:getTargetFuncId()
return self.tutorialInfo.func_id
end
function TutorialData:getTargetHeroId()
return self.tutorialInfo.heroid
end
function TutorialData:getTutorialTalkRoleId()
return self.tutorialInfo.head
end
function TutorialData:getIsHaveFuncTutorial(tutorialId, tutorialInfo)
-- 说明已经完成了
if self.funcTutorialMap[tutorialId] then
return false
end
self.tutorialInfo = tutorialInfo
self.data.tutorialId = tutorialId
self.isFuncTutorial = true
return true
end
function TutorialData:markFuncTutorialFinish(id)
self.funcTutorialMap[id] = true
end
function TutorialData:getIsFuncTutorialFinished(id)
return self.funcTutorialMap[id] == true
end
--@TODO 2025-10-28 20:33:16
function TutorialData:getIsFuncTutorialFinished2(id)
local cfg = ConfigManager:getConfig("tutorial_start")[id]
return self:getIsFuncTutorialFinished(cfg.start_id)
end
function TutorialData:getTutorialIdList()
if not self.tutorialIdlist then
self.tutorialIdlist = {}
self.tutorialIdMap = {}
self.funcTutorialUImap = {}
self.tutorialId2UIPath = {}
for id, info in ipairs(TUTORIAL_STARTCFG) do
table.insert(self.tutorialIdlist, id)
self.tutorialIdMap[id] = true
if info.uires_path then
if not self.funcTutorialUImap[info.uires_path] then
self.funcTutorialUImap[info.uires_path] = {}
end
table.insert(self.funcTutorialUImap[info.uires_path], id)
end
if info.start_id and info.uires_path then
self.tutorialId2UIPath[info.start_id] = info.uires_path
end
end
end
return self.tutorialIdlist
end
function TutorialData:getTutorialIdMap(id)
self:getTutorialIdList()
return self.tutorialIdMap[id]
end
function TutorialData:getTutorialId2UIPath(id)
self:getTutorialIdList()
return self.tutorialId2UIPath[id]
end
return TutorialData