From 2ec3d535c765e16c51ce635554580e1dc374f833 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: Thu, 28 Aug 2025 09:36:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E9=A5=B2=E6=96=99=E7=B3=BB=E7=BB=9F):=20?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=9F=BA=E4=BA=8E=E5=93=81=E8=B4=A8=E6=9D=83?= =?UTF-8?q?=E9=87=8D=E7=9A=84=E9=A5=B2=E6=96=99=E5=8D=A1=E7=89=8C=E7=94=9F?= =?UTF-8?q?=E6=88=90=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加 ArrayTool 工具类用于数组操作 在 FeedName 中增加 weight 方法获取品质权重 修改 MakeFeed 的卡牌生成逻辑,根据品质权重进行随机选择 --- scripts/Contents/Panels/MakeFeed.gd | 20 ++++++++++++++------ scripts/Statemachine/FeedName.gd | 2 ++ scripts/Tools/ArrayTool.gd | 8 ++++++++ 3 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 scripts/Tools/ArrayTool.gd diff --git a/scripts/Contents/Panels/MakeFeed.gd b/scripts/Contents/Panels/MakeFeed.gd index 632ae3a..9b024fa 100644 --- a/scripts/Contents/Panels/MakeFeed.gd +++ b/scripts/Contents/Panels/MakeFeed.gd @@ -54,12 +54,20 @@ func finish(): func regenerateCards(): updateValue() clearCards() - var feeds: Array[Feed] = [] - for i in avaliableFeeds.get_children(): - feeds.append(i) - feeds.shuffle() - for i in range(UIState.player.fields[FieldStore.Entity.FEED_COUNT_SHOW]): - var feed = feeds[i] as Feed + var feeds = generateCardByQuality() + for feed in feeds: feed.show() avaliableFeeds.remove_child(feed) feedCards.add_child(feed) +func generateCardByQuality(): + var feeds = [] + for i in range(len(avaliableFeeds.get_children())): + var feed = avaliableFeeds.get_children()[i] as Feed + for j in range(feed.nameLabel.weight()): + feeds.append(i) + var result = [] + for i in range(UIState.player.fields[FieldStore.Entity.FEED_COUNT_SHOW]): + feeds.shuffle() + result.append(avaliableFeeds.get_children()[feeds[0]]) + feeds = ArrayTool.removeAll(feeds, feeds[0]) + return result diff --git a/scripts/Statemachine/FeedName.gd b/scripts/Statemachine/FeedName.gd index 3a19e64..dcfad77 100644 --- a/scripts/Statemachine/FeedName.gd +++ b/scripts/Statemachine/FeedName.gd @@ -45,3 +45,5 @@ func _physics_process(_delta): nameLabel.text = "[b]%s[/b]" % displayName func color(): return qualityColorMap[quality] as Color +func weight() -> float: + return qualityRandomWeight[quality] \ No newline at end of file diff --git a/scripts/Tools/ArrayTool.gd b/scripts/Tools/ArrayTool.gd new file mode 100644 index 0000000..aa49d2a --- /dev/null +++ b/scripts/Tools/ArrayTool.gd @@ -0,0 +1,8 @@ +class_name ArrayTool + +static func removeAll(array: Array, value) -> Array: + var result = [] + for item in array: + if item != value: + result.append(item) + return result \ No newline at end of file