From 1c481ca3572f655843c850e435332031dbaee998 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: Fri, 29 Aug 2025 08:24:18 +0800 Subject: [PATCH] =?UTF-8?q?feat(Debug):=20=E6=B7=BB=E5=8A=A0FeedHasField?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E7=BB=84=E4=BB=B6=E5=8F=8A=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E8=8B=B9=E6=9E=9C=E6=8E=89=E8=90=BD=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加FeedHasField调试组件用于筛选特定字段的Feed,支持ALL和ANY两种组合模式 将EntityBase中苹果掉落数量上限从3调整为2 --- components/Debug/FeedHasField.tscn | 9 ++++++++ scripts/Debug/FeedHasField.gd | 33 ++++++++++++++++++++++++++++++ scripts/Statemachine/EntityBase.gd | 2 +- 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 components/Debug/FeedHasField.tscn create mode 100644 scripts/Debug/FeedHasField.gd diff --git a/components/Debug/FeedHasField.tscn b/components/Debug/FeedHasField.tscn new file mode 100644 index 0000000..66e4855 --- /dev/null +++ b/components/Debug/FeedHasField.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://clm14a8gnikte"] + +[ext_resource type="Script" path="res://scripts/Debug/FeedHasField.gd" id="1_7leag"] + +[node name="FeedHasField" type="HBoxContainer"] +theme_override_constants/separation = 0 +script = ExtResource("1_7leag") +targetFields = Array[int]([14, 4]) +composeMode = 1 diff --git a/scripts/Debug/FeedHasField.gd b/scripts/Debug/FeedHasField.gd new file mode 100644 index 0000000..cea1d54 --- /dev/null +++ b/scripts/Debug/FeedHasField.gd @@ -0,0 +1,33 @@ +@tool +extends HBoxContainer + +enum ComposeMode { + ALL, + ANY, +} + +@export var targetFields: Array[FieldStore.Entity] = [] +@export var composeMode: ComposeMode = ComposeMode.ALL + +func _ready(): + for i in get_children(): + i.queue_free() + var files = DirTool.listdir("res://components/Feeds/") + for file in files: + var passed: bool + var feed = load(file).instantiate() as Feed + for targetField in targetFields: + var haveThis = false + for feedField in feed.fields: + if feedField == targetField: + haveThis = true + break + passed = haveThis + if composeMode == ComposeMode.ALL: + if not passed: + break + elif composeMode == ComposeMode.ANY: + if passed: + break + if passed: + add_child(feed) diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index b6a715a..e1ee8f6 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -51,7 +51,7 @@ var inventoryMax = { @export var sprintMultiplier: float = 4 @export var drops: Array[ItemStore.ItemType] = [] @export var dropCounts: Array[Vector2] = [] -@export var appleCount: Vector2i = Vector2(0, 3) # 死亡后掉落的苹果数量 +@export var appleCount: Vector2i = Vector2(0, 2) # 死亡后掉落的苹果数量 @export var level: int = 1 # 等级 @onready var animatree: AnimationTree = $"%animatree"