Files
Endfield-Data/LuaScripts/UI/Panels/Wiki/WikiCtrl.lua
2025-12-02 20:37:18 +07:00

143 lines
3.5 KiB
Lua

local uiCtrl = require_ex('UI/Panels/Base/UICtrl')
local PANEL_ID = PanelId.Wiki
WikiCtrl = HL.Class('WikiCtrl', uiCtrl.UICtrl)
WikiCtrl.s_messages = HL.StaticField(HL.Table) << {
}
local WIKI_CATEGORY_TO_Node_NAME = {
[WikiConst.EWikiCategoryType.Weapon] = "btnWeapon",
[WikiConst.EWikiCategoryType.Equip] = "btnEquip",
[WikiConst.EWikiCategoryType.Item] = "btnItem",
[WikiConst.EWikiCategoryType.Monster] = "btnMonster",
[WikiConst.EWikiCategoryType.Building] = "btnBuilding",
[WikiConst.EWikiCategoryType.Tutorial] = "btnTutorial",
}
WikiCtrl.m_selectedNodeAnim = HL.Field(HL.Userdata)
WikiCtrl.OnCreate = HL.Override(HL.Any) << function(self, arg)
local spriteNumberTable = {}
for i = 1, 6 do
spriteNumberTable[i] = self.view["imgNumber0" .. i].sprite
end
for categoryId, categoryData in pairs(Tables.wikiCategoryTable) do
local nodeName = WIKI_CATEGORY_TO_Node_NAME[categoryId]
if nodeName ~= nil then
local node = self.view[nodeName]
if node then
node.btn.transform:SetSiblingIndex(categoryData.categoryPriority - 1)
node.imgNumber.sprite = spriteNumberTable[categoryData.categoryPriority]
node.btn.onClick:AddListener(function()
if WikiUtils.isWikiCategoryUnlocked(categoryId) then
self.m_phase:OpenCategory(categoryId)
else
Notify(MessageConst.SHOW_TOAST, Language.LUA_WIKI_CATEGORY_LOCKED)
end
end)
node.btn.onHoverChange:AddListener(function(isHover)
if self.m_selectedNodeAnim then
UIUtils.PlayAnimationAndToggleActive(self.m_selectedNodeAnim, false)
end
if isHover then
self.m_selectedNodeAnim = node.selectNodeAnim
if self.m_selectedNodeAnim then
UIUtils.PlayAnimationAndToggleActive(self.m_selectedNodeAnim, true)
end
end
end)
node.redDot:InitRedDot("WikiCategory", categoryId)
if categoryData.categoryPriority == 1 then
self.m_firstCategoryBtn = node.btn
end
end
end
end
self:_InitController()
AudioManager.PostEvent("au_ui_menu_wiki_open")
end
WikiCtrl.OnClose = HL.Override() << function(self)
AudioManager.PostEvent("au_ui_menu_wiki_close")
end
WikiCtrl.OnShow = HL.Override() << function(self)
if self.m_phase then
self.m_phase:ActiveMainSceneItem(true)
end
self:_StartCoroutine(function()
coroutine.step()
if self:IsShow() then
AudioAdapter.PostEvent("Au_UI_Menu_WikiPanel_Open")
end
end)
end
WikiCtrl._OnPhaseItemBind = HL.Override() << function(self)
self.view.topNode:InitWikiTop({
phase = self.m_phase,
panelId = PANEL_ID,
forceShowCloseBtn = true,
})
self.m_phase:ActiveMainSceneItem(true)
end
WikiCtrl.m_firstCategoryBtn = HL.Field(HL.Userdata)
WikiCtrl._InitController = HL.Method() << function(self)
self.view.controllerHintPlaceholder:InitControllerHintPlaceholder({self.view.inputGroup.groupId})
if self.m_firstCategoryBtn then
InputManagerInst.controllerNaviManager:SetTarget(self.m_firstCategoryBtn)
end
end
HL.Commit(WikiCtrl)