Files
nodewars/addons/curved_lines_2d/project_settings_tab.gd
2026-05-13 18:52:00 +02:00

94 lines
4.0 KiB
GDScript

@tool
extends Control
var snap_resolution_input : EditorSpinSlider
var tolerance_degrees_input : EditorSpinSlider
var max_stages_input : EditorSpinSlider
func _enter_tree() -> void:
%EnableEditingCheckbox.button_pressed = CurvedLines2D._is_editing_enabled()
%EnableHintsCheckbox.button_pressed = CurvedLines2D._are_hints_enabled()
%EnablePointNumbersCheckbox.button_pressed = CurvedLines2D._am_showing_point_numbers()
%SnapToPixelCheckBox.button_pressed = CurvedLines2D._is_snapped_to_pixel()
%UpdateCurveAtRuntimeCheckbox.button_pressed = CurvedLines2D._is_setting_update_curve_at_runtime()
%MakeResourcesLocalToSceneCheckBox.button_pressed = CurvedLines2D._is_making_curve_resources_local_to_scene()
snap_resolution_input = _make_number_input("Snap distance", CurvedLines2D._get_snap_resolution(), 1.0, 1024.0, "px", 1.0)
%SnapResolutionInputContainer.add_child(snap_resolution_input)
snap_resolution_input.value_changed.connect(_on_snap_resolution_value_changed)
if not snap_resolution_input.focus_exited.is_connected(ProjectSettings.save):
snap_resolution_input.focus_exited.connect(ProjectSettings.save)
tolerance_degrees_input = _make_number_input("Tolerance Degrees", CurvedLines2D._get_default_tolerance_degrees(), 0.0, 180.0, "°", 0.5)
%ToleranceDegreesInputContainer.add_child(tolerance_degrees_input)
tolerance_degrees_input.value_changed.connect(_on_tolerance_degrees_input_changed)
if not tolerance_degrees_input.focus_exited.is_connected(ProjectSettings.save):
tolerance_degrees_input.focus_exited.connect(ProjectSettings.save)
max_stages_input = _make_number_input("Max Stages", CurvedLines2D._get_default_max_stages(), 1, 10, "")
%MaxStagesInputContainer.add_child(max_stages_input)
max_stages_input.value_changed.connect(_on_max_stages_input_changed)
if not max_stages_input.focus_exited.is_connected(ProjectSettings.save):
max_stages_input.focus_exited.connect(ProjectSettings.save)
%AddAntialiasedLine2DCheckbox.button_pressed = CurvedLines2D._use_antialiased_line_2d()
func _make_number_input(lbl : String, value : float, min_value : float, max_value : float, suffix : String, step := 1.0) -> EditorSpinSlider:
var x_slider := EditorSpinSlider.new()
x_slider.value = value
x_slider.min_value = min_value
x_slider.max_value = max_value
x_slider.suffix = suffix
x_slider.label = lbl
x_slider.step = step
return x_slider
func _on_enable_editing_checkbox_toggled(toggled_on: bool) -> void:
ProjectSettings.set_setting(CurvedLines2D.SETTING_NAME_EDITING_ENABLED, toggled_on)
ProjectSettings.save()
func _on_enable_hints_checkbox_toggled(toggled_on: bool) -> void:
ProjectSettings.set_setting(CurvedLines2D.SETTING_NAME_HINTS_ENABLED, toggled_on)
ProjectSettings.save()
func _on_enable_point_numbers_checkbox_toggled(toggled_on: bool) -> void:
ProjectSettings.set_setting(CurvedLines2D.SETTING_NAME_SHOW_POINT_NUMBERS, toggled_on)
ProjectSettings.save()
func _on_snap_to_pixel_check_box_toggled(toggled_on: bool) -> void:
ProjectSettings.set_setting(CurvedLines2D.SETTING_NAME_SNAP_TO_PIXEL,
toggled_on)
ProjectSettings.save()
func _on_snap_resolution_value_changed(val : float) -> void:
ProjectSettings.set_setting(CurvedLines2D.SETTING_NAME_SNAP_RESOLUTION, val)
func _on_tolerance_degrees_input_changed(val : float) -> void:
ProjectSettings.set_setting(CurvedLines2D.SETTING_NAME_CURVE_TOLERANCE_DEGREES, val)
func _on_max_stages_input_changed(val : int) -> void:
ProjectSettings.set_setting(CurvedLines2D.SETTING_NAME_CURVE_MAX_STAGES, val)
func _on_update_curve_at_runtime_checkbox_toggled(toggled_on: bool) -> void:
ProjectSettings.set_setting(CurvedLines2D.SETTING_NAME_CURVE_UPDATE_CURVE_AT_RUNTIME, toggled_on)
ProjectSettings.save()
func _on_make_resources_local_to_scene_check_box_toggled(toggled_on: bool) -> void:
ProjectSettings.set_setting(CurvedLines2D.SETTING_NAME_CURVE_RESOURCE_LOCAL_TO_SCENE, toggled_on)
ProjectSettings.save()
func _on_add_antialiased_line_2d_checkbox_toggled(toggled_on: bool) -> void:
ProjectSettings.set_setting(CurvedLines2D.SETTING_NAME_ANTIALIASED_LINE_2D, toggled_on)
ProjectSettings.save()