continued work on character creator
This commit is contained in:
parent
2235aa3d6a
commit
9cd1f5c460
15
scenes/ui/ability_container.tscn
Normal file
15
scenes/ui/ability_container.tscn
Normal 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
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
16
scripts/ui/ability_container.gd
Normal file
16
scripts/ui/ability_container.gd
Normal 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
|
||||
1
scripts/ui/ability_container.gd.uid
Normal file
1
scripts/ui/ability_container.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://deikky7ve55hc
|
||||
19
scripts/ui/character_creator.gd
Normal file
19
scripts/ui/character_creator.gd
Normal 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())
|
||||
1
scripts/ui/character_creator.gd.uid
Normal file
1
scripts/ui/character_creator.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://boyjf1s2xtj28
|
||||
Loading…
Reference in New Issue
Block a user