local TutorialConst = require "app/module/tutorial/tutorial_const"

local TutorialAction = {}

function TutorialAction:init()
end

function TutorialAction:clear()
end

function TutorialAction:doTutorial(tutorialId)
	local tutorialType = DataManager.TutorialData:getTutorialTypeById(tutorialId)
	local func = TutorialAction._doTutorial[tutorialType]
	if func then
		func(tutorialId)
	else
		ModuleManager.TutorialManager:stopTutorial()
	end
end

function TutorialAction:doStepOver(tutorialId)
	local tutorialType = DataManager.TutorialData:getTutorialTypeById(tutorialId)
	local func = TutorialAction._doStepOver[tutorialType]
	if func then
		func(tutorialId)
	end
end

-- 任意位置点击
local function _tutorialClick(tutorialId)
	ModuleManager.TutorialManager:showTalk()

	ModuleManager.TutorialManager:registerClickScreenListener(function()
		ModuleManager.TutorialManager:checkAndNextTutorial(tutorialId)
	end)
end

-- 点击指定按钮
local function _tutorialClickBtn(tutorialId)
	local typeParameter = DataManager.TutorialData:getTypeParameter()
	ModuleManager.TutorialManager:registerClickBtnListener(function()
		ModuleManager.TutorialManager:checkAndNextTutorial(tutorialId)
	end, nil, typeParameter)
end

-- 剧情对话
local function _tutorialTalk(tutorialId)
	ModuleManager.TutorialManager:showTalk()

	local typeParameter = DataManager.TutorialData:getTypeParameter()
	ModuleManager.TutorialManager:registerClickBtnListener(function()
		ModuleManager.TutorialManager:checkAndNextTutorial(tutorialId)
	end, nil, typeParameter)
end

-- 空步骤，什么也不做，一般搭配完成条件使用
local function _tutorialEmpty(tutorialId)
	ModuleManager.TutorialManager:checkAndNextTutorial(tutorialId)
end

local function _tutorialEmptyCancelBlock(tutorialId)
	ModuleManager.TutorialManager:setBlockTouchEnabled(false)
	ModuleManager.TutorialManager:checkAndNextTutorial(tutorialId)
end

local function _tutorialToElimination(tutorialId)
	ModuleManager.TutorialManager:setBlockTouchEnabled(false)
	EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.SHOW_ELIMINATION_TUTORAIL, DataManager.TutorialData:getTargetElement())
	ModuleManager.TutorialManager:checkAndNextTutorial(tutorialId)
end

TutorialAction._doTutorial = {
	[TutorialConst.TUTORIAL_TYPE.CLICK] = _tutorialClick,
	[TutorialConst.TUTORIAL_TYPE.CLICK_BTN] = _tutorialClickBtn,
	[TutorialConst.TUTORIAL_TYPE.TALK] = _tutorialTalk,
	[TutorialConst.TUTORIAL_TYPE.DO_NOTHING] = _tutorialEmpty,
	[TutorialConst.TUTORIAL_TYPE.EMPTY_CANCEL_BLOCK] = _tutorialEmptyCancelBlock,
	[TutorialConst.TUTORIAL_TYPE.TO_ELIMINATION] = _tutorialToElimination,
}

-- 此步引导结束的时候
TutorialAction._doStepOver = {
}

return TutorialAction