1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-27 22:41:56 +08:00

feat(武器系统): 重构武器攻击逻辑并添加音效支持

- 将武器攻击逻辑移至Weapon类中,添加tryAttack方法统一处理冷却和能量消耗
- 为武器添加音效支持,包括攻击音效的播放和管理
- 移除子弹生成时的能量消耗检查,改由武器统一处理
- 调整部分武器的属性和配置,如伤害值和冷却时间
- 修复紫水晶子弹的分裂和折射逻辑错误
This commit is contained in:
2025-09-06 08:50:37 +08:00
parent c593a809dc
commit 9ea534441b
10 changed files with 51 additions and 25 deletions
+15
View File
@@ -27,6 +27,7 @@ signal selected(applied: bool)
@onready var descriptionLabel: RichTextLabel = $"%description"
@onready var costsBox: GridContainer = $"%costs"
@onready var updateButton: Button = $"%updateBtn"
@onready var sounds: Node2D = $"%sounds"
var cooldownTimer = CooldownTimer.new()
@@ -36,6 +37,8 @@ func _ready():
apply(UIState.player)
)
cooldownTimer.cooldown = cooldown
for i in sounds.get_children():
i.process_mode = ProcessMode.PROCESS_MODE_ALWAYS
rebuildInfo()
debugRebuild = false # 只能在编辑器里打开
func _physics_process(_delta):
@@ -99,6 +102,18 @@ func buildDescription():
return "[center]%s[/center]" % result
func readStore(key: String, default: Variant = null):
return store.get(key, default)
func playSound(sound: String):
var body = sounds.get_node_or_null(sound)
if body is AudioStreamPlayer2D:
var cloned = body.duplicate() as AudioStreamPlayer2D
add_child(cloned)
cloned.play()
await cloned.finished
cloned.queue_free()
func tryAttack(entity: EntityBase):
if cooldownTimer.start():
if entity.useEnergy(needEnergy):
attack(entity)
# 抽象
func update(_to: int, _origin: Dictionary, _entity: EntityBase):