mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-05-28 06:51:54 +08:00
d4501ae45d
refactor: 重构子弹生成逻辑,支持分裂和折射效果 fix: 修复掉落物拾取范围和碰撞检测问题 style: 优化UI显示,添加武器品质和类型标签 docs: 更新字段描述,调整部分饲料名称和分类 perf: 优化数学工具函数,添加随机数处理工具 test: 调整波次生成逻辑,添加新敌人类型 build: 添加新资源文件和相关导入配置
67 lines
2.1 KiB
GDScript
67 lines
2.1 KiB
GDScript
extends CanvasLayer
|
|
class_name UIState
|
|
|
|
@onready var baseball = $"%baseball"
|
|
@onready var basketball = $"%basketball"
|
|
@onready var apple = $"%apple"
|
|
@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()
|