42 lines
2.0 KiB
GDScript
42 lines
2.0 KiB
GDScript
class_name Tavern extends Control
|
|
|
|
@onready var data: Data = $/root/Root/Data
|
|
@onready var selected: GridContainer = $NinePatchRect3/GridContainer
|
|
@onready var library: GridContainer = $NinePatchRect2/GridContainer
|
|
@onready var zone: Control = $NinePatchRect/zone
|
|
@onready var icon = $NinePatchRect/zone/Icon
|
|
@onready var nam = $NinePatchRect/zone/Name
|
|
@onready var rarity = $NinePatchRect/zone/Rarity
|
|
@onready var description = $NinePatchRect/zone/Description
|
|
@onready var damage = $NinePatchRect/zone/Damage
|
|
@onready var buttonBase: PackedScene = load("res://Scenes/UI/spellButton.tscn")
|
|
|
|
var selectedButton: SpellButton
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready():
|
|
var spells: Array[Spell] = data.unlockedSpells.duplicate()
|
|
for spell: Spell in data.spellbook.spells:
|
|
if (spell == null): continue
|
|
spells.erase(spell)
|
|
var button: SpellButton = buttonBase.instantiate()
|
|
button.spell = spell
|
|
button.connect("spellClicked", displaySpell)
|
|
selected.add_child(button)
|
|
for spell: Spell in spells:
|
|
var button: SpellButton = buttonBase.instantiate()
|
|
button.spell = spell
|
|
button.connect("spellClicked", displaySpell)
|
|
library.add_child(button)
|
|
|
|
func displaySpell(spellButton: SpellButton):
|
|
zone.show()
|
|
selectedButton = spellButton
|
|
icon.texture = selectedButton.spell.icon
|
|
nam.text = "[center]%s[/center]" % selectedButton.spell.name
|
|
rarity.text = "[center]%s[/center]" % data.Rarity.find_key(selectedButton.spell.rarity)
|
|
description.text = "[center]%s[/center]" % selectedButton.spell.description
|
|
var text: String = "Damage: %s\nBackfire Strength: %s\nFire Resistance: %s\nIce Resistance: %s\nPoison Resistance: %s\nStone Resistance: %s"
|
|
var resistances: Dictionary = selectedButton.spell.blockStrength
|
|
damage.text = text % [selectedButton.spell.damage, selectedButton.spell.backfireStrength, 100 - resistances[Data.Element.FIRE] * 100, 100 - resistances[Data.Element.ICE] * 100, 100 - resistances[Data.Element.POISON] * 100, 100 - resistances[Data.Element.STONE] * 100]
|