Automated formatting applied by tools/run_development.py 🤖 Generated by Gitea Actions Workflow: Continuous Integration Run: http://server:3000/nett00n/skelly/actions/runs/90
90 lines
3.2 KiB
GDScript
90 lines
3.2 KiB
GDScript
# Example of how to use the ValueStepper component in any scene
|
|
extends Control
|
|
|
|
# Example of setting up custom navigation
|
|
var navigable_steppers: Array[ValueStepper] = []
|
|
var current_stepper_index: int = 0
|
|
|
|
@onready
|
|
var language_stepper: ValueStepper = $VBoxContainer/Examples/LanguageContainer/LanguageStepper
|
|
@onready
|
|
var difficulty_stepper: ValueStepper = $VBoxContainer/Examples/DifficultyContainer/DifficultyStepper
|
|
@onready
|
|
var resolution_stepper: ValueStepper = $VBoxContainer/Examples/ResolutionContainer/ResolutionStepper
|
|
@onready var custom_stepper: ValueStepper = $VBoxContainer/Examples/CustomContainer/CustomStepper
|
|
|
|
|
|
func _ready():
|
|
DebugManager.log_info("ValueStepper example ready", "Example")
|
|
|
|
# Setup navigation array
|
|
navigable_steppers = [language_stepper, difficulty_stepper, resolution_stepper, custom_stepper]
|
|
|
|
# Connect to value change events
|
|
for stepper in navigable_steppers:
|
|
if not stepper.value_changed.is_connected(_on_stepper_value_changed):
|
|
stepper.value_changed.connect(_on_stepper_value_changed)
|
|
|
|
# Setup custom stepper with custom values
|
|
var themes = ["Light", "Dark", "Blue", "Green", "Purple"]
|
|
var theme_values = ["light", "dark", "blue", "green", "purple"]
|
|
custom_stepper.setup_custom_values(theme_values, themes)
|
|
custom_stepper.data_source = "theme" # For better logging
|
|
|
|
# Highlight first stepper
|
|
_update_stepper_highlighting()
|
|
|
|
|
|
func _input(event: InputEvent):
|
|
# Example navigation handling
|
|
if event.is_action_pressed("move_up"):
|
|
_navigate_steppers(-1)
|
|
get_viewport().set_input_as_handled()
|
|
elif event.is_action_pressed("move_down"):
|
|
_navigate_steppers(1)
|
|
get_viewport().set_input_as_handled()
|
|
elif event.is_action_pressed("move_left"):
|
|
_handle_stepper_input("move_left")
|
|
get_viewport().set_input_as_handled()
|
|
elif event.is_action_pressed("move_right"):
|
|
_handle_stepper_input("move_right")
|
|
get_viewport().set_input_as_handled()
|
|
|
|
|
|
func _navigate_steppers(direction: int):
|
|
current_stepper_index = ((current_stepper_index + direction) % navigable_steppers.size())
|
|
if current_stepper_index < 0:
|
|
current_stepper_index = navigable_steppers.size() - 1
|
|
_update_stepper_highlighting()
|
|
DebugManager.log_info("Stepper navigation: index " + str(current_stepper_index), "Example")
|
|
|
|
|
|
func _handle_stepper_input(action: String):
|
|
if current_stepper_index >= 0 and current_stepper_index < navigable_steppers.size():
|
|
var stepper = navigable_steppers[current_stepper_index]
|
|
if stepper.handle_input_action(action):
|
|
AudioManager.play_ui_click()
|
|
|
|
|
|
func _update_stepper_highlighting():
|
|
for i in range(navigable_steppers.size()):
|
|
navigable_steppers[i].set_highlighted(i == current_stepper_index)
|
|
|
|
|
|
func _on_stepper_value_changed(new_value: String, new_index: int):
|
|
DebugManager.log_info(
|
|
"Stepper value changed to: " + new_value + " (index: " + str(new_index) + ")", "Example"
|
|
)
|
|
# Handle value change in your scene
|
|
# For example: apply settings, save preferences, update UI, etc.
|
|
|
|
|
|
# Example of programmatically setting values
|
|
func _on_reset_to_defaults_pressed():
|
|
AudioManager.play_ui_click()
|
|
language_stepper.set_current_value("en")
|
|
difficulty_stepper.set_current_value("normal")
|
|
resolution_stepper.set_current_value("1920x1080")
|
|
custom_stepper.set_current_value("dark")
|
|
DebugManager.log_info("Reset all steppers to defaults", "Example")
|