28 lines
629 B
GDScript
28 lines
629 B
GDScript
extends Resource
|
|
class_name Booster
|
|
|
|
|
|
|
|
@export var name: String
|
|
@export var counts: Dictionary = { "Common": 4, "Rare": 1 }
|
|
@export var cards: Array[Card] = []
|
|
|
|
func draw() -> Array[Card]:
|
|
var res: Array[Card] = []
|
|
|
|
# Group cards by rarity
|
|
var rarity_pool: Dictionary = {}
|
|
for card in cards:
|
|
if not rarity_pool.has(card.rarity):
|
|
rarity_pool[card.rarity] = []
|
|
rarity_pool[card.rarity].append(card)
|
|
|
|
# Draw based on rarity count
|
|
for rarity in counts.keys():
|
|
var count = counts[rarity]
|
|
var pool = rarity_pool.get(rarity, [])
|
|
for i in range(min(count, pool.size())):
|
|
res.append(pool.pick_random())
|
|
|
|
return res
|