continued work on character creator

This commit is contained in:
Adam Burns 2026-02-19 12:25:10 -05:00
parent 2235aa3d6a
commit 9cd1f5c460
11 changed files with 156 additions and 37 deletions

View File

@ -0,0 +1,15 @@
[gd_scene format=3 uid="uid://cj2817cl63cf"]
[ext_resource type="Script" uid="uid://deikky7ve55hc" path="res://scripts/ui/ability_container.gd" id="1_lfbgg"]
[node name="AbilityContainer" type="HBoxContainer" unique_id=711596663]
size_flags_horizontal = 3
script = ExtResource("1_lfbgg")
[node name="AbilityLabel" type="Label" parent="." unique_id=1235023468]
layout_mode = 2
size_flags_horizontal = 3
text = "AbilityName: "
[node name="AbilityScore" type="OptionButton" parent="." unique_id=1479575024]
layout_mode = 2

View File

@ -1,5 +1,8 @@
[gd_scene format=3 uid="uid://c7ry0sldgsd6g"]
[ext_resource type="Script" uid="uid://boyjf1s2xtj28" path="res://scripts/ui/character_creator.gd" id="1_humxe"]
[ext_resource type="PackedScene" uid="uid://cj2817cl63cf" path="res://scenes/ui/ability_container.tscn" id="2_50a5s"]
[node name="CharacterCreator" type="Control" unique_id=429203591]
layout_mode = 3
anchors_preset = 15
@ -7,6 +10,7 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_humxe")
[node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=830349662]
layout_mode = 0
@ -18,53 +22,79 @@ layout_mode = 2
theme_override_font_sizes/font_size = 64
text = "Character/Player Creation"
[node name="CharacterNameField" type="HBoxContainer" parent="VBoxContainer" unique_id=1144305927]
[node name="HSeparator" type="HSeparator" parent="VBoxContainer" unique_id=1671161209]
layout_mode = 2
[node name="CharacterNameLabel" type="Label" parent="VBoxContainer/CharacterNameField" unique_id=377396273]
[node name="VitalsSection" type="VBoxContainer" parent="VBoxContainer" unique_id=1979705440]
layout_mode = 2
[node name="SectionLabelVitals" type="Label" parent="VBoxContainer/VitalsSection" unique_id=361033131]
layout_mode = 2
theme_override_font_sizes/font_size = 32
text = "Vitals"
horizontal_alignment = 1
[node name="CharacterNameField" type="HBoxContainer" parent="VBoxContainer/VitalsSection" unique_id=1144305927]
layout_mode = 2
[node name="CharacterNameLabel" type="Label" parent="VBoxContainer/VitalsSection/CharacterNameField" unique_id=377396273]
layout_mode = 2
text = "Name: "
[node name="CharacterNameEntry" type="LineEdit" parent="VBoxContainer/CharacterNameField" unique_id=768350209]
[node name="CharacterNameEntry" type="LineEdit" parent="VBoxContainer/VitalsSection/CharacterNameField" unique_id=768350209]
layout_mode = 2
size_flags_horizontal = 3
placeholder_text = "Shaq the Enormous"
[node name="CharacterClassField" type="HBoxContainer" parent="VBoxContainer" unique_id=285886400]
[node name="CharacterClassField" type="HBoxContainer" parent="VBoxContainer/VitalsSection" unique_id=285886400]
layout_mode = 2
[node name="CharacterClassLabel" type="Label" parent="VBoxContainer/CharacterClassField" unique_id=1412992125]
[node name="CharacterClassLabel" type="Label" parent="VBoxContainer/VitalsSection/CharacterClassField" unique_id=1412992125]
layout_mode = 2
text = "Class: "
[node name="CharacterClassOptions" type="OptionButton" parent="VBoxContainer/CharacterClassField" unique_id=1792788958]
[node name="CharacterClassOptions" type="OptionButton" parent="VBoxContainer/VitalsSection/CharacterClassField" unique_id=1792788958]
unique_name_in_owner = true
layout_mode = 2
size_flags_horizontal = 3
item_count = 12
popup/item_0/text = "Barbarian"
popup/item_0/id = 0
popup/item_1/text = "Bard"
popup/item_1/id = 1
popup/item_2/text = "Cleric"
popup/item_2/id = 2
popup/item_3/text = "Druid"
popup/item_3/id = 3
popup/item_4/text = "Fighter"
popup/item_4/id = 4
popup/item_5/text = "Monk"
popup/item_5/id = 5
popup/item_6/text = "Paladin"
popup/item_6/id = 6
popup/item_7/text = "Ranger"
popup/item_7/id = 7
popup/item_8/text = "Rogue"
popup/item_8/id = 8
popup/item_9/text = "Sorcerer"
popup/item_9/id = 9
popup/item_10/text = "Warlock"
popup/item_10/id = 10
popup/item_11/text = "Wizard"
popup/item_11/id = 11
[node name="HSeparator2" type="HSeparator" parent="VBoxContainer" unique_id=2049688047]
layout_mode = 2
[node name="AbilitiesSection" type="VBoxContainer" parent="VBoxContainer" unique_id=8891070]
layout_mode = 2
[node name="SectionLabelAbilities" type="Label" parent="VBoxContainer/AbilitiesSection" unique_id=1587217776]
layout_mode = 2
theme_override_font_sizes/font_size = 32
text = "Abilities"
horizontal_alignment = 1
[node name="AbilitiesGrid" type="GridContainer" parent="VBoxContainer/AbilitiesSection" unique_id=650359354]
unique_name_in_owner = true
layout_mode = 2
columns = 2
[node name="AbilityContainer" parent="VBoxContainer/AbilitiesSection/AbilitiesGrid" unique_id=711596663 instance=ExtResource("2_50a5s")]
layout_mode = 2
[node name="AbilityContainer2" parent="VBoxContainer/AbilitiesSection/AbilitiesGrid" unique_id=875091191 instance=ExtResource("2_50a5s")]
layout_mode = 2
[node name="AbilityContainer3" parent="VBoxContainer/AbilitiesSection/AbilitiesGrid" unique_id=148762443 instance=ExtResource("2_50a5s")]
layout_mode = 2
[node name="AbilityContainer4" parent="VBoxContainer/AbilitiesSection/AbilitiesGrid" unique_id=742929374 instance=ExtResource("2_50a5s")]
layout_mode = 2
[node name="AbilityContainer5" parent="VBoxContainer/AbilitiesSection/AbilitiesGrid" unique_id=1462506418 instance=ExtResource("2_50a5s")]
layout_mode = 2
[node name="AbilityContainer6" parent="VBoxContainer/AbilitiesSection/AbilitiesGrid" unique_id=113539656 instance=ExtResource("2_50a5s")]
layout_mode = 2
[node name="HSeparator3" type="HSeparator" parent="VBoxContainer" unique_id=1942684785]
layout_mode = 2
[node name="FinishButton" type="Button" parent="VBoxContainer" unique_id=586398404]
layout_mode = 2

View File

@ -1,6 +1,6 @@
[gd_scene format=3 uid="uid://nbb3fdh08hbk"]
[ext_resource type="Script" uid="uid://cc7dbnwkcctci" path="res://scripts/player_label.gd" id="1_lwipk"]
[ext_resource type="Script" uid="uid://cc7dbnwkcctci" path="res://scripts/ui/player_label.gd" id="1_lwipk"]
[node name="PlayerLabel" type="Control" unique_id=1117115485]
top_level = true

View File

@ -17,10 +17,11 @@ enum CharacterClass {
var class_info: Dictionary[CharacterClass, Dictionary] = {
CharacterClass.BARBARIAN: {
"description": "",
"description": "Rage",
"primary_abilities": [
Abilities.Abilities.STRENGTH
Abilities.Ability.STRENGTH
],
"primary_abilities_number_to_choose": 1,
"skill_proficiencies": [
Skills.Skill.ANIMAL_HANDLING,
Skills.Skill.ATHLETICS,
@ -38,5 +39,41 @@ var class_info: Dictionary[CharacterClass, Dictionary] = {
Abilities.Ability.WISDOM: 12,
Abilities.Ability.CHARISMA: 8,
}
},
CharacterClass.BARD: {
"description": "Razzle-dazzle",
"primary_abilities": [
Abilities.Ability.CHARISMA
],
"primary_abilities_number_to_choose": 1,
"skill_proficiencies": [
Skills.Skill.ACROBATICS,
Skills.Skill.ANIMAL_HANDLING,
Skills.Skill.ARCANA,
Skills.Skill.ATHLETICS,
Skills.Skill.DECEPTION,
Skills.Skill.HISTORY,
Skills.Skill.INSIGHT,
Skills.Skill.INTIMIDATION,
Skills.Skill.INVESTIGATION,
Skills.Skill.MEDICINE,
Skills.Skill.NATURE,
Skills.Skill.PERCEPTION,
Skills.Skill.PERFORMANCE,
Skills.Skill.PERSUASION,
Skills.Skill.RELIGION,
Skills.Skill.SLEIGHT_OF_HAND,
Skills.Skill.STEALTH,
Skills.Skill.SURVIVAL,
],
"skill_proficiency_number_to_choose": 3,
"default_ability_scores": {
Abilities.Ability.STRENGTH: 8,
Abilities.Ability.DEXTERITY: 14,
Abilities.Ability.CONSTITUTION: 12,
Abilities.Ability.INTELLIGENCE: 13,
Abilities.Ability.WISDOM: 10,
Abilities.Ability.CHARISMA: 15
}
}
}

View File

@ -42,12 +42,12 @@ func roll(dice_type: DiceType, number: int) -> int:
func _roll_this_die(d_t: DiceType, roll_index: int) -> int:
print_debug("Roll #%s commencing..." % roll_index)
var roll: int = dice[d_t].pick_random()
var crit_hit: bool = roll == dice[d_t].back()
var this_roll: int = dice[d_t].pick_random()
var crit_hit: bool = this_roll == dice[d_t].back()
if crit_hit:
print_debug("That's a critical hit!")
var crit_miss: bool = roll == dice[d_t].front()
if crit_miss:
print_debug("That's a critical miss!")
print_debug("Roll #%s total: %s" % [roll_index, roll])
return roll
return this_roll

View File

@ -0,0 +1,16 @@
class_name AbilityContainer
extends HBoxContainer
var ability_name : String = "SomeAbility": set = set_ability_name
@onready var ability_label: Label = $AbilityLabel
@onready var ability_score: OptionButton = $AbilityScore
func _ready() -> void:
for score in 20:
ability_score.add_item(str(score + 1))
func set_ability_name(a_n: String) -> void:
print_debug("Creating an Ability Container for %s" % a_n)
ability_name = a_n
ability_label.text = ability_name

View File

@ -0,0 +1 @@
uid://deikky7ve55hc

View File

@ -0,0 +1,19 @@
extends Control
const ABILITY_CONTAINER = preload("uid://cj2817cl63cf")
@onready var character_class_options: OptionButton = %CharacterClassOptions
@onready var abilities_grid: GridContainer = %AbilitiesGrid
func _ready() -> void:
var ability_containers = abilities_grid.get_children()
for ability in Abilities.Ability:
var ability_container: AbilityContainer = ability_containers[Abilities.Ability[ability]]
ability_container.ability_name = str(ability).to_pascal_case()
#var new_container: AbilityContainer = ABILITY_CONTAINER.instantiate()
#new_container.ability_name = str(ability).to_pascal_case()
#abilities_grid.add_child(new_container)
for character_class in Classes.CharacterClass:
print_debug(character_class)
character_class_options.add_item(str(character_class).to_pascal_case())

View File

@ -0,0 +1 @@
uid://boyjf1s2xtj28