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

114 lines
2.8 KiB
Lua

local uiCtrl = require_ex('UI/Panels/Base/UICtrl')
local PANEL_ID = PanelId.FacTechPackage
FacTechPackageCtrl = HL.Class('FacTechPackageCtrl', uiCtrl.UICtrl)
FacTechPackageCtrl.m_packageName2Cell = HL.Field(HL.Table)
FacTechPackageCtrl.s_messages = HL.StaticField(HL.Table) << {
}
FacTechPackageCtrl.OnCreate = HL.Override(HL.Any) << function(self, arg)
self.view.btnClose.onClick:AddListener(function()
PhaseManager:PopPhase(PhaseId.FacTechTree)
end)
self.m_packageName2Cell = {}
self:_InitData(self.view.left, "tech_group_tundra")
self:_InitData(self.view.center, "tech_group_jinlong")
self:_InitData(self.view.right, "")
self:_InitController(arg)
end
FacTechPackageCtrl._InitData = HL.Method(HL.Any, HL.String) << function(self, packageRef, packageName)
local facTechTreeSystem = GameInstance.player.facTechTreeSystem
if string.isEmpty(packageName) or facTechTreeSystem:PackageIsHidden(packageName) then
packageRef.gameObject:SetActive(false)
return
end
self.m_packageName2Cell[packageName] = packageRef
local packageData = Tables.facSTTGroupTable[packageName]
local isLocked = facTechTreeSystem:PackageIsLocked(packageName)
packageRef.unlocked.gameObject:SetActive(not isLocked)
packageRef.locked.gameObject:SetActive(isLocked)
if isLocked and packageData.conditions.Count > 0 then
packageRef.redText:SetAndResolveTextStyle(packageData.conditions[0].desc)
end
packageRef.btn.onClick:AddListener(function()
if not isLocked then
self:Notify(MessageConst.FAC_TECH_TREE_OPEN_TREE_PANEL, { packageName })
end
end)
local suffix = isLocked and "Locked" or ""
packageRef["packageText"..suffix].text = packageData.groupName
packageRef["descText"..suffix].text = packageData.desc
local currentProgress, totalProgress = FactoryUtils.getPackageInvestigateProgress(packageName)
packageRef["numberText"..suffix].text = string.format("%d/%d", currentProgress, totalProgress)
packageRef["numberTextShadow"..suffix].text = string.format("%d/%d", currentProgress, totalProgress)
if not isLocked then
local height = currentProgress/totalProgress
packageRef.bgFlow.material:SetFloat("_LiquidHeight", height)
packageRef.bgFlow2.material:SetFloat("_LiquidHeight", height)
end
end
FacTechPackageCtrl._InitController = HL.Method(HL.Table) << function(self, args)
if not DeviceInfo.usingController then
return
end
self.view.controllerHintPlaceholder:InitControllerHintPlaceholder({self.view.inputGroup.groupId})
local packageId = unpack(args or {})
local cell = string.isEmpty(packageId) and self.view.left or self.m_packageName2Cell[packageId]
UIUtils.setAsNaviTarget(cell.btn)
end
HL.Commit(FacTechPackageCtrl)