From f099242f18838c4d770ac840b65843df48c4ea27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?= <3161880837@qq.com> Date: Sat, 6 Sep 2025 08:05:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=AD=A6=E5=99=A8):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=A4=A7=E6=BF=80=E5=85=89=E6=AD=A6=E5=99=A8=E5=B9=B6=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=AD=A6=E5=99=A8=E5=8D=A1=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实现大激光武器功能,包括攻击逻辑和属性配置 将武器卡的选择按钮重命名为更新按钮以更准确反映功能 调整武器卡描述文本居中显示并更新能量消耗数值 --- components/Abstracts/WeaponCardBase.tscn | 4 ++-- components/Weapons/BigLaser.tscn | 9 ++++++--- scripts/Contents/Weapons/BigLaser.gd | 11 +++++++++++ scripts/Structs/Weapon.gd | 4 ++-- 4 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 scripts/Contents/Weapons/BigLaser.gd diff --git a/components/Abstracts/WeaponCardBase.tscn b/components/Abstracts/WeaponCardBase.tscn index 0e178ef..66ba91b 100644 --- a/components/Abstracts/WeaponCardBase.tscn +++ b/components/Abstracts/WeaponCardBase.tscn @@ -34,7 +34,7 @@ layout_mode = 2 theme_override_constants/separation = 10 alignment = 1 -[node name="selectBtn" type="Button" parent="container"] +[node name="updateBtn" type="Button" parent="container"] unique_name_in_owner = true layout_mode = 2 theme = ExtResource("2_fwkd3") @@ -82,7 +82,7 @@ quality = 1 unique_name_in_owner = true layout_mode = 2 bbcode_enabled = true -text = "造成[color=cyan]10.0[/color]点伤害。" +text = "[center]造成[color=cyan]10.0[/color]点伤害。[/center]" fit_content = true [node name="costs" type="GridContainer" parent="container"] diff --git a/components/Weapons/BigLaser.tscn b/components/Weapons/BigLaser.tscn index 9390708..496f03e 100644 --- a/components/Weapons/BigLaser.tscn +++ b/components/Weapons/BigLaser.tscn @@ -1,9 +1,11 @@ -[gd_scene load_steps=3 format=3 uid="uid://cxabqjo7skxev"] +[gd_scene load_steps=4 format=3 uid="uid://cxabqjo7skxev"] [ext_resource type="PackedScene" uid="uid://ckq2cq6m23hq3" path="res://components/Abstracts/WeaponCardBase.tscn" id="1_wrvv5"] +[ext_resource type="Script" path="res://scripts/Contents/Weapons/BigLaser.gd" id="2_gmch0"] [ext_resource type="Texture2D" uid="uid://dy4op6n6vxef3" path="res://resources/bullets/laser-circle/circle.svg" id="2_qe8gb"] [node name="BigLaser" instance=ExtResource("1_wrvv5")] +script = ExtResource("2_gmch0") avatarTexture = ExtResource("2_qe8gb") displayName = "湮灭激光" quality = 2 @@ -16,12 +18,13 @@ store = { } descriptionTemplate = "每$time秒造成$atk点伤害。" needEnergy = 100.0 +cooldown = 6000.0 [node name="avatar" parent="container/info" index="0"] texture = ExtResource("2_qe8gb") [node name="energy" parent="container/info/energyInfo" index="1"] -text = "50.0" +text = "100.0" [node name="name" parent="container/info" index="2"] displayName = "湮灭激光" @@ -29,4 +32,4 @@ quality = 2 typeTopic = 1 [node name="description" parent="container" index="2"] -text = "每[color=cyan]0.1[/color]秒造成[color=cyan]35.0[/color]点伤害。" +text = "[center]每[color=cyan]0.1[/color]秒造成[color=cyan]35.0[/color]点伤害。[/center]" diff --git a/scripts/Contents/Weapons/BigLaser.gd b/scripts/Contents/Weapons/BigLaser.gd new file mode 100644 index 0000000..707028c --- /dev/null +++ b/scripts/Contents/Weapons/BigLaser.gd @@ -0,0 +1,11 @@ +extends Weapon +class_name BigLaserWeapon + +func update(to: int, origin: Dictionary, _entity: EntityBase): + origin["atk"] += 5 * to + origin["time"] /= 1.1 + return origin +func attack(entity: EntityBase): + var weaponPos = entity.findWeaponAnchor("normal") + BulletBase.generate(preload("res://components/Bullets/BigLaser.tscn"), entity, weaponPos, (get_global_mouse_position() - weaponPos).angle()) + return true diff --git a/scripts/Structs/Weapon.gd b/scripts/Structs/Weapon.gd index 6ff3820..49217d7 100644 --- a/scripts/Structs/Weapon.gd +++ b/scripts/Structs/Weapon.gd @@ -22,12 +22,12 @@ signal selected(applied: bool) @onready var energyLabel: Label = $"%energy" @onready var descriptionLabel: RichTextLabel = $"%description" @onready var costsBox: GridContainer = $"%costs" -@onready var selectButton: Button = $"%selectBtn" +@onready var updateButton: Button = $"%updateBtn" var cooldownTimer = CooldownTimer.new() func _ready(): - selectButton.pressed.connect( + updateButton.pressed.connect( func(): apply(UIState.player) )