2026-02-19 17:25:10 +00:00
|
|
|
extends Control
|
|
|
|
|
|
|
|
|
|
const ABILITY_CONTAINER = preload("uid://cj2817cl63cf")
|
|
|
|
|
|
2026-02-20 02:47:23 +00:00
|
|
|
var ability_containers: Array[Node]
|
|
|
|
|
|
2026-02-19 17:25:10 +00:00
|
|
|
@onready var character_class_options: OptionButton = %CharacterClassOptions
|
|
|
|
|
@onready var abilities_grid: GridContainer = %AbilitiesGrid
|
|
|
|
|
|
|
|
|
|
func _ready() -> void:
|
2026-02-20 02:47:23 +00:00
|
|
|
_connect_signals()
|
|
|
|
|
for character_class in Classes.CharacterClass:
|
|
|
|
|
character_class_options.add_item(str(character_class).to_pascal_case())
|
|
|
|
|
var character_class_info: Dictionary = Classes.class_info[Classes.CharacterClass[character_class]]
|
|
|
|
|
if character_class_info.get("known_for"):
|
|
|
|
|
character_class_options.set_item_tooltip(Classes.CharacterClass[character_class], character_class_info.get("known_for"))
|
|
|
|
|
|
|
|
|
|
ability_containers = abilities_grid.get_children()
|
2026-02-19 17:25:10 +00:00
|
|
|
for ability in Abilities.Ability:
|
|
|
|
|
var ability_container: AbilityContainer = ability_containers[Abilities.Ability[ability]]
|
|
|
|
|
ability_container.ability_name = str(ability).to_pascal_case()
|
2026-02-20 02:47:23 +00:00
|
|
|
|
|
|
|
|
func on_class_selected(index_of_class_selected: int) -> void:
|
|
|
|
|
print_debug("You chose %s" % index_of_class_selected)
|
|
|
|
|
var selected_class_info: Dictionary = Classes.class_info[index_of_class_selected]
|
|
|
|
|
var selected_class_ability_scores = selected_class_info.get("default_ability_scores")
|
|
|
|
|
print_debug("Here's the stats: %s" % selected_class_ability_scores)
|
|
|
|
|
for index_of_default_ability_score in selected_class_ability_scores:
|
|
|
|
|
var ability_container = ability_containers[index_of_default_ability_score] as AbilityContainer
|
|
|
|
|
ability_container.ability_score = selected_class_ability_scores[index_of_default_ability_score]
|
|
|
|
|
|
|
|
|
|
func _connect_signals() -> void:
|
|
|
|
|
character_class_options.connect("item_selected", on_class_selected)
|