15const DataCacheManager = preload(
"res://scripts/systems/dataCacheManager/data_cache_manager.gd")
18var cards_by_rarity := {}
20var data_cache_manager = DataCacheManager.new()
24func load_cards(file_path:String) -> void:
26 load_card_data(data_cache_manager.load_json(file_path))
30func get_cache_stats() -> Dictionary:
31 return data_cache_manager.get_cache_stats()
35func load_card_data(data) -> void:
37 if not data
is Dictionary:
39 for raw_card
in data.get(
"cards", []):
40 if not raw_card
is Dictionary:
42 var card = raw_card.duplicate(true)
43 var id = str(card.get(
"id",
""))
46 var rarity = str(card.get(
"rarity",
"Common"))
49 if not cards_by_rarity.has(rarity):
50 cards_by_rarity[rarity] = []
51 cards_by_rarity[rarity].append(card)
55func get_card(id) -> Dictionary:
56 return cards.get(str(id), {})
60func get_all_cards() -> Array:
63 list.append(cards[id])
68func get_cards_by_rarity(rarity:String) -> Array:
69 return cards_by_rarity.get(rarity, [])
73func get_random_card_by_rarity(rarity:String) -> Dictionary:
74 var options = get_cards_by_rarity(rarity)
75 if options.is_empty():
77 return options[randi_range(0, options.size() - 1)].duplicate(true)
81func get_random_card() -> Dictionary:
82 var all_cards = get_all_cards()
83 if all_cards.is_empty():
85 return all_cards[randi_range(0, all_cards.size() - 1)].duplicate(true)
91 cards_by_rarity.clear()