157 lines
4.1 KiB
Lua
157 lines
4.1 KiB
Lua
local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
|
|
|
|
local State = {
|
|
None = "None",
|
|
Locked = "Locked",
|
|
CanUnlock = "CanUnlock",
|
|
Unlocked = "Unlocked",
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FacTechTreeLayerCell = HL.Class('FacTechTreeLayerCell', UIWidgetBase)
|
|
|
|
|
|
FacTechTreeLayerCell.m_layerId = HL.Field(HL.String) << ""
|
|
|
|
|
|
FacTechTreeLayerCell.m_state = HL.Field(HL.String) << State.None
|
|
|
|
|
|
|
|
|
|
FacTechTreeLayerCell._OnFirstTimeInit = HL.Override() << function(self)
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FacTechTreeLayerCell.InitFacTechTreeLayerCell = HL.Method(HL.String, HL.Number, HL.Number, HL.Number, HL.Function)
|
|
<< function(self, layerId, sizeX, sizeY, notchAdapterX, onClickFunc)
|
|
self:_FirstTimeInit()
|
|
|
|
self.gameObject.name = "Layer-" .. layerId
|
|
|
|
self.m_layerId = layerId
|
|
self.view.rectTransform.sizeDelta = Vector2(sizeX + notchAdapterX * 2, sizeY)
|
|
self.view.craft.anchoredPosition = Vector2(notchAdapterX, 0)
|
|
self.view.unlock.anchoredPosition = Vector2(notchAdapterX, 0)
|
|
|
|
self.view.craftBtn.onClick:RemoveAllListeners()
|
|
self.view.craftBtn.onClick:AddListener(function()
|
|
onClickFunc()
|
|
end)
|
|
|
|
self.view.craftBtn.onHoverChange:AddListener(function(isHover)
|
|
self:_OnHoverChangeCraftBtn(isHover)
|
|
end)
|
|
|
|
self.view.infoBtn.onClick:AddListener(function()
|
|
onClickFunc()
|
|
end)
|
|
|
|
local layerData = Tables.facSTTLayerTable[self.m_layerId]
|
|
local order = layerData.order
|
|
local spriteSrcName = string.format("deco_factechtreenew_shadow0%s", tostring(order))
|
|
self.view.decoNumberN:LoadSprite(UIConst.UI_SPRITE_FAC_TECH_ICON, spriteSrcName)
|
|
self.view.decoNumberL:LoadSprite(UIConst.UI_SPRITE_FAC_TECH_ICON, spriteSrcName)
|
|
|
|
local layerName = layerData.name
|
|
self.view.txtN.text = layerName
|
|
self.view.txtU.text = layerName
|
|
self.view.txtL.text = layerName
|
|
|
|
self.view.stateController:SetState(layerData.isTBD and "TBD" or "Normal")
|
|
|
|
self:Refresh(true)
|
|
end
|
|
|
|
|
|
|
|
|
|
FacTechTreeLayerCell.Refresh = HL.Method(HL.Opt(HL.Boolean)) << function(self, isInit)
|
|
local layerData = Tables.facSTTLayerTable[self.m_layerId]
|
|
|
|
local isEnough = true
|
|
for _, costItem in pairs(layerData.costItems) do
|
|
if Utils.getItemCount(costItem.costItemId) < costItem.costItemCount then
|
|
isEnough = false
|
|
break
|
|
end
|
|
end
|
|
|
|
local facTechTreeSystem = GameInstance.player.facTechTreeSystem
|
|
local isLocked = facTechTreeSystem:LayerIsLocked(self.m_layerId)
|
|
local hasPreLayer = not string.isEmpty(layerData.preLayer)
|
|
local canLock = isLocked and isEnough and
|
|
(not hasPreLayer or hasPreLayer and not facTechTreeSystem:LayerIsLocked(layerData.preLayer))
|
|
|
|
local preState = self.m_state
|
|
if not isLocked then
|
|
self.m_state = State.Unlocked
|
|
elseif canLock then
|
|
self.m_state = State.CanUnlock
|
|
else
|
|
self.m_state = State.Locked
|
|
end
|
|
|
|
if isInit then
|
|
self.view.stateController:SetState(self.m_state)
|
|
else
|
|
if preState == State.CanUnlock and self.m_state == State.Unlocked then
|
|
self.view.animationWrapper:Play("factechtreelayer_unlock")
|
|
elseif preState == State.Locked and self.m_state == State.CanUnlock then
|
|
local length = self:GetUnlockClipLength()
|
|
self:_StartTimer(length, function()
|
|
self.view.animationWrapper:Play("factechtreelayer_waitlock")
|
|
end)
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
FacTechTreeLayerCell.OnLayerInputEnableChange = HL.Method(HL.Boolean) << function(self, isEnabled)
|
|
self.view.stateController:SetState(isEnabled and "ControllerEnable" or "ControllerDisable")
|
|
end
|
|
|
|
|
|
|
|
FacTechTreeLayerCell.GetUnlockClipLength = HL.Method().Return(HL.Number) << function(self)
|
|
|
|
local clipLength = self.view.animationWrapper:GetClipLength("factechtreelayer_unlock")
|
|
return clipLength / 2
|
|
end
|
|
|
|
|
|
|
|
|
|
FacTechTreeLayerCell._OnHoverChangeCraftBtn = HL.Method(HL.Boolean) << function(self, isHover)
|
|
if not isHover then
|
|
return
|
|
end
|
|
|
|
if self.m_state ~= State.CanUnlock then
|
|
return
|
|
end
|
|
|
|
AudioAdapter.PostEvent("Au_UI_Hover_FacTreeUpgrade")
|
|
end
|
|
|
|
HL.Commit(FacTechTreeLayerCell)
|
|
return FacTechTreeLayerCell
|
|
|