mlpcardgame/Scenes/Global/CardData.gd

77 lines
2.1 KiB
GDScript3
Raw Normal View History

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]