diff --git a/scenes/ui/ability_container.tscn b/scenes/ui/ability_container.tscn new file mode 100644 index 0000000..dc60156 --- /dev/null +++ b/scenes/ui/ability_container.tscn @@ -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 diff --git a/scenes/ui/character_creator.tscn b/scenes/ui/character_creator.tscn index 200017b..4a03d53 100644 --- a/scenes/ui/character_creator.tscn +++ b/scenes/ui/character_creator.tscn @@ -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 diff --git a/scenes/ui/player_label.tscn b/scenes/ui/player_label.tscn index 5fed4ed..5850376 100644 --- a/scenes/ui/player_label.tscn +++ b/scenes/ui/player_label.tscn @@ -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 diff --git a/scripts/autoloads/classes.gd b/scripts/autoloads/classes.gd index 16eabaa..ce7df29 100644 --- a/scripts/autoloads/classes.gd +++ b/scripts/autoloads/classes.gd @@ -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 + } } } diff --git a/scripts/autoloads/dice.gd b/scripts/autoloads/dice.gd index a521414..eb5584a 100644 --- a/scripts/autoloads/dice.gd +++ b/scripts/autoloads/dice.gd @@ -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 diff --git a/scripts/ui/ability_container.gd b/scripts/ui/ability_container.gd new file mode 100644 index 0000000..4dc7609 --- /dev/null +++ b/scripts/ui/ability_container.gd @@ -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 diff --git a/scripts/ui/ability_container.gd.uid b/scripts/ui/ability_container.gd.uid new file mode 100644 index 0000000..a29b096 --- /dev/null +++ b/scripts/ui/ability_container.gd.uid @@ -0,0 +1 @@ +uid://deikky7ve55hc diff --git a/scripts/ui/character_creator.gd b/scripts/ui/character_creator.gd new file mode 100644 index 0000000..e0ae1de --- /dev/null +++ b/scripts/ui/character_creator.gd @@ -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()) diff --git a/scripts/ui/character_creator.gd.uid b/scripts/ui/character_creator.gd.uid new file mode 100644 index 0000000..3df9472 --- /dev/null +++ b/scripts/ui/character_creator.gd.uid @@ -0,0 +1 @@ +uid://boyjf1s2xtj28 diff --git a/scripts/player_label.gd b/scripts/ui/player_label.gd similarity index 100% rename from scripts/player_label.gd rename to scripts/ui/player_label.gd diff --git a/scripts/player_label.gd.uid b/scripts/ui/player_label.gd.uid similarity index 100% rename from scripts/player_label.gd.uid rename to scripts/ui/player_label.gd.uid