local CraftingCtrl = class("CraftingCtrl", BaseCtrl)
CraftingCtrl._mapNodeConfig = {
	TopBar = {
		sNodeName = "TopBarPanel",
		sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
	},
	rtToggle = {
		sComponentName = "RectTransform"
	},
	togItem = {},
	bgRing = {},
	goMatProduction = {
		sNodeName = "---MatProduction---",
		sCtrlName = "Game.UI.Crafting.MatCraftingCtrl"
	},
	goPresentsProduction = {
		sNodeName = "---PresentsProduction---"
	},
	animRoot = {
		sNodeName = "----SafeAreaRoot----",
		sComponentName = "Animator"
	}
}
CraftingCtrl._mapEventConfig = {
	JumpToProduction = "OnEvent_JumpToProduction",
	PlayCraftingAnim = "OnEvent_PlayCraftingAnim",
	SetCraftingEmpty = "OnEvent_SetCraftingEmpty"
}
function CraftingCtrl:InitTog()
	self.tbAllProduction = PlayerData.Crafting:GetProductionPageList()
	local index = 1
	local addTogItem = function(nTog, nType)
		local togObj = instantiate(self._mapNode.togItem, self._mapNode.rtToggle)
		local togCtrl = self:BindCtrlByNode(togObj, "Game.UI.TemplateEx.TemplateToggleCtrl")
		local btn = togObj.transform:GetComponent("UIButton")
		local func_Handler = ui_handler(self, self.OnBtnClick_Tog, togObj, index)
		btn.onClick:AddListener(func_Handler)
		togCtrl.gameObject:SetActive(true)
		table.insert(self.tbTogCtrl, {
			ctrl = togCtrl,
			nTog = nTog,
			nType = nType
		})
		return togCtrl
	end
	for _, v in ipairs(self.tbAllProduction) do
		local togItemCtrl = addTogItem(AllEnum.CraftingToggle.Material, v.nType)
		local tbCfg = ConfigTable.GetData("ProductionType", v.nType)
		togItemCtrl:SetText(tbCfg.TypeName)
		togItemCtrl:SetDefault(false)
		index = index + 1
	end
	if 0 == self.nSelectTogIndex then
		self.nSelectTogIndex = 1
	end
	self.tbTogCtrl[self.nSelectTogIndex].ctrl:SetDefault(true)
	self._mapNode.goMatProduction.gameObject:SetActive(false)
	if nil ~= self.tbTogCtrl[self.nSelectTogIndex].nType then
		self:RefreshMtCrafting(self.tbTogCtrl[self.nSelectTogIndex].nType)
	else
		printError("神器合成功能已移除")
	end
end
function CraftingCtrl:RefreshMtCrafting(nType, bReset)
	self._mapNode.goMatProduction.gameObject:SetActive(true)
	local tbProductionList
	for _, v in ipairs(self.tbAllProduction) do
		if v.nType == nType then
			tbProductionList = v.tbList
		end
	end
	if nil ~= tbProductionList then
		if bReset then
			self._mapNode.goMatProduction:ResetSelectProduction()
		end
		self._mapNode.goMatProduction:RefreshProductionList(tbProductionList)
	end
end
function CraftingCtrl:SelectTog(nIndex)
	if nIndex == self.nSelectTogIndex then
		return
	end
	self.tbTogCtrl[nIndex].ctrl:SetTrigger(true)
	self.tbTogCtrl[self.nSelectTogIndex].ctrl:SetTrigger(false)
	local lastTogType = self.tbTogCtrl[self.nSelectTogIndex].nTog
	local curTogType = self.tbTogCtrl[nIndex].nTog
	local bReset = true
	self.nSelectTogIndex = nIndex
	self._mapNode.goMatProduction.gameObject:SetActive(false)
	self._mapNode.goPresentsProduction.gameObject:SetActive(false)
	if nil ~= self.tbTogCtrl[self.nSelectTogIndex].nType then
		self:RefreshMtCrafting(self.tbTogCtrl[self.nSelectTogIndex].nType, bReset)
		if bReset then
			self._mapNode.animRoot:Play("CraftingPanel_switch_mat")
		else
		end
	end
end
function CraftingCtrl:FadeIn()
	EventManager.Hit(EventId.SetTransition)
	self._mapNode.animRoot:Play("CraftingPanel_in")
end
function CraftingCtrl:Awake()
	self.tbTogCtrl = {}
	self.nSelectTogIndex = 0
	self._mapNode.togItem.gameObject:SetActive(false)
	self._mapNode.goPresentsProduction.gameObject:SetActive(false)
end
function CraftingCtrl:OnEnable()
	local wait = function()
		coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
		self:InitTog()
	end
	cs_coroutine.start(wait)
end
function CraftingCtrl:OnDisable()
	for _, v in ipairs(self.tbTogCtrl) do
		destroy(v.ctrl.gameObject)
		self:UnbindCtrlByNode(v.ctrl)
	end
	self.tbTogCtrl = {}
	EventManager.Hit(EventId.ClosePanel, PanelId.CraftingTip)
end
function CraftingCtrl:OnDestroy()
end
function CraftingCtrl:OnBtnClick_Tog(btn, nIndex)
	self:SelectTog(nIndex)
end
function CraftingCtrl:OnEvent_JumpToProduction(nProductionId)
	local nTogIndex = 0
	for k, v in ipairs(self.tbAllProduction) do
		for _, data in ipairs(v.tbList) do
			if data.Id == nProductionId then
				nTogIndex = k
				self._mapNode.goMatProduction:RefreshProductionList(v.tbList, data.Id)
				break
			end
		end
	end
	if 0 == nTogIndex then
		printError("神器合成功能已移除")
	end
	if 0 ~= nTogIndex then
		self:SelectTog(nTogIndex)
	end
end
function CraftingCtrl:OnEvent_PlayCraftingAnim(callback)
	self._mapNode.animRoot:Play("CraftingPanel_make", 0, 0)
	CS.WwiseAudioManager.Instance:PostEvent("ui_craft_effect")
	local nAnimLength = 0.5
	EventManager.Hit(EventId.TemporaryBlockInput, nAnimLength)
	if nil ~= callback then
		self:AddTimer(1, nAnimLength, callback, true, true, true)
	end
end
function CraftingCtrl:OnEvent_SetCraftingEmpty(bEmpty)
	self._mapNode.bgRing:SetActive(not bEmpty)
end
return CraftingCtrl
