Adding doubles management for traits

This commit is contained in:
Yann Kervran 2024-11-28 18:52:35 +01:00
parent 0abc34655a
commit aba117d65c
2 changed files with 11 additions and 8 deletions

View file

@ -29,7 +29,7 @@ func _ready() -> void:
language_choice.get_popup().connect("id_pressed", _on_menu_language_selected) language_choice.get_popup().connect("id_pressed", _on_menu_language_selected)
func _process(delta: float) -> void: func _process(_delta: float) -> void:
# Roll new result" # Roll new result"
if Input.is_action_just_pressed("roll"): if Input.is_action_just_pressed("roll"):
lets_roll(seed) lets_roll(seed)

View file

@ -34,16 +34,16 @@ func build_traits() -> void:
var list_amount: int = amount var list_amount: int = amount
var pinned: Array = [] var pinned: Array = []
var pinned_name: Array = []
# Keep track of pinned content # Keep track of pinned content
for child in traits_list.get_children(): for child in traits_list.get_children():
for sub_child in child.get_children(): for sub_child in child.get_children():
if sub_child is CheckBox: if sub_child is CheckBox:
if sub_child.button_pressed: if sub_child.button_pressed:
list_amount -= 1 list_amount -= 1
pinned.append([child.get_index(), child]) pinned.append([child.get_index(), child])
pinned_name.append(child.get_child(1).text)
# Then clear the Hbox for non-pinned traits # Then clear the Hbox for non-pinned traits
for child in traits_list.get_children(): for child in traits_list.get_children():
for sub_child in child.get_children(): for sub_child in child.get_children():
@ -55,7 +55,7 @@ func build_traits() -> void:
# Generate the amount of traits needed and store in an array # Generate the amount of traits needed and store in an array
var char_traits: Dictionary = generate_traits(traits, seed, list_amount) var char_traits: Dictionary = generate_traits(traits, pinned_name, seed, list_amount)
var char_traits_list: Array = [] var char_traits_list: Array = []
for key in char_traits.keys(): for key in char_traits.keys():
@ -86,7 +86,6 @@ func build_traits() -> void:
label.text = char_traits_list[traitline][0] label.text = char_traits_list[traitline][0]
# Icon for up or down # Icon for up or down
var icon: Texture2D = icon_down
var icon_rect: TextureRect = TextureRect.new() var icon_rect: TextureRect = TextureRect.new()
icon_rect.texture = icon_down icon_rect.texture = icon_down
var value: bool = char_traits_list[traitline][1] var value: bool = char_traits_list[traitline][1]
@ -109,18 +108,22 @@ func _on_checkbox_toggled(checked: bool, checkbox: int) -> void:
# Manage checkbox signal # Manage checkbox signal
pass pass
func generate_traits(traits_list: Array = traits, chosen_seed: int = 0, chosen_amount: int = 3) -> Dictionary: func generate_traits(traits_list: Array = traits, pinned_traits: Array = [], chosen_seed: int = 0, chosen_amount: int = 3) -> Dictionary:
# Return a dictionary, # Return a dictionary,
# with trait as key and # with trait as key and
# an array with index as first value and boolean as second value # an array with index as first value and boolean as second value
# Inputs: # Inputs:
# traits_list for list of traits
# pinned_traits for pinned traits (to prevent doubles)
# chosen_seed for random seed # chosen_seed for random seed
# chosen_amount for the amount of traits to return # chosen_amount for the amount of traits to return
var picked_traits: Dictionary = {} var picked_traits: Dictionary = {}
var traits_duplicate = traits_list.duplicate() var traits_duplicate: Array = traits_list.duplicate()
# Remove the one already used
for item in pinned_traits:
traits_duplicate.erase(item)
for select in range(chosen_amount): for select in range(chosen_amount):
# Pick a trait first and then choose if it is up or down # Pick a trait first and then choose if it is up or down
var picked_trait:Dictionary = {}
var random = RandomNumberGenerator.new() var random = RandomNumberGenerator.new()
random.seed = chosen_seed random.seed = chosen_seed
random.randomize() random.randomize()