Adding pins for each element
This commit is contained in:
parent
a737212f51
commit
3f817ae4b5
8 changed files with 211 additions and 37 deletions
2
main.gd
2
main.gd
|
@ -72,7 +72,7 @@ func lets_roll(chosen_seed: int, noise: bool = 1) -> void:
|
||||||
|
|
||||||
# Randomize trait
|
# Randomize trait
|
||||||
if not keep_traits.button_pressed:
|
if not keep_traits.button_pressed:
|
||||||
traits.populate()
|
traits.build_traits()
|
||||||
|
|
||||||
func update_language(new_language: String) -> void:
|
func update_language(new_language: String) -> void:
|
||||||
# Change the localisation on Translation Server
|
# Change the localisation on Translation Server
|
||||||
|
|
|
@ -250,6 +250,9 @@ offset_left = -16.512
|
||||||
offset_top = 128.088
|
offset_top = 128.088
|
||||||
offset_right = -15.616
|
offset_right = -15.616
|
||||||
offset_bottom = 112.232
|
offset_bottom = 112.232
|
||||||
|
traits = ["Courage", "Passion", "Creativity", "Temperance", "Sensuality", "Energy", "Responsibility", "Empathy", "Self-esteem", "Flexibility", "Hope", "Will"]
|
||||||
|
seed = 0
|
||||||
|
amount = 3
|
||||||
|
|
||||||
[node name="Traits_label" type="Label" parent="Traits"]
|
[node name="Traits_label" type="Label" parent="Traits"]
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
|
|
BIN
textures/arrowDown.png
Normal file
BIN
textures/arrowDown.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
34
textures/arrowDown.png.import
Normal file
34
textures/arrowDown.png.import
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cafw5ytvxgep4"
|
||||||
|
path="res://.godot/imported/arrowDown.png-ab79ddb99d5bc29b618e06ce2bcf2e97.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://textures/arrowDown.png"
|
||||||
|
dest_files=["res://.godot/imported/arrowDown.png-ab79ddb99d5bc29b618e06ce2bcf2e97.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
BIN
textures/arrowUp.png
Normal file
BIN
textures/arrowUp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
34
textures/arrowUp.png.import
Normal file
34
textures/arrowUp.png.import
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cfrj22ncm1tiq"
|
||||||
|
path="res://.godot/imported/arrowUp.png-b09ed087648058278d5b46b9c01afa74.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://textures/arrowUp.png"
|
||||||
|
dest_files=["res://.godot/imported/arrowUp.png-b09ed087648058278d5b46b9c01afa74.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
136
traits.gd
136
traits.gd
|
@ -3,29 +3,117 @@ extends Control
|
||||||
@export var traits:Array = [
|
@export var traits:Array = [
|
||||||
"Courage",
|
"Courage",
|
||||||
"Passion",
|
"Passion",
|
||||||
"Créativité",
|
"Creativity",
|
||||||
"Tempérance",
|
"Temperance",
|
||||||
"Sensualité",
|
"Sensuality",
|
||||||
"Énergie",
|
"Energy",
|
||||||
"Responsabilité",
|
"Responsibility",
|
||||||
"Empathie",
|
"Empathy",
|
||||||
"Estime de soi",
|
"Self-esteem",
|
||||||
"Flexibilité",
|
"Flexibility",
|
||||||
"Espoir",
|
"Hope",
|
||||||
"Volonté"
|
"Will"
|
||||||
]
|
]
|
||||||
@export var amount: int = 3
|
|
||||||
@export var seed: int = 0
|
@export var seed: int = 0
|
||||||
|
@export var amount: int = 3
|
||||||
|
var pin_items: Array = []
|
||||||
|
|
||||||
# variables for nodes
|
# variables for nodes
|
||||||
@onready var traits_list: ItemList = $Trait
|
@onready var traits_list: VBoxContainer = $Traits_list
|
||||||
|
|
||||||
|
# Variable for icons
|
||||||
|
@onready var icon_up: Texture2D = load("res://textures/arrowUp.png")
|
||||||
|
@onready var icon_down: Texture2D = load("res://textures/arrowDown.png")
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
populate()
|
build_traits()
|
||||||
|
|
||||||
|
func build_traits() -> void:
|
||||||
|
# Build the traits list with checkboxes to pin any
|
||||||
|
|
||||||
|
var list_amount: int = amount
|
||||||
|
var pinned: Array = []
|
||||||
|
|
||||||
|
# First, clear the box for non-pinned traits
|
||||||
|
for child in traits_list.get_children():
|
||||||
|
for sub_child in child.get_children():
|
||||||
|
if sub_child is CheckBox:
|
||||||
|
if sub_child.button_pressed:
|
||||||
|
list_amount -= 1
|
||||||
|
pinned.append([child.get_index(), child])
|
||||||
|
|
||||||
|
for child in traits_list.get_children():
|
||||||
|
for sub_child in child.get_children():
|
||||||
|
if sub_child is CheckBox:
|
||||||
|
if sub_child.button_pressed:
|
||||||
|
traits_list.remove_child(child)
|
||||||
|
else:
|
||||||
|
child.queue_free()
|
||||||
|
|
||||||
|
|
||||||
|
# generate the amount of traits needed
|
||||||
|
var char_traits: Dictionary = generate_traits(traits, seed, list_amount)
|
||||||
|
var char_traits_list: Array = []
|
||||||
|
|
||||||
|
for key in char_traits.keys():
|
||||||
|
char_traits_list.append([key, char_traits[key][0], char_traits[key][1]])
|
||||||
|
|
||||||
|
for pin in pinned:
|
||||||
|
char_traits_list.insert(pin[0], pin[1])
|
||||||
|
|
||||||
|
# Generate a line for each trait
|
||||||
|
for traitline in range(amount):
|
||||||
|
print("At index: ", traitline, " found: ", char_traits_list[traitline])
|
||||||
|
if char_traits_list[traitline] is HBoxContainer:
|
||||||
|
print("Je confirme")
|
||||||
|
print("Parent: ", char_traits_list[traitline].get_parent())
|
||||||
|
traits_list.add_child(char_traits_list[traitline])
|
||||||
|
#char_traits_list[traitline].reparent(traits_list)
|
||||||
|
else:
|
||||||
|
# Create horizontal container for elements
|
||||||
|
var container = HBoxContainer.new()
|
||||||
|
|
||||||
|
# Checkbox to pin or not
|
||||||
|
var checkbox: CheckBox = CheckBox.new()
|
||||||
|
var checkbox_index: int = pin_items.size()
|
||||||
|
checkbox.text = "" # No text
|
||||||
|
checkbox.tooltip_text = "PIN"
|
||||||
|
checkbox.toggled.connect(Callable(self, "_on_checkbox_toggled").bind(checkbox_index))
|
||||||
|
|
||||||
|
# Label for trait name
|
||||||
|
var label: Label = Label.new()
|
||||||
|
label.text = char_traits_list[traitline][0]
|
||||||
|
|
||||||
|
# Icon for up or down
|
||||||
|
var icon: Texture2D = icon_down
|
||||||
|
var icon_rect: TextureRect = TextureRect.new()
|
||||||
|
icon_rect.texture = icon_down
|
||||||
|
var value: bool = char_traits_list[traitline][1]
|
||||||
|
if value:
|
||||||
|
icon_rect.texture = icon_up
|
||||||
|
|
||||||
|
# Add the elements to the horizontal container
|
||||||
|
container.add_child(checkbox)
|
||||||
|
container.add_child(label)
|
||||||
|
container.add_child(icon_rect)
|
||||||
|
|
||||||
|
# Add the container
|
||||||
|
traits_list.add_child(container)
|
||||||
|
|
||||||
|
# Stock checkbox reference
|
||||||
|
pin_items.append(checkbox)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_checkbox_toggled(checked: bool, checkbox: int) -> void:
|
||||||
|
# Manage checkbox signal
|
||||||
|
pass
|
||||||
|
|
||||||
func generate_traits(traits_list: Array = traits, chosen_seed: int = 0, chosen_amount: int = 3) -> Dictionary:
|
func generate_traits(traits_list: Array = traits, chosen_seed: int = 0, chosen_amount: int = 3) -> Dictionary:
|
||||||
# Return a dictionary, with trait as key and boolean as value
|
# Return a dictionary,
|
||||||
|
# with trait as key and
|
||||||
|
# an array with index as first value and boolean as second value
|
||||||
|
# Inputs:
|
||||||
# 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 = {}
|
||||||
|
@ -43,26 +131,10 @@ func generate_traits(traits_list: Array = traits, chosen_seed: int = 0, chosen_a
|
||||||
random_value.randomize()
|
random_value.randomize()
|
||||||
var value: bool = random_value.randi_range(0, 1)
|
var value: bool = random_value.randi_range(0, 1)
|
||||||
|
|
||||||
# Add the key and value to the array
|
# Add the key and array value to the array
|
||||||
picked_traits[traits_duplicate[result]] = value
|
picked_traits[traits_duplicate[result]] = [select, value]
|
||||||
|
|
||||||
# Delete the chosen trait from the possible list
|
# Delete the chosen trait from the possible list
|
||||||
traits_duplicate.pop_at(result)
|
traits_duplicate.pop_at(result)
|
||||||
|
|
||||||
return picked_traits
|
return picked_traits
|
||||||
|
|
||||||
func populate(traits: Array = traits, seed: int = 0, amount: int = 3) -> void:
|
|
||||||
# To create an itemlist with traits and values
|
|
||||||
|
|
||||||
traits_list.clear()
|
|
||||||
|
|
||||||
var char_traits: Dictionary = generate_traits(traits, seed, amount)
|
|
||||||
|
|
||||||
for char_trait in char_traits:
|
|
||||||
var value: String = ""
|
|
||||||
if char_traits[char_trait]:
|
|
||||||
value = "↑"
|
|
||||||
else:
|
|
||||||
value = "↓"
|
|
||||||
var full_line: String = char_trait + " " + value
|
|
||||||
traits_list.add_item(full_line)
|
|
||||||
|
|
39
traits.tscn
39
traits.tscn
|
@ -1,6 +1,7 @@
|
||||||
[gd_scene load_steps=2 format=3 uid="uid://cl5wswke7jxpi"]
|
[gd_scene load_steps=3 format=3 uid="uid://cl5wswke7jxpi"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://traits.gd" id="1_6h04s"]
|
[ext_resource type="Script" path="res://traits.gd" id="1_6h04s"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cafw5ytvxgep4" path="res://textures/arrowDown.png" id="2_iexdr"]
|
||||||
|
|
||||||
[node name="Traits" type="Control"]
|
[node name="Traits" type="Control"]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
|
@ -13,7 +14,37 @@ grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
script = ExtResource("1_6h04s")
|
script = ExtResource("1_6h04s")
|
||||||
|
|
||||||
[node name="Trait" type="ItemList" parent="."]
|
[node name="Traits_list" type="VBoxContainer" parent="."]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_right = 224.0
|
offset_right = 232.0
|
||||||
offset_bottom = 96.0
|
offset_bottom = 119.0
|
||||||
|
|
||||||
|
[node name="HBoxContainer" type="HBoxContainer" parent="Traits_list"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="CheckBox" type="CheckBox" parent="Traits_list/HBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="Traits_list/HBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "My text"
|
||||||
|
|
||||||
|
[node name="TextureRect" type="TextureRect" parent="Traits_list/HBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
texture = ExtResource("2_iexdr")
|
||||||
|
expand_mode = 3
|
||||||
|
|
||||||
|
[node name="HBoxContainer2" type="HBoxContainer" parent="Traits_list"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="CheckBox" type="CheckBox" parent="Traits_list/HBoxContainer2"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="Traits_list/HBoxContainer2"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "My text"
|
||||||
|
|
||||||
|
[node name="TextureRect" type="TextureRect" parent="Traits_list/HBoxContainer2"]
|
||||||
|
layout_mode = 2
|
||||||
|
texture = ExtResource("2_iexdr")
|
||||||
|
expand_mode = 3
|
||||||
|
|
Loading…
Reference in a new issue