local this = class("interactiveMediator")
local sConcat = string.concat
local subPath = sConcat(L_R.world.coreMgr, "interactive.subExecuter.")
local executers = {
  [L_Const.interactiveType.talk] = require(sConcat(subPath, "interact_talk")),
  [L_Const.interactiveType.query] = require(sConcat(subPath, "interact_query")),
  [L_Const.interactiveType.keepTaskTalk] = require(sConcat(subPath, "interact_taskTalk")),
  [L_Const.interactiveType.transferPoint] = require(sConcat(subPath, "interact_transferPoint")),
  [L_Const.interactiveType.battle] = require(sConcat(subPath, "interact_battle")),
  [L_Const.interactiveType.pickUpTask] = require(sConcat(subPath, "interact_pickUpTask")),
  [L_Const.interactiveType.executeTask] = require(sConcat(subPath, "interact_executeTask")),
  [L_Const.interactiveType.photoPoint] = require(sConcat(subPath, "interact_photoPoint")),
  [L_Const.interactiveType.jumpFunction] = require(sConcat(subPath, "interact_jumpFunction")),
  [L_Const.interactiveType.openUI] = require(sConcat(subPath, "interact_openUI")),
  [L_Const.interactiveType.transferScene] = require(sConcat(subPath, "interact_transferScene")),
  [L_Const.interactiveType.fixBuilding] = require(sConcat(subPath, "interact_fixBuilding")),
  [L_Const.interactiveType.wildBuffBuilding] = require(sConcat(subPath, "interact_wildBuffBuilding")),
  [L_Const.interactiveType.collect] = require(sConcat(subPath, "interact_collect")),
  [L_Const.interactiveType.homeCropBox] = require(sConcat(subPath, "interact_homeCropBox")),
  [L_Const.interactiveType.homeCropPet] = require(sConcat(subPath, "interact_homeCropPet")),
  [L_Const.interactiveType.homeRanchBox] = require(sConcat(subPath, "interact_homeRanchBox")),
  [L_Const.interactiveType.dungeonEntry] = require(sConcat(subPath, "interact_dungeonEntry")),
  [L_Const.interactiveType.suYaDungeonEntry] = require(sConcat(subPath, "interact_suYaDungeonEntry")),
  [L_Const.interactiveType.enterBossField] = require(sConcat(subPath, "interact_enterBossField")),
  [L_Const.interactiveType.dungeonChest] = require(sConcat(subPath, "interact_dungeonChest")),
  [L_Const.interactiveType.suYaDungeonChest] = require(sConcat(subPath, "interact_suYaDungeonChest")),
  [L_Const.interactiveType.worldBossChest] = require(sConcat(subPath, "interact_worldBossChest")),
  [L_Const.interactiveType.randomChest] = require(sConcat(subPath, "interact_randomChest")),
  [L_Const.interactiveType.eggTakeup] = require(sConcat(subPath, "interact_eggTakeup")),
  [L_Const.interactiveType.activateTransferPoint] = require(sConcat(subPath, "interact_activateTransferPoint")),
  [L_Const.interactiveType.transpointRecover] = require(sConcat(subPath, "interact_transpointRecover")),
  [L_Const.interactiveType.kiboDuel] = require(sConcat(subPath, "interact_kiboDuel")),
  [L_Const.interactiveType.playerCollect] = require(sConcat(subPath, "interact_playerCollect")),
  [L_Const.interactiveType.kiboDuelStory] = require(sConcat(subPath, "interact_kiboDuelStory")),
  [L_Const.interactiveType.FreeView] = require(sConcat(subPath, "interact_freeView")),
  [L_Const.interactiveType.dungeonPhaseTransfer] = require(sConcat(subPath, "interact_dungeonPhaseTransfer")),
  [L_Const.interactiveType.TransferHomeRoadsign] = require(sConcat(subPath, "interact_transferHomeRoadsign"))
}

function this:getExecuter(interactType)
  return executers[interactType]
end

return this
