12const DataCacheManager = preload(
"res://scripts/systems/dataCacheManager/data_cache_manager.gd")
16var data_cache_manager = DataCacheManager.new()
20func load_packs(file_path:String) -> void:
22 load_pack_data(data_cache_manager.load_json(file_path))
26func get_cache_stats() -> Dictionary:
27 return data_cache_manager.get_cache_stats()
31func load_pack_data(data) -> void:
33 if not data
is Dictionary:
35 for raw_pack
in data.get(
"packs", []):
36 if not raw_pack
is Dictionary:
38 var pack = raw_pack.duplicate(true)
39 var id = str(pack.get(
"id", pack.get(
"name",
"")))
48func get_pack(id:String) -> Dictionary:
49 return packs.get(id, {})
53func get_packs() -> Array:
56 list.append(packs[id])
61func open_pack(pack_id:String, card_manager) -> Array:
62 var pack = get_pack(pack_id)
66 for i
in range(int(pack.get(
"cards", 5))):
67 var rarity = _roll_rarity(pack.get(
"weights", {}))
68 var card = card_manager.get_random_card_by_rarity(rarity)
70 card = card_manager.get_random_card()
71 if not card.is_empty():
76func _roll_rarity(weights:Dictionary) -> String:
78 for rarity
in weights.keys():
79 total += int(weights[rarity])
82 var roll = randi_range(1, total)
84 for rarity
in weights.keys():
85 running += int(weights[rarity])
88 return str(weights.keys()[0])