From 730f732ef10dd7248cbff66a6ae517e76695b135 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: Wed, 27 Aug 2025 10:23:57 +0800 Subject: [PATCH] Add import configuration for Chomp.wav audio effect --- components/Abstracts/EntityBase.tscn | 32 ++++---- components/Abstracts/FeedCardBase.tscn | 1 + components/Bullets/FireScan.tscn | 4 +- components/Characters/Chick.tscn | 3 +- components/Characters/Rooster.tscn | 16 ++-- components/Feeds/Banana.tscn | 6 +- components/Feeds/Cake.tscn | 19 +++++ components/Feeds/Puffs.tscn | 19 +++++ .../Scenes/FullscreenPanels/MakeFeed.tscn | 11 ++- components/Scenes/UI.tscn | 5 ++ project.godot | 5 ++ resources/feeds/cake-a.svg | 70 ++++++++++++++++++ resources/feeds/cake-a.svg.import | 37 +++++++++ resources/feeds/cheesy puffs.png | Bin 0 -> 21014 bytes resources/feeds/cheesy puffs.png.import | 34 +++++++++ resources/items/apple.svg | 17 +---- resources/items/apple.svg.import | 37 +++++++++ resources/sounds/effect/Chomp.wav | Bin 0 -> 25398 bytes resources/sounds/effect/Chomp.wav.import | 24 ++++++ scripts/Contents/Characters/Rooster.gd | 5 ++ scripts/Statemachine/DamageLabel.gd | 16 +++- scripts/Statemachine/EntityBase.gd | 43 +++++++++-- scripts/Statemachine/UIState.gd | 2 + scripts/Structs/Feed.gd | 7 +- scripts/Tools/FieldStore.gd | 35 ++++++++- scripts/Tools/GameRule.gd | 1 + scripts/Tools/ItemStore.gd | 11 ++- 27 files changed, 387 insertions(+), 73 deletions(-) create mode 100644 components/Feeds/Cake.tscn create mode 100644 components/Feeds/Puffs.tscn create mode 100644 resources/feeds/cake-a.svg create mode 100644 resources/feeds/cake-a.svg.import create mode 100644 resources/feeds/cheesy puffs.png create mode 100644 resources/feeds/cheesy puffs.png.import create mode 100644 resources/items/apple.svg.import create mode 100644 resources/sounds/effect/Chomp.wav create mode 100644 resources/sounds/effect/Chomp.wav.import diff --git a/components/Abstracts/EntityBase.tscn b/components/Abstracts/EntityBase.tscn index 17003d2..e6f47ea 100644 --- a/components/Abstracts/EntityBase.tscn +++ b/components/Abstracts/EntityBase.tscn @@ -23,6 +23,21 @@ animations = [{ [sub_resource type="CircleShape2D" id="CircleShape2D_buhm1"] radius = 40.0 +[sub_resource type="Animation" id="Animation_sxh2u"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-1, 1)] +} + [sub_resource type="Animation" id="Animation_vxanw"] resource_name = "left" tracks/0/type = "value" @@ -53,21 +68,6 @@ tracks/0/keys = { "values": [Vector2(1, 1)] } -[sub_resource type="Animation" id="Animation_sxh2u"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath(".:scale") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector2(-1, 1)] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_daot2"] _data = { "RESET": SubResource("Animation_sxh2u"), @@ -178,6 +178,8 @@ unique_name_in_owner = true [node name="sprint" type="AudioStreamPlayer2D" parent="sounds"] +[node name="heal" type="AudioStreamPlayer2D" parent="sounds"] + [node name="miss" type="AudioStreamPlayer2D" parent="sounds"] [node name="hurt" type="AudioStreamPlayer2D" parent="sounds"] diff --git a/components/Abstracts/FeedCardBase.tscn b/components/Abstracts/FeedCardBase.tscn index e448f5e..ef615e2 100644 --- a/components/Abstracts/FeedCardBase.tscn +++ b/components/Abstracts/FeedCardBase.tscn @@ -65,6 +65,7 @@ layout_mode = 2 [node name="costs" type="GridContainer" parent="container"] unique_name_in_owner = true layout_mode = 2 +size_flags_vertical = 10 theme_override_constants/h_separation = 10 theme_override_constants/v_separation = 10 columns = 2 diff --git a/components/Bullets/FireScan.tscn b/components/Bullets/FireScan.tscn index 0e7dfcf..45fd73c 100644 --- a/components/Bullets/FireScan.tscn +++ b/components/Bullets/FireScan.tscn @@ -9,8 +9,8 @@ a = Vector2(0, -10) [node name="FireScan" instance=ExtResource("1_cqre5")] script = ExtResource("2_qprdp") fields = { -0: 10, -1: 30, +0: 20, +1: 40, 2: 0 } lifeDistance = 200.0 diff --git a/components/Characters/Chick.tscn b/components/Characters/Chick.tscn index 9eb8eaa..92a52fe 100644 --- a/components/Characters/Chick.tscn +++ b/components/Characters/Chick.tscn @@ -36,8 +36,9 @@ cooldownUnit = 2000.0 displayName = "小鸡" drops = Array[int]([0, 1]) dropCounts = Array[Vector2]([Vector2(10, 20), Vector2(7, 14)]) +appleCount = Vector2i(2, 6) -[node name="hurt" parent="sounds" index="2"] +[node name="hurt" parent="sounds" index="3"] stream = ExtResource("3_ik1xf") [node name="attack1" type="AudioStreamPlayer2D" parent="sounds" index="4"] diff --git a/components/Characters/Rooster.tscn b/components/Characters/Rooster.tscn index 99a5acb..d99a8a2 100644 --- a/components/Characters/Rooster.tscn +++ b/components/Characters/Rooster.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=11 format=3 uid="uid://bm7ymrri6pykb"] +[gd_scene load_steps=12 format=3 uid="uid://bm7ymrri6pykb"] [ext_resource type="PackedScene" uid="uid://cvogxi7mktumf" path="res://components/Abstracts/EntityBase.tscn" id="1_e5pl8"] [ext_resource type="Script" path="res://scripts/Contents/Characters/Rooster.gd" id="2_oqdqd"] @@ -6,6 +6,7 @@ [ext_resource type="AudioStream" uid="uid://dclinyhu256xi" path="res://resources/sounds/effect/Low Whoosh.mp3" id="3_4syso"] [ext_resource type="Texture2D" uid="uid://ci2ik43ce82uy" path="res://resources/characters/cock/rooster-b.svg" id="3_b0fgx"] [ext_resource type="AudioStream" uid="uid://cdrevrq7n6yqa" path="res://resources/sounds/effect/Boing.mp3" id="4_66s6c"] +[ext_resource type="AudioStream" uid="uid://benyec5bqni0b" path="res://resources/sounds/effect/Chomp.wav" id="4_k0yme"] [ext_resource type="AudioStream" uid="uid://dmxh3bpk8vyy5" path="res://resources/sounds/effect/Coin.mp3" id="5_xnbhq"] [ext_resource type="AudioStream" uid="uid://des7x0l4f3ijc" path="res://resources/sounds/effect/Low Boing.mp3" id="6_nmmw2"] @@ -37,21 +38,20 @@ radius = 41.0122 [node name="Rooster" instance=ExtResource("1_e5pl8")] script = ExtResource("2_oqdqd") cooldownUnit = 200.0 -inventory = { -0: 100, -1: 100 -} [node name="sprint" parent="sounds" index="0"] stream = ExtResource("4_66s6c") -[node name="miss" parent="sounds" index="1"] +[node name="heal" parent="sounds" index="1"] +stream = ExtResource("4_k0yme") + +[node name="miss" parent="sounds" index="2"] stream = ExtResource("5_xnbhq") -[node name="hurt" parent="sounds" index="2"] +[node name="hurt" parent="sounds" index="3"] stream = ExtResource("6_nmmw2") -[node name="attack0" parent="sounds" index="3"] +[node name="attack0" parent="sounds" index="4"] stream = ExtResource("3_4syso") [node name="texture" parent="." index="1"] diff --git a/components/Feeds/Banana.tscn b/components/Feeds/Banana.tscn index 0f7f726..8bf7626 100644 --- a/components/Feeds/Banana.tscn +++ b/components/Feeds/Banana.tscn @@ -6,10 +6,10 @@ [node name="Banana" instance=ExtResource("1_vapev")] avatarTexture = ExtResource("2_2mlfi") displayName = "香蕉" -fields = Array[int]([0, 3, 1]) -fieldValues = Array[float]([10.0, 0.1, 0.1]) +fields = Array[int]([0, 3]) +fieldValues = Array[float]([10.0, 0.12]) costs = Array[int]([0, 1]) -costCounts = Array[int]([10, 5]) +costCounts = Array[int]([100, 55]) [node name="avatar" parent="container/info" index="0"] texture = ExtResource("2_2mlfi") diff --git a/components/Feeds/Cake.tscn b/components/Feeds/Cake.tscn new file mode 100644 index 0000000..9622af6 --- /dev/null +++ b/components/Feeds/Cake.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=4 format=3 uid="uid://dl34e70hpckp0"] + +[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_f2mv8"] +[ext_resource type="Texture2D" uid="uid://b7vxserbhskol" path="res://resources/feeds/banana.svg" id="2_1wmlm"] +[ext_resource type="Texture2D" uid="uid://bfioxi3ehf4kv" path="res://resources/feeds/cake-a.svg" id="2_ijk6h"] + +[node name="Cake" instance=ExtResource("1_f2mv8")] +avatarTexture = ExtResource("2_ijk6h") +displayName = "生日蛋糕" +fields = Array[int]([4, 8]) +fieldValues = Array[float]([0.06, 0.075]) +costs = Array[int]([1]) +costCounts = Array[int]([70]) + +[node name="avatar" parent="container/info" index="0"] +texture = ExtResource("2_1wmlm") + +[node name="name" parent="container/info" index="1"] +text = "[b]香蕉[/b]" diff --git a/components/Feeds/Puffs.tscn b/components/Feeds/Puffs.tscn new file mode 100644 index 0000000..81e209c --- /dev/null +++ b/components/Feeds/Puffs.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=3 uid="uid://dvl7u4jkugkhk"] + +[ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_1jl1i"] +[ext_resource type="Texture2D" uid="uid://d3op67s1hysla" path="res://resources/feeds/cheesy puffs.png" id="2_p35iw"] + +[node name="Puffs" instance=ExtResource("1_1jl1i")] +avatarTexture = ExtResource("2_p35iw") +displayName = "奶酪泡芙" +fields = Array[int]([10, 5, 13]) +fieldValues = Array[float]([0.06, 0.12, 0.3]) +costs = Array[int]([0, 1]) +costCounts = Array[int]([250, 100]) +metadata/_edit_lock_ = true + +[node name="avatar" parent="container/info" index="0"] +texture = ExtResource("2_p35iw") + +[node name="name" parent="container/info" index="1"] +text = "[b]奶酪泡芙[/b]" diff --git a/components/Scenes/FullscreenPanels/MakeFeed.tscn b/components/Scenes/FullscreenPanels/MakeFeed.tscn index de501e1..4ec1a58 100644 --- a/components/Scenes/FullscreenPanels/MakeFeed.tscn +++ b/components/Scenes/FullscreenPanels/MakeFeed.tscn @@ -1,8 +1,10 @@ -[gd_scene load_steps=4 format=3 uid="uid://1n28ji5sl6bx"] +[gd_scene load_steps=6 format=3 uid="uid://1n28ji5sl6bx"] [ext_resource type="PackedScene" uid="uid://d3qojeqa3difn" path="res://components/Abstracts/FullscreenPanelBase.tscn" id="1_1wmro"] [ext_resource type="Script" path="res://scripts/Contents/Panels/MakeFeed.gd" id="2_pr610"] [ext_resource type="PackedScene" uid="uid://btisbc7ehj4fo" path="res://components/Feeds/Banana.tscn" id="3_f2lyw"] +[ext_resource type="PackedScene" uid="uid://dl34e70hpckp0" path="res://components/Feeds/Cake.tscn" id="4_lykfv"] +[ext_resource type="PackedScene" uid="uid://dvl7u4jkugkhk" path="res://components/Feeds/Puffs.tscn" id="5_qnkr0"] [node name="MakeFeed" instance=ExtResource("1_1wmro")] script = ExtResource("2_pr610") @@ -64,10 +66,7 @@ alignment = 1 unique_name_in_owner = true [node name="Banana" parent="content/wrapper/avaliableFeeds" index="0" instance=ExtResource("3_f2lyw")] -visible = false -[node name="Banana2" parent="content/wrapper/avaliableFeeds" index="1" instance=ExtResource("3_f2lyw")] -visible = false +[node name="Cake" parent="content/wrapper/avaliableFeeds" index="1" instance=ExtResource("4_lykfv")] -[node name="Banana3" parent="content/wrapper/avaliableFeeds" index="2" instance=ExtResource("3_f2lyw")] -visible = false +[node name="Puffs" parent="content/wrapper/avaliableFeeds" index="2" instance=ExtResource("5_qnkr0")] diff --git a/components/Scenes/UI.tscn b/components/Scenes/UI.tscn index c028a9b..19a7968 100644 --- a/components/Scenes/UI.tscn +++ b/components/Scenes/UI.tscn @@ -60,6 +60,11 @@ unique_name_in_owner = true layout_mode = 2 type = 1 +[node name="apple" parent="root/items/container" instance=ExtResource("3_o2oi4")] +unique_name_in_owner = true +layout_mode = 2 +type = 2 + [node name="panels" type="Control" parent="root"] unique_name_in_owner = true layout_mode = 1 diff --git a/project.godot b/project.godot index 963ea96..f83cf21 100644 --- a/project.godot +++ b/project.godot @@ -56,6 +56,11 @@ sprint={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) ] } +heal={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null) +] +} [physics] diff --git a/resources/feeds/cake-a.svg b/resources/feeds/cake-a.svg new file mode 100644 index 0000000..927315a --- /dev/null +++ b/resources/feeds/cake-a.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/feeds/cake-a.svg.import b/resources/feeds/cake-a.svg.import new file mode 100644 index 0000000..d886e91 --- /dev/null +++ b/resources/feeds/cake-a.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bfioxi3ehf4kv" +path="res://.godot/imported/cake-a.svg-137d30f32205bef7a30432592ccdd5bd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/feeds/cake-a.svg" +dest_files=["res://.godot/imported/cake-a.svg-137d30f32205bef7a30432592ccdd5bd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/resources/feeds/cheesy puffs.png b/resources/feeds/cheesy puffs.png new file mode 100644 index 0000000000000000000000000000000000000000..50c6d70ac943b6351d146e3c92cf0cdbf8b7b473 GIT binary patch literal 21014 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 VWpbznf9?PP002ovPDHLkV1huOl6C+9 literal 0 HcmV?d00001 diff --git a/resources/feeds/cheesy puffs.png.import b/resources/feeds/cheesy puffs.png.import new file mode 100644 index 0000000..9cdea83 --- /dev/null +++ b/resources/feeds/cheesy puffs.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d3op67s1hysla" +path="res://.godot/imported/cheesy puffs.png-fa02975696d66e66cc98f13ef025fb66.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/feeds/cheesy puffs.png" +dest_files=["res://.godot/imported/cheesy puffs.png-fa02975696d66e66cc98f13ef025fb66.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/resources/items/apple.svg b/resources/items/apple.svg index 0a6efaa..67975b0 100644 --- a/resources/items/apple.svg +++ b/resources/items/apple.svg @@ -1,16 +1 @@ - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/resources/items/apple.svg.import b/resources/items/apple.svg.import new file mode 100644 index 0000000..96c713e --- /dev/null +++ b/resources/items/apple.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://iu5i8ullbhf6" +path="res://.godot/imported/apple.svg-d6f4bd0685ab049c5d0bf7bb28035304.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/items/apple.svg" +dest_files=["res://.godot/imported/apple.svg-d6f4bd0685ab049c5d0bf7bb28035304.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/resources/sounds/effect/Chomp.wav b/resources/sounds/effect/Chomp.wav new file mode 100644 index 0000000000000000000000000000000000000000..fde1183c5e73c198c5dfbe9f808cd0bb915aadf0 GIT binary patch literal 25398 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 literal 0 HcmV?d00001 diff --git a/resources/sounds/effect/Chomp.wav.import b/resources/sounds/effect/Chomp.wav.import new file mode 100644 index 0000000..69d959e --- /dev/null +++ b/resources/sounds/effect/Chomp.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://benyec5bqni0b" +path="res://.godot/imported/Chomp.wav-b0cbf4d62eaef8ab4e52f661a0680a56.sample" + +[deps] + +source_file="res://resources/sounds/effect/Chomp.wav" +dest_files=["res://.godot/imported/Chomp.wav-b0cbf4d62eaef8ab4e52f661a0680a56.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/scripts/Contents/Characters/Rooster.gd b/scripts/Contents/Characters/Rooster.gd index 1c811ef..8dbccd4 100644 --- a/scripts/Contents/Characters/Rooster.gd +++ b/scripts/Contents/Characters/Rooster.gd @@ -17,6 +17,8 @@ func ai(): tryAttack(0) if Input.is_action_just_pressed("sprint"): trySprint() + if Input.is_action_just_pressed("heal"): + tryHeal(20) func attack(type): if type == 0: var weaponPos = findWeaponAnchor("normal") @@ -26,3 +28,6 @@ func sprint(): Input.get_axis("m_left", "m_right"), Input.get_axis("m_up", "m_down") ) * sprintMultiplier, true) +func heal(count: float): + health += count + DamageLabel.create(-count, false, damageAnchor.global_position + MathTool.randv2_range(GameRule.damageLabelSpawnOffset)) diff --git a/scripts/Statemachine/DamageLabel.gd b/scripts/Statemachine/DamageLabel.gd index fe3e2c0..5d7f46b 100644 --- a/scripts/Statemachine/DamageLabel.gd +++ b/scripts/Statemachine/DamageLabel.gd @@ -3,15 +3,25 @@ class_name DamageLabel @export var damage: float = 0 @export var crit: bool = false +@export var color1: Color = Color(1, 0, 0, 1) +@export var color2: Color = Color(0, 1, 0, 1) +@export var color3: Color = Color(0.5, 0.5, 0.5, 1) @onready var label: Label = $"%label" @onready var animator: AnimationPlayer = $"%animator" func _ready(): - if damage == 0: - label.text = "MISS" + var damageValue = round(abs(damage)) + var damageSign = sign(damage) + if damageSign > 0: + label.label_settings.font_color = color1 + label.text = "%s%s" % [damageValue, "!!!" if crit else ""] + elif damageSign < 0: + label.label_settings.font_color = color2 + label.text = "+%s%s" % [damageValue, "!!!" if crit else ""] else: - label.text = str(round(damage)) + ("!!!" if crit else "") + label.label_settings.font_color = color3 + label.text = "MISS" animator.play("show") await animator.animation_finished queue_free() diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index d9e9dd8..e600afb 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -9,19 +9,33 @@ var fields = { FieldStore.Entity.CRIT_RATE: 0.05, FieldStore.Entity.CRIT_DAMAGE: 1, FieldStore.Entity.PENERATE: 0, - FieldStore.Entity.OFFSET_SHOOT: 3 + FieldStore.Entity.OFFSET_SHOOT: 3, + FieldStore.Entity.HEAL_ABILITY: 1, + FieldStore.Entity.EXTRA_APPLE_MAX: 0, + FieldStore.Entity.ENERGY_MULTIPILER: 1, + FieldStore.Entity.PENARATION_RESISTANCE: 0, + FieldStore.Entity.PRICE_REDUCTION: 0, + FieldStore.Entity.EXTRA_BULLET_COUNT: 0, + FieldStore.Entity.DROP_APPLE_RATE: 0 +} +var inventory = { + ItemStore.ItemType.BASEBALL: 100, + ItemStore.ItemType.BASKETBALL: 100, + ItemStore.ItemType.APPLE: 3, +} +var inventoryMax = { + ItemStore.ItemType.BASEBALL: INF, # 无限 + ItemStore.ItemType.BASKETBALL: INF, + ItemStore.ItemType.APPLE: 20, # 最多20个苹果 } @export var cooldownUnit: float = 100 # 100毫秒每次攻击 @export var isBoss: bool = false @export var displayName: String = "未知实体" @export var sprintMultiplier: float = 7 -@export var inventory = { - ItemStore.ItemType.BASEBALL: 0, - ItemStore.ItemType.BASKETBALL: 0 -} @export var drops: Array[ItemStore.ItemType] = [] @export var dropCounts: Array[Vector2] = [] +@export var appleCount: Vector2i = Vector2(0, 1) # 死亡后掉落的苹果数量 @onready var animatree: AnimationTree = $"%animatree" @onready var texture: AnimatedSprite2D = $"%texture" @@ -29,6 +43,7 @@ var fields = { @onready var statebar: EntityStateBar = $"%statebar" @onready var sounds: Node2D = $"%sounds" @onready var hurtAnimator: AnimationPlayer = $"%hurtAnimator" +@onready var damageAnchor: Node2D = $"%damageAnchor" var health: float = 0 @@ -53,6 +68,8 @@ func _ready(): func _process(_delta): health = clamp(health, 0, fields.get(FieldStore.Entity.MAX_HEALTH)) animatree.set("parameters/blend_position", lerpf(animatree.get("parameters/blend_position"), lastDirection, 0.1)) + for i in inventory: + inventory[i] = clamp(inventory[i], 0, inventoryMax[i]) func _physics_process(_delta: float) -> void: if sprinting: velocity *= 0.9 @@ -82,13 +99,13 @@ func takeDamage(bullet: BulletBase, crit: bool): else: playSound("hurt") health -= damage - DamageLabel.create(damage, crit, $"%damageAnchor".global_position + MathTool.randv2_range(GameRule.damageLabelSpawnOffset)) + DamageLabel.create(damage, crit, damageAnchor.global_position + MathTool.randv2_range(GameRule.damageLabelSpawnOffset)) if isBoss and bullet.launcher.isPlayer(): bullet.launcher.setBoss(self) if health <= 0: if isBoss: bullet.launcher.setBoss(null) - tryDie() + tryDie(bullet) func isCooldowned(): return Time.get_ticks_msec() - lastAttack >= cooldownUnit / fields.get(FieldStore.Entity.ATTACK_SPEED) func startCooldown(): @@ -106,13 +123,21 @@ func trySprint(): playSound("sprint") sprint() sprinting = true -func tryDie(): +func tryDie(by: BulletBase): for drop in range(min(len(drops), len(dropCounts))): var item = drops[drop] var count = ceil(randf_range(dropCounts[drop].x, dropCounts[drop].y)) for i in range(count): ItemDropped.generate(item, count, position + MathTool.randv2_range(GameRule.itemDroppedSpawnOffset)) + if MathTool.rate(GameRule.appleDropRate + by.launcher.fields.get(FieldStore.Entity.DROP_APPLE_RATE)) or isBoss: + for i in randi_range(appleCount.x, appleCount.y): + ItemDropped.generate(ItemStore.ItemType.APPLE, 1, position + MathTool.randv2_range(GameRule.itemDroppedSpawnOffset)) die() +func tryHeal(count: float): + if inventory[ItemStore.ItemType.APPLE] > 0 and health < fields.get(FieldStore.Entity.MAX_HEALTH): + inventory[ItemStore.ItemType.APPLE] -= 1 + playSound("heal") + heal(count) func findWeaponAnchor(weaponName: String): var anchor = $"%weapons".get_node(weaponName) if anchor is Node2D: @@ -145,6 +170,8 @@ func die(): queue_free() func sprint(): pass +func heal(_count: float): + pass static func generate( entity: PackedScene, diff --git a/scripts/Statemachine/UIState.gd b/scripts/Statemachine/UIState.gd index 9062057..86b1a16 100644 --- a/scripts/Statemachine/UIState.gd +++ b/scripts/Statemachine/UIState.gd @@ -3,6 +3,7 @@ class_name UIState @onready var baseball = $"%baseball" @onready var basketball = $"%basketball" +@onready var apple = $"%apple" static var player: EntityBase = null static var bossbar: EntityStateBar @@ -18,6 +19,7 @@ func _physics_process(_delta): if is_instance_valid(player): baseball.count = player.inventory[ItemStore.ItemType.BASEBALL] basketball.count = player.inventory[ItemStore.ItemType.BASKETBALL] + apple.count = player.inventory[ItemStore.ItemType.APPLE] if currentPanel: WorldManager.rootNode.process_mode = Node.PROCESS_MODE_DISABLED else: diff --git a/scripts/Structs/Feed.gd b/scripts/Structs/Feed.gd index a175834..d25a8fc 100644 --- a/scripts/Structs/Feed.gd +++ b/scripts/Structs/Feed.gd @@ -64,8 +64,7 @@ func apply(entity: EntityBase): for i in range(min(fields.size(), fieldValues.size())): var field = fields[i] var value = fieldValues[i] - entity.fields[field] += value - if field == FieldStore.Entity.MAX_HEALTH: - entity.health += value - print(entity.fields) + var applier = FieldStore.entityApplier.get(field, null) + if !applier or applier.call(entity, value): + entity.fields[field] += value return allHave diff --git a/scripts/Tools/FieldStore.gd b/scripts/Tools/FieldStore.gd index 4640aa1..8eef897 100644 --- a/scripts/Tools/FieldStore.gd +++ b/scripts/Tools/FieldStore.gd @@ -14,7 +14,14 @@ enum Entity { CRIT_RATE, CRIT_DAMAGE, PENERATE, - OFFSET_SHOOT + OFFSET_SHOOT, + HEAL_ABILITY, + EXTRA_APPLE_MAX, + ENERGY_MULTIPILER, + PENARATION_RESISTANCE, + PRICE_REDUCTION, + EXTRA_BULLET_COUNT, + DROP_APPLE_RATE } static var entityMap = { Entity.MAX_HEALTH: "最大生命值", @@ -24,7 +31,14 @@ static var entityMap = { Entity.CRIT_RATE: "暴击率", Entity.CRIT_DAMAGE: "暴击伤害", Entity.PENERATE: "穿透", - Entity.OFFSET_SHOOT: "散射角" + Entity.OFFSET_SHOOT: "散射角", + Entity.HEAL_ABILITY: "治疗量", + Entity.EXTRA_APPLE_MAX: "苹果上限", + Entity.ENERGY_MULTIPILER: "能量倍率", + Entity.PENARATION_RESISTANCE: "穿透抗性", + Entity.PRICE_REDUCTION: "饲料降价", + Entity.EXTRA_BULLET_COUNT: "额外子弹", + Entity.DROP_APPLE_RATE: "苹果掉落率" } static var entityMapType = { Entity.MAX_HEALTH: DataType.VALUE, @@ -34,7 +48,22 @@ static var entityMapType = { Entity.CRIT_RATE: DataType.PERCENT, Entity.CRIT_DAMAGE: DataType.PERCENT, Entity.PENERATE: DataType.PERCENT, - Entity.OFFSET_SHOOT: DataType.ANGLE + Entity.OFFSET_SHOOT: DataType.ANGLE, + Entity.HEAL_ABILITY: DataType.PERCENT, + Entity.EXTRA_APPLE_MAX: DataType.VALUE, + Entity.ENERGY_MULTIPILER: DataType.PERCENT, + Entity.PENARATION_RESISTANCE: DataType.PERCENT, + Entity.PRICE_REDUCTION: DataType.PERCENT, + Entity.EXTRA_BULLET_COUNT: DataType.VALUE, + Entity.DROP_APPLE_RATE: DataType.PERCENT +} +static var entityApplier = { + Entity.MAX_HEALTH: func(entity, value): + entity.health += value + , + Entity.EXTRA_APPLE_MAX: func(entity, value): + entity.inventoryMax[ItemStore.ItemType.APPLE] += value + , } enum Bullet { diff --git a/scripts/Tools/GameRule.gd b/scripts/Tools/GameRule.gd index f6867fe..d7322ff 100644 --- a/scripts/Tools/GameRule.gd +++ b/scripts/Tools/GameRule.gd @@ -5,3 +5,4 @@ static var bulletSpeedMultiplier: float = 1 # 子弹速度倍率 static var damageOffset: float = 0.2 # 伤害随机浮动比例,默认20%,即10的基础伤害会应用为8~12 static var damageLabelSpawnOffset: float = 10 # 伤害标签生成位置的随机偏移 static var itemDroppedSpawnOffset: float = 30 # 掉落物生成位置的随机偏移 +static var appleDropRate: float = 0.1 # 苹果掉落概率 \ No newline at end of file diff --git a/scripts/Tools/ItemStore.gd b/scripts/Tools/ItemStore.gd index 0448f7f..06417ca 100644 --- a/scripts/Tools/ItemStore.gd +++ b/scripts/Tools/ItemStore.gd @@ -3,15 +3,18 @@ class_name ItemStore enum ItemType { BASEBALL, - BASKETBALL + BASKETBALL, + APPLE } static var nameMap = { ItemType.BASEBALL: "棒球", - ItemType.BASKETBALL: "篮球" + ItemType.BASKETBALL: "篮球", + ItemType.APPLE: "苹果" } static var idMap = { ItemType.BASEBALL: "baseball", - ItemType.BASKETBALL: "basketball" + ItemType.BASKETBALL: "basketball", + ItemType.APPLE: "apple" } static func getTexture(type: ItemType) -> Texture2D: - return load("res://resources/items/%s.svg" % idMap[type]) \ No newline at end of file + return load("res://resources/items/%s.svg" % idMap[type])