extends Node var loadedSets := {} var loadedCards := {} class CardInfo: var id := "unknown" var name := "Unknown card" var subname := "--" var colors := [] var keywords := [] var traits := [] var requirements := {} var cost := 0 var power := 0 var type := "None" var text := "This card does not exist, if you see it it's because something failed loading" var rarity := "UR" var bonus := 0 var opponentPower := 0 func _init(cardEntry: Dictionary): if not cardEntry.empty(): id = cardEntry.ID name = cardEntry.Name subname = cardEntry.Subname colors = cardEntry.Element keywords = cardEntry.Keywords traits = cardEntry.Traits type = cardEntry.Type text = cardEntry.Text rarity = cardEntry.Rarity if cardEntry.has("Power"): power = cardEntry.Power if cardEntry.has("Cost"): cost = cardEntry.Cost if cardEntry.has("ProblemBonus"): bonus = cardEntry.ProblemBonus if cardEntry.has("Requirement"): requirements = cardEntry.Requirement elif cardEntry.has("ProblemRequirement"): requirements = cardEntry.ProblemRequirement if cardEntry.has("ProblemOpponentPower"): opponentPower = cardEntry.ProblemOpponentPower func _ready(): # Search for sets in MLPData var dir := Directory.new() var err := dir.change_dir("res://MLPData/Sets") if err != OK: print(err) dir.list_dir_begin(true, true) while true: var next := dir.get_next() if next == "": break # Check for cached resource var file := File.new() file.open("res://MLPData/Sets/" + next, File.READ) var result = parse_json(file.get_as_text()) if typeof(result) == TYPE_DICTIONARY: loadedSets[next] = result.Name add_to_dict(result.Cards) print("Loaded set: ", result.Name, " (", next, ", ", len(result.Cards), " cards)") else: breakpoint func add_to_dict(cards: Array): for card in cards: loadedCards[card.ID] = CardInfo.new(card) func get_by_id(id: String) -> CardInfo: if not loadedCards.has(id): print("[WARN] Trying to get unknown card: ", id) #TODO return error or something return CardInfo.new({}) return loadedCards[id]