40 lines
1.2 KiB
GDScript
40 lines
1.2 KiB
GDScript
@tool
|
|
class_name AbilityContainer
|
|
extends HBoxContainer
|
|
|
|
@export var ability_name: String = "AbilityName"#: set = set_ability_name
|
|
@export var ability_score: int = 10: set = set_ability_score
|
|
|
|
var modifier_value: int = 0
|
|
var _modifier_box_display_value: int
|
|
|
|
@onready var ability_label: Label = $AbilityLabel
|
|
@onready var ability_score_box: SpinBox = $AbilityScoreBox
|
|
@onready var modifier_box: SpinBox = $ModifierBox
|
|
|
|
func _ready() -> void:
|
|
_connect_signals()
|
|
ability_score_box.value = ability_score
|
|
ability_label.text = ability_name + ": "
|
|
|
|
func on_ability_score_value_changed(value: float) -> void:
|
|
modifier_value = floor((value - 10.0) / 2.0)
|
|
_modifier_box_display_value = abs(floor((value - 10.0) / 2.0))
|
|
modifier_box.value = _modifier_box_display_value
|
|
if modifier_value < 0:
|
|
modifier_box.prefix = "-"
|
|
else:
|
|
modifier_box.prefix = "+"
|
|
|
|
#func set_ability_name(new_name: String) -> void:
|
|
#ability_name = new_name
|
|
#ability_label.text = ability_name + ": "
|
|
|
|
func set_ability_score(score: int) -> void:
|
|
ability_score = score
|
|
if ability_score_box:
|
|
ability_score_box.value = score
|
|
|
|
func _connect_signals() -> void:
|
|
ability_score_box.connect("value_changed", on_ability_score_value_changed)
|