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: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 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