From 561e12398a2f218324c033e6d1944008a412ebd0 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 18:56:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E5=A4=9A=E4=B8=AA?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=EF=BC=8C=E8=B0=83=E6=95=B4=E5=8A=A8=E7=94=BB?= =?UTF-8?q?=E3=80=81=E6=98=BE=E7=A4=BA=E5=90=8D=E7=A7=B0=E5=92=8C=E5=8F=82?= =?UTF-8?q?=E6=95=B0=EF=BC=8C=E4=BC=98=E5=8C=96=E6=B8=B8=E6=88=8F=E4=BD=93?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/Abstracts/BulletBase.tscn | 6 +-- components/Bullets/BigLaser.tscn | 5 +++ components/Characters/Hen.tscn | 2 +- components/Feeds/WaterBottle.tscn | 4 +- .../Scenes/FullscreenPanels/MakeFeed.tscn | 16 +++++++- components/Scenes/World.tscn | 1 + components/UI/ItemShow.tscn | 5 ++- scripts/Contents/Bullets/Diamond.gd | 4 +- scripts/Contents/Panels/MakeFeed.gd | 37 +++++++++++++------ scripts/Statemachine/ItemDropped.gd | 2 +- scripts/Tools/GameRule.gd | 3 +- 11 files changed, 60 insertions(+), 25 deletions(-) create mode 100644 components/Bullets/BigLaser.tscn diff --git a/components/Abstracts/BulletBase.tscn b/components/Abstracts/BulletBase.tscn index 0c460b1..39d57e1 100644 --- a/components/Abstracts/BulletBase.tscn +++ b/components/Abstracts/BulletBase.tscn @@ -4,9 +4,6 @@ [sub_resource type="SpriteFrames" id="SpriteFrames_vypy3"] -[sub_resource type="Animation" id="Animation_kmogx"] -resource_name = "spawn" - [sub_resource type="Animation" id="Animation_ynxlt"] resource_name = "loop" loop_mode = 1 @@ -24,6 +21,9 @@ tracks/0/keys = { "values": [0.0, 6.28319] } +[sub_resource type="Animation" id="Animation_kmogx"] +resource_name = "spawn" + [sub_resource type="AnimationLibrary" id="AnimationLibrary_dxweq"] _data = { "loop": SubResource("Animation_ynxlt"), diff --git a/components/Bullets/BigLaser.tscn b/components/Bullets/BigLaser.tscn new file mode 100644 index 0000000..f981a38 --- /dev/null +++ b/components/Bullets/BigLaser.tscn @@ -0,0 +1,5 @@ +[gd_scene load_steps=2 format=3 uid="uid://c8odsyb7xsu3i"] + +[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_cqnkd"] + +[node name="BulletBase" instance=ExtResource("1_cqnkd")] diff --git a/components/Characters/Hen.tscn b/components/Characters/Hen.tscn index 50d70db..d765e8d 100644 --- a/components/Characters/Hen.tscn +++ b/components/Characters/Hen.tscn @@ -35,7 +35,7 @@ radius = 40.0 script = ExtResource("2_8u5a0") cooldownUnit = 1000.0 drops = Array[int]([0, 1]) -dropCounts = Array[Vector2]([Vector2(4, 8), Vector2(2, 6)]) +dropCounts = Array[Vector2]([Vector2(6, 12), Vector2(3, 8)]) energy = 1000.0 [node name="hurt" parent="sounds" index="3"] diff --git a/components/Feeds/WaterBottle.tscn b/components/Feeds/WaterBottle.tscn index 9a4431d..4e6c8e3 100644 --- a/components/Feeds/WaterBottle.tscn +++ b/components/Feeds/WaterBottle.tscn @@ -5,11 +5,11 @@ [node name="WaterBottle" instance=ExtResource("1_vfxjq")] avatarTexture = ExtResource("2_gsfud") -displayName = "一杯水" +displayName = "水杯" fields = Array[int]([3]) fieldValues = Array[float]([0.25]) costs = Array[int]([1]) -costCounts = Array[int]([500]) +costCounts = Array[int]([300]) [node name="avatar" parent="container/info" index="0"] texture = ExtResource("2_gsfud") diff --git a/components/Scenes/FullscreenPanels/MakeFeed.tscn b/components/Scenes/FullscreenPanels/MakeFeed.tscn index 56c0eea..e7ed223 100644 --- a/components/Scenes/FullscreenPanels/MakeFeed.tscn +++ b/components/Scenes/FullscreenPanels/MakeFeed.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=4 format=3 uid="uid://1n28ji5sl6bx"] +[gd_scene load_steps=5 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="Theme" uid="uid://dhvs6urgf6jr5" path="res://themes/main.tres" id="3_q1rym"] +[ext_resource type="PackedScene" uid="uid://bbm8l3hr4ihar" path="res://components/UI/ItemShow.tscn" id="4_kei5t"] [node name="MakeFeed" instance=ExtResource("1_1wmro")] script = ExtResource("2_pr610") @@ -82,6 +83,19 @@ size_flags_vertical = 4 theme = ExtResource("3_q1rym") text = "跳过" +[node name="refreshBtn" type="Button" parent="content/wrapper/tips/tip" index="6"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +theme = ExtResource("3_q1rym") +text = "刷新" + +[node name="needBB" parent="content/wrapper/tips/tip" index="7" instance=ExtResource("4_kei5t")] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 4 + [node name="feedcards" type="HBoxContainer" parent="content/wrapper" index="1"] unique_name_in_owner = true layout_mode = 2 diff --git a/components/Scenes/World.tscn b/components/Scenes/World.tscn index 63b7e64..88e91b6 100644 --- a/components/Scenes/World.tscn +++ b/components/Scenes/World.tscn @@ -20,6 +20,7 @@ texture = ExtResource("6_p0nkj") position = Vector2(394, 274) [node name="camera" type="Camera2D" parent="rooster"] +process_mode = 3 position = Vector2(0, -100) process_callback = 0 position_smoothing_enabled = true diff --git a/components/UI/ItemShow.tscn b/components/UI/ItemShow.tscn index 031d3ac..9930484 100644 --- a/components/UI/ItemShow.tscn +++ b/components/UI/ItemShow.tscn @@ -13,12 +13,13 @@ unique_name_in_owner = true custom_minimum_size = Vector2(20, 20) layout_mode = 2 size_flags_horizontal = 0 -size_flags_vertical = 4 +size_flags_vertical = 8 texture = ExtResource("1_hyowb") expand_mode = 1 [node name="count" type="Label" parent="."] unique_name_in_owner = true layout_mode = 2 -size_flags_horizontal = 10 +size_flags_horizontal = 0 +size_flags_vertical = 8 text = "0" diff --git a/scripts/Contents/Bullets/Diamond.gd b/scripts/Contents/Bullets/Diamond.gd index 41660f4..10541ca 100644 --- a/scripts/Contents/Bullets/Diamond.gd +++ b/scripts/Contents/Bullets/Diamond.gd @@ -1,9 +1,9 @@ extends BulletBase class_name Diamond -const traceTime = 1000 +const traceTime = 2000 func ai(): - rotation = lerp_angle(rotation, position.angle_to_point(launcher.currentFocusedBoss.position), 0.2 * ((traceTime - timeLived()) / traceTime)) + rotation = lerp_angle(rotation, position.angle_to_point(launcher.currentFocusedBoss.position), 0.1 * clamp((traceTime - timeLived()) / traceTime, 0, INF)) canDamageSelf = !(timeLived() >= traceTime) forward(Vector2.from_angle(rotation)) diff --git a/scripts/Contents/Panels/MakeFeed.gd b/scripts/Contents/Panels/MakeFeed.gd index 6df175e..7b56dfb 100644 --- a/scripts/Contents/Panels/MakeFeed.gd +++ b/scripts/Contents/Panels/MakeFeed.gd @@ -2,18 +2,28 @@ extends FullscreenPanelBase var selectedCount: int = 0 +var refreshNeedBaseballCount = 100 @onready var avaliableFeeds: Node2D = $"%avaliableFeeds" @onready var feedCards: HBoxContainer = $"%feedcards" @onready var waveLabel: RichTextLabel = $"%wave" @onready var countLabel: RichTextLabel = $"%count" @onready var skipBtn: Button = $"%skipBtn" +@onready var refreshBtn: Button = $"%refreshBtn" +@onready var needBB: ItemShow = $"%needBB" func _ready(): skipBtn.pressed.connect( func(): finish() ) + refreshBtn.pressed.connect( + func(): + if UIState.player.inventory[ItemStore.ItemType.BASEBALL] >= refreshNeedBaseballCount: + UIState.player.inventory[ItemStore.ItemType.BASEBALL] -= refreshNeedBaseballCount + refreshNeedBaseballCount *= 1 + randf_range(GameRule.refreshCountIncreasePercent.x, GameRule.refreshCountIncreasePercent.y) + regenerateCards() + ) for file in DirTool.listdir("res://components/Feeds/"): var i = load(file).instantiate() as Feed i.selected.connect( @@ -28,8 +38,22 @@ func _ready(): func beforeOpen(): selectedCount = 0 - afterClose() + regenerateCards() + +func clearCards(): + for i in feedCards.get_children(): + feedCards.remove_child(i) + avaliableFeeds.add_child(i) +func updateValue(): + waveLabel.text = str(Wave.current + 1) + countLabel.text = str(UIState.player.fields[FieldStore.Entity.FEED_COUNT_CAN_MADE] - selectedCount) + needBB.count = refreshNeedBaseballCount +func finish(): + Wave.next() + UIState.closeCurrentPanel() +func regenerateCards(): updateValue() + clearCards() var feeds: Array[Feed] = [] for i in avaliableFeeds.get_children(): feeds.append(i) @@ -38,14 +62,3 @@ func beforeOpen(): var feed = feeds[i] as Feed avaliableFeeds.remove_child(feed) feedCards.add_child(feed) -func afterClose(): - for i in feedCards.get_children(): - feedCards.remove_child(i) - avaliableFeeds.add_child(i) - -func updateValue(): - waveLabel.text = str(Wave.current + 1) - countLabel.text = str(UIState.player.fields[FieldStore.Entity.FEED_COUNT_CAN_MADE] - selectedCount) -func finish(): - Wave.next() - UIState.closeCurrentPanel() diff --git a/scripts/Statemachine/ItemDropped.gd b/scripts/Statemachine/ItemDropped.gd index 7366fac..42dc298 100644 --- a/scripts/Statemachine/ItemDropped.gd +++ b/scripts/Statemachine/ItemDropped.gd @@ -8,7 +8,7 @@ var targetPlayer: EntityBase = null @onready var texture: Sprite2D = $"%texture" func _ready(): - apply_force(MathTool.randv2_range(20000), MathTool.randv2_range(10)) + apply_force(MathTool.randv2_range(30000), MathTool.randv2_range(10)) func _process(_delta): texture.texture = ItemStore.getTexture(item) func _physics_process(_delta): diff --git a/scripts/Tools/GameRule.gd b/scripts/Tools/GameRule.gd index d7322ff..a3b487f 100644 --- a/scripts/Tools/GameRule.gd +++ b/scripts/Tools/GameRule.gd @@ -5,4 +5,5 @@ 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 +static var appleDropRate: float = 0.1 # 苹果掉落概率 +static var refreshCountIncreasePercent: Vector2 = Vector2(0.4, 1.1) # 刷新所需的棒球数量的增加的百分比,随机,默认为40%~110% \ No newline at end of file