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