53 lines
1008 B
GDScript
53 lines
1008 B
GDScript
extends Node
|
|
|
|
var _caching = preload("res://caching.gd")
|
|
|
|
var _decklist
|
|
|
|
var cards: String
|
|
|
|
|
|
func _init(_cards: String) -> void:
|
|
cards = _cards
|
|
_decklist = Dictionary()
|
|
|
|
|
|
func _convert_mtgo_to_cache_lookup(decklist: String) -> Dictionary:
|
|
var _cards = {}
|
|
var lines = decklist.split("\n")
|
|
for line in lines:
|
|
var words = line.split(" ", false, 1)
|
|
if words.size() != 2:
|
|
continue
|
|
|
|
_cards[words[1]] = words[0]
|
|
return _cards
|
|
|
|
|
|
func _do_free(cache) -> void:
|
|
if !cache.has_emitted_all():
|
|
return
|
|
cache.queue_free()
|
|
|
|
|
|
func do_decklist_grab(decklist: String) -> void:
|
|
var cache = _caching.new()
|
|
add_child(cache)
|
|
|
|
var queries = _convert_mtgo_to_cache_lookup(decklist)
|
|
for query in queries:
|
|
var entry = cache.get_card_data_from_name(query)
|
|
_decklist[entry["id"]] = queries[query]
|
|
|
|
cache.fetch_done.connect(_do_free.bind(cache))
|
|
|
|
|
|
func _show_decklist() -> void:
|
|
for card in _decklist:
|
|
print(card + " : " + _decklist[card])
|
|
|
|
|
|
func _ready() -> void:
|
|
do_decklist_grab(cards)
|
|
_show_decklist()
|