1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-28 23:11:54 +08:00
Files
Dog-Lynx-And-HCN/scripts/Statemachine/UIState.gd
T
fallingshrimp 2486eb6d8a feat(物品系统): 新增沙滩球物品及相关功能
refactor(武器卡片): 调整武器类型和颜色映射
style(UI): 更新武器名称标签样式
fix(实体基础): 修正物品掉落逻辑
perf(音频): 优化音频处理模式
docs(物品存储): 更新物品枚举和映射
build(资源): 添加沙滩球SVG资源文件
chore(资源): 更新篮球和棒球SVG资源
2025-09-06 11:05:56 +08:00

64 lines
2.0 KiB
GDScript

extends CanvasLayer
class_name UIState
@onready var items = $"%items"
@onready var energyLabel: Label = $"%energy"
@onready var energyMaxLabel: Label = $"%energyMax"
@onready var fields: VBoxContainer = $"%fields"
@onready var fieldsAnimator: AnimationPlayer = $"%fieldsAnimator"
static var player: EntityBase = null
static var bossbar: EntityStateBar
static var currentPanel: FullscreenPanelBase = null
static var panels: Control
static var energyPercent: ColorBar
static var itemCollect: VBoxContainer
func _ready():
bossbar = $"%bossbar"
panels = $"%panels"
energyPercent = $"%percent"
itemCollect = $"%itemCollect"
func _process(_delta):
bossbar.visible = !!bossbar.entity
func _physics_process(_delta):
if is_instance_valid(player):
energyLabel.text = "%.2f" % clamp(player.energy, 0, player.fields.get(FieldStore.Entity.MAX_ENERGY))
energyMaxLabel.text = "%.1f" % player.fields.get(FieldStore.Entity.MAX_ENERGY)
for i in items.get_children():
var item = i as ItemShow
item.count = player.inventory.get(item.type)
if currentPanel:
WorldManager.rootNode.process_mode = Node.PROCESS_MODE_DISABLED
else:
WorldManager.rootNode.process_mode = Node.PROCESS_MODE_INHERIT
if Input.is_action_just_pressed("showFields"):
for i in fields.get_children():
fields.remove_child(i)
for i in player.fields:
if player.fields[i] == EntityBase.TITLE_FLAG:
fields.add_child(QuickUI.graySmallText(i))
else:
fields.add_child(FieldShow.create(i, player.fields[i], false, player, true))
fieldsAnimator.play("show")
if Input.is_action_just_released("showFields"):
fieldsAnimator.play("hide")
if Input.is_action_just_pressed("pause"):
if currentPanel:
if currentPanel.name == "Pause":
closeCurrentPanel()
else:
setPanel("Pause")
static func setPanel(targetName: String = ""):
currentPanel = null
for panel in panels.get_children():
if panel is FullscreenPanelBase:
if panel.name == targetName:
currentPanel = panel
panel.showPanel()
else:
panel.hidePanel()
static func closeCurrentPanel():
setPanel()