local this = class("weaponPositionTpl")

function this:init(config)
  self.data = config
end

function this:getTplById(id)
  return self.data[id]
end

function this:getSlotFollow(tpl)
  local tplCommon = self:getTplById(0)
  local tpl_tmp = tpl or tplCommon
  return tpl_tmp.slot_follow
end

function this:getSlotPos(tpl)
  local tplCommon = self:getTplById(0)
  local tpl_tmp = tpl or tplCommon
  return tpl_tmp.slot_pos
end

function this:getSlotRotate(tpl)
  local tplCommon = self:getTplById(0)
  local tpl_tmp = tpl or tplCommon
  return tpl_tmp.slot_rotate
end

function this:getStateParameter(tpl)
  return tpl.stateParameter
end

function this:getSlot(tpl, index)
  local tplCommon = self:getTplById(0)
  local tpl_tmp = tpl or tplCommon
  return tpl_tmp.slot and tpl_tmp.slot[index] or tplCommon[index]
end

function this:getStateParameterWorlds(tpl)
  local tplCommon = self:getTplById(0)
  local tpl_tmp = tpl or tplCommon
  local res = {}
  for k, v in pairs(tplCommon.stateParameterWorlds) do
    res[k] = v
  end
  for k, v in pairs(tpl_tmp.stateParameterWorlds) do
    res[k] = v
  end
  return res
end

function this:getScale(tpl)
  local tplCommon = self:getTplById(0)
  local tpl_tmp = tpl or tplCommon
  return tpl_tmp.scale
end

function this:getStateParameterWorld(tpl)
  return tpl.stateParameterWorld
end

function this:getId(tpl)
  return tpl.id
end

return this
