local DepotInfoSourceCtrl = class("DepotInfoSourceCtrl", BaseCtrl)
local JumpUtil = require("Game.Common.Utils.JumpUtil")
local RapidJson = require("rapidjson")
DepotInfoSourceCtrl._mapNodeConfig = {
	txtTitle = {
		sComponentName = "TMP_Text",
		sLanguageId = "Depot_Info_Source"
	},
	goJump = {},
	trBg = {sNodeName = "rtBg", sComponentName = "Transform"}
}
DepotInfoSourceCtrl._mapEventConfig = {}
function DepotInfoSourceCtrl:Refresh(nId)
	self.nId = nId
	local mapItem = ConfigTable.GetData_Item(nId)
	local tbJumpTo = mapItem.JumpTo
	if #tbJumpTo == 0 then
		self.gameObject:SetActive(false)
		return
	end
	self:RemoveAllBtn()
	self.tbJumptoData = {}
	for _, nJumptoId in ipairs(tbJumpTo) do
		local mapJumpTo = ConfigTable.GetData("JumpTo", nJumptoId)
		if mapJumpTo ~= nil then
			if mapJumpTo.Type == GameEnum.jumpType.ComCYO then
				local mapProduceCfg = ConfigTable.GetData("ProduceHelper", nId)
				if mapProduceCfg ~= nil then
					local tbComCYO = mapProduceCfg.ComCYOIds
					for _, v in ipairs(tbComCYO) do
						local nCount = PlayerData.Item:GetItemCountByID(v)
						if 0 < nCount then
							local itemCfgData = ConfigTable.GetData_Item(v, true)
							if itemCfgData ~= nil then
								local mapAfter = clone(mapJumpTo)
								mapAfter.Desc = string.format(mapAfter.Desc, itemCfgData.Title)
								mapAfter.Param = {v}
								table.insert(self.tbJumptoData, mapAfter)
							end
						end
					end
				end
			else
				table.insert(self.tbJumptoData, mapJumpTo)
			end
		end
	end
	for i, mapJumpTo in ipairs(self.tbJumptoData) do
		local goJumpto = instantiate(self._mapNode.goJump, self._mapNode.trBg)
		goJumpto:SetActive(true)
		local btnComp = goJumpto.transform:Find("btnJump"):GetComponent("Button")
		table.insert(self.tbGoJumpto, btnComp)
		local func_Handler = ui_handler(self, self.OnBtnClick_JumpTo, btnComp, i)
		btnComp.onClick:AddListener(func_Handler)
		local imgIconJumpto = goJumpto.transform:Find("btnJump/AnimRoot/imgIcon"):GetComponent("Image")
		local txtDesc = goJumpto.transform:Find("btnJump/AnimRoot/txtDesc"):GetComponent("TMP_Text")
		local goArrow = goJumpto.transform:Find("btnJump/AnimRoot/imgArrow").gameObject
		if mapJumpTo.Icon == nil then
			mapJumpTo.Icon = ""
		end
		self:SetPngSprite(imgIconJumpto, mapJumpTo.Icon)
		NovaAPI.SetImageNativeSize(imgIconJumpto)
		NovaAPI.SetTMPText(txtDesc, mapJumpTo.Desc)
		if mapJumpTo.Type == GameEnum.jumpType.Text then
			btnComp.interactable = false
			goArrow:SetActive(false)
		else
			btnComp.interactable = true
			goArrow:SetActive(true)
		end
	end
end
function DepotInfoSourceCtrl:RemoveAllBtn()
	if self.tbGoJumpto == nil then
		return
	end
	for _, btnComp in pairs(self.tbGoJumpto) do
		btnComp.onClick:RemoveAllListeners()
	end
	self.tbGoJumpto = {}
	delChildren(self._mapNode.trBg)
end
function DepotInfoSourceCtrl:OnBtnClick_JumpTo(_, nIndex)
	JumpUtil.JumpTo(self.tbJumptoData[nIndex].Id, self.tbJumptoData[nIndex].Param, self.nId)
end
function DepotInfoSourceCtrl:Awake()
	self.tbGoJumpto = {}
end
function DepotInfoSourceCtrl:OnEnable()
end
function DepotInfoSourceCtrl:OnDisable()
	self:RemoveAllBtn()
end
function DepotInfoSourceCtrl:OnDestroy()
end
return DepotInfoSourceCtrl
