220 lines
5.6 KiB
Lua
220 lines
5.6 KiB
Lua
local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WikiCraftingTreeItem = HL.Class('WikiCraftingTreeItem', UIWidgetBase)
|
|
|
|
|
|
WikiCraftingTreeItem.m_args = HL.Field(HL.Table)
|
|
|
|
|
|
WikiCraftingTreeItem.m_hasWiki = HL.Field(HL.Boolean) << false
|
|
|
|
|
|
WikiCraftingTreeItem.m_isMain = HL.Field(HL.Boolean) << false
|
|
|
|
|
|
|
|
|
|
WikiCraftingTreeItem._OnFirstTimeInit = HL.Override() << function(self)
|
|
self.view.selectNode.cutBtn.onClick:AddListener(function()
|
|
if not self.m_hasWiki then
|
|
return
|
|
end
|
|
Notify(MessageConst.CHANGE_WIKI_CRAFTING_TREE, self.m_args.itemId)
|
|
end)
|
|
self.view.selectNode.btnTip.onClick:AddListener(function()
|
|
if self.m_isMain then
|
|
Notify(MessageConst.SHOW_TOAST, Language.LUA_WIKI_CRAFTING_CAN_NOT_SWITCH_MAIN)
|
|
elseif not self.m_hasWiki then
|
|
Notify(MessageConst.SHOW_TOAST, Language.LUA_WIKI_CRAFTING_CAN_NOT_SWITCH)
|
|
end
|
|
end)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WikiCraftingTreeItem.InitWikiCraftingTreeItem = HL.Method(HL.Table) << function(self, args)
|
|
self.m_args = args
|
|
self:_FirstTimeInit()
|
|
|
|
self.view.gameObject.name = args.itemId
|
|
self.view.itemBlack:InitItem({ id = args.itemId }, function()
|
|
if args.onClicked then
|
|
args.onClicked(args.itemId, self)
|
|
end
|
|
end)
|
|
self.view.itemBlack:SetEnableHoverTips(not DeviceInfo.usingController)
|
|
self:SetSelected(false)
|
|
self:SetMain(args.isShowMainIcon == true)
|
|
self.m_hasWiki = WikiUtils.getWikiEntryIdFromItemId(args.itemId) ~= nil
|
|
self.m_isMain = args.mainItemId == args.itemId
|
|
self:SetJumpBtn(self.m_isMain, self.m_hasWiki)
|
|
|
|
if args.playInAnimation == true then
|
|
self.view.animationWrapper:PlayInAnimation()
|
|
end
|
|
|
|
self:_InitController()
|
|
end
|
|
|
|
|
|
|
|
WikiCraftingTreeItem.GetItemId = HL.Method().Return(HL.String) << function(self)
|
|
return self.m_args.itemId
|
|
end
|
|
|
|
|
|
|
|
|
|
WikiCraftingTreeItem.SetMain = HL.Method(HL.Boolean) << function(self, isMain)
|
|
self.view.mainNode.gameObject:SetActive(isMain)
|
|
if isMain then
|
|
if self.m_args.playInAnimation then
|
|
self.view.mainNode:PlayInAnimation()
|
|
else
|
|
self.view.mainNode:PlayLoopAnimation()
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
WikiCraftingTreeItem.SetJumpBtn = HL.Method(HL.Boolean, HL.Boolean) << function(self, isMain, hasWiki)
|
|
local stateName
|
|
if isMain then
|
|
stateName = "Main"
|
|
elseif hasWiki then
|
|
stateName = "Jump"
|
|
else
|
|
stateName = "NoJump"
|
|
end
|
|
self.view.selectNode.stateController:SetState(stateName)
|
|
end
|
|
|
|
|
|
|
|
|
|
WikiCraftingTreeItem.SetSelected = HL.Method(HL.Boolean) << function(self, isSelected)
|
|
self.view.selectNode.gameObject:SetActive(isSelected)
|
|
self.view.itemBlack.view.nonDrawingGraphic.enabled = not isSelected
|
|
end
|
|
|
|
|
|
|
|
WikiCraftingTreeItem.GetButton = HL.Method().Return(HL.Userdata) << function(self)
|
|
return self.view.itemBlack.view.button
|
|
end
|
|
|
|
|
|
|
|
|
|
WikiCraftingTreeItem.SetLeftMountPointCount = HL.Method(HL.Number) << function(self, count)
|
|
CSUtils.UIContainerResize(self.view.leftNode, count)
|
|
LayoutRebuilder.ForceRebuildLayoutImmediate(self.view.leftNode)
|
|
end
|
|
|
|
|
|
|
|
|
|
WikiCraftingTreeItem.SetRightMountPointCount = HL.Method(HL.Number) << function(self, count)
|
|
CSUtils.UIContainerResize(self.view.rightNode, count)
|
|
LayoutRebuilder.ForceRebuildLayoutImmediate(self.view.rightNode)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
WikiCraftingTreeItem.GetLeftMountPoint = HL.Method(Transform, HL.Number).Return(Vector2) << function(self, relativeTo, index)
|
|
local node = self.view.leftNode.transform:GetChild(CSIndex(index))
|
|
if node then
|
|
local pos = relativeTo:InverseTransformPoint(node.position)
|
|
return Vector2(pos.x, pos.y)
|
|
end
|
|
return Vector2.zero
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
WikiCraftingTreeItem.GetRightMountPoint = HL.Method(Transform, HL.Number).Return(Vector2) << function(self, relativeTo, index)
|
|
local node = self.view.rightNode.transform:GetChild(CSIndex(index))
|
|
if node then
|
|
local pos = relativeTo:InverseTransformPoint(node.position)
|
|
return Vector2(pos.x, pos.y)
|
|
end
|
|
return Vector2.zero
|
|
end
|
|
|
|
|
|
|
|
WikiCraftingTreeItem.HideExpandToggle = HL.Method() << function(self)
|
|
self.view.expandToggle.gameObject:SetActive(false)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
WikiCraftingTreeItem.SetExpandToggle = HL.Method(HL.Boolean, HL.Function) << function(self, isOn, callback)
|
|
self.view.expandToggle.onValueChanged:RemoveAllListeners()
|
|
self.view.expandToggle.gameObject:SetActive(true)
|
|
self.view.expandToggle.isOn = isOn
|
|
InputManagerInst:SetBindingText(self.view.expandToggle.toggleBindingId,
|
|
isOn and Language.ui_wiki_fac_tree_item_less or Language.ui_wiki_fac_tree_item_more)
|
|
self.view.expandToggle.onValueChanged:AddListener(function(value)
|
|
InputManagerInst:SetBindingText(self.view.expandToggle.toggleBindingId,
|
|
value and Language.ui_wiki_fac_tree_item_less or Language.ui_wiki_fac_tree_item_more)
|
|
if callback then
|
|
callback(value)
|
|
end
|
|
end)
|
|
end
|
|
|
|
|
|
|
|
WikiCraftingTreeItem._InitController = HL.Method() << function(self)
|
|
if not DeviceInfo.usingController then
|
|
return
|
|
end
|
|
self.view.expandToggleKeyHint.gameObject:SetActive(false)
|
|
self.view.expandInputBindingGroup.enabled = self.view.itemBlack.view.button.isNaviTarget
|
|
self.view.expandToggleKeyHint.gameObject:SetActive(self.view.itemBlack.view.button.isNaviTarget)
|
|
self.view.itemBlack.view.button.onIsNaviTargetChanged = function(isNaviTarget)
|
|
self.view.expandToggleKeyHint.gameObject:SetActive(isNaviTarget)
|
|
self.view.expandInputBindingGroup.enabled = isNaviTarget
|
|
end
|
|
end
|
|
|
|
HL.Commit(WikiCraftingTreeItem)
|
|
return WikiCraftingTreeItem
|
|
|