mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-01 10:05:34 +00:00
152 lines
4.9 KiB
GDScript
152 lines
4.9 KiB
GDScript
@tool
|
|
class_name SettingsDialog
|
|
extends BaseCreatorDialog
|
|
|
|
# Settings dialog for configuring Weapon Creator plugin defaults
|
|
|
|
# UI fields
|
|
var weapons_dir_field: LineEdit
|
|
var items_dir_field: LineEdit
|
|
var bullets_dir_field: LineEdit
|
|
var bullets_3d_dir_field: LineEdit
|
|
var items_database_field: LineEdit
|
|
var default_bullet_2d_field: LineEdit
|
|
var default_bullet_3d_field: LineEdit
|
|
var reset_button: Button
|
|
|
|
func _init() -> void:
|
|
if ResourceLoader.exists(SETTINGS_PATH):
|
|
settings = ResourceLoader.load(SETTINGS_PATH)
|
|
if not settings:
|
|
settings = WeaponCreatorSettings.new()
|
|
|
|
func _configure_window() -> void:
|
|
var saved_size = settings.get("settings_dialog_size") if settings else null
|
|
size = saved_size if saved_size else Vector2i(600, 600)
|
|
transient = false
|
|
exclusive = false
|
|
unresizable = false
|
|
|
|
func _update_title() -> void:
|
|
title = "Weapon Creator Settings"
|
|
|
|
func _get_saved_position() -> Vector2i:
|
|
if settings:
|
|
var pos = settings.get("settings_dialog_position")
|
|
return pos if pos else Vector2i.ZERO
|
|
return Vector2i.ZERO
|
|
|
|
func _save_dialog_size() -> void:
|
|
settings.set("settings_dialog_size", size)
|
|
|
|
func _save_dialog_position() -> void:
|
|
settings.set("settings_dialog_position", position)
|
|
|
|
func _build_content(container: VBoxContainer) -> void:
|
|
var section_label = _create_section_label("Resource Paths")
|
|
container.add_child(section_label)
|
|
|
|
var weapons_input = _create_input("Weapons Directory:")
|
|
weapons_dir_field = weapons_input.edit
|
|
container.add_child(weapons_input.container)
|
|
|
|
var items_input = _create_input("Items Directory:")
|
|
items_dir_field = items_input.edit
|
|
container.add_child(items_input.container)
|
|
|
|
var bullets_input = _create_input("Bullets Directory:")
|
|
bullets_dir_field = bullets_input.edit
|
|
container.add_child(bullets_input.container)
|
|
|
|
var bullets_3d_input = _create_input("Bullets 3D Directory:")
|
|
bullets_3d_dir_field = bullets_3d_input.edit
|
|
container.add_child(bullets_3d_input.container)
|
|
|
|
var database_input = _create_input("Items Database:")
|
|
items_database_field = database_input.edit
|
|
container.add_child(database_input.container)
|
|
|
|
container.add_child(HSeparator.new())
|
|
|
|
var defaults_label = _create_section_label("Default Bullets")
|
|
container.add_child(defaults_label)
|
|
|
|
var bullet_2d_input = _create_input("Default Bullet 2D:")
|
|
default_bullet_2d_field = bullet_2d_input.edit
|
|
container.add_child(bullet_2d_input.container)
|
|
|
|
var bullet_3d_input = _create_input("Default Bullet 3D:")
|
|
default_bullet_3d_field = bullet_3d_input.edit
|
|
container.add_child(bullet_3d_input.container)
|
|
|
|
container.add_child(HSeparator.new())
|
|
|
|
var reset_section = _create_section_label("Reset Options")
|
|
container.add_child(reset_section)
|
|
|
|
reset_button = Button.new()
|
|
reset_button.text = "Reset All Settings (Filters, Dialog Sizes, Defaults)"
|
|
reset_button.pressed.connect(_on_reset_pressed)
|
|
container.add_child(reset_button)
|
|
|
|
func _build_buttons(vbox: VBoxContainer) -> void:
|
|
var button_hbox = HBoxContainer.new()
|
|
button_hbox.alignment = BoxContainer.ALIGNMENT_END
|
|
button_hbox.add_theme_constant_override("separation", 8)
|
|
vbox.add_child(button_hbox)
|
|
|
|
var cancel_button = Button.new()
|
|
cancel_button.text = "Cancel"
|
|
cancel_button.pressed.connect(_on_cancel_pressed)
|
|
button_hbox.add_child(cancel_button)
|
|
|
|
var save_button = Button.new()
|
|
save_button.text = "Save"
|
|
save_button.pressed.connect(_on_create_pressed)
|
|
button_hbox.add_child(save_button)
|
|
|
|
func _set_default_values() -> void:
|
|
weapons_dir_field.text = settings.get("weapons_dir")
|
|
items_dir_field.text = settings.get("items_dir")
|
|
bullets_dir_field.text = settings.get("bullets_dir")
|
|
bullets_3d_dir_field.text = settings.get("bullets_3d_dir")
|
|
items_database_field.text = settings.get("items_database_path")
|
|
default_bullet_2d_field.text = settings.get("default_bullet_2d")
|
|
default_bullet_3d_field.text = settings.get("default_bullet_3d")
|
|
|
|
func _apply_prefill_data() -> void:
|
|
_set_default_values()
|
|
|
|
func _on_create_pressed() -> void:
|
|
settings.set("weapons_dir", weapons_dir_field.text)
|
|
settings.set("items_dir", items_dir_field.text)
|
|
settings.set("bullets_dir", bullets_dir_field.text)
|
|
settings.set("bullets_3d_dir", bullets_3d_dir_field.text)
|
|
settings.set("items_database_path", items_database_field.text)
|
|
settings.set("default_bullet_2d", default_bullet_2d_field.text)
|
|
settings.set("default_bullet_3d", default_bullet_3d_field.text)
|
|
|
|
_save_dialog_size()
|
|
_save_dialog_position()
|
|
settings.call("save_settings")
|
|
|
|
queue_free()
|
|
|
|
func _on_reset_pressed() -> void:
|
|
var dialog = ConfirmationDialog.new()
|
|
dialog.dialog_text = "This will reset all settings including:\n- Resource paths\n- Default bullets\n- All dialog sizes\n- All dialog positions\n- All viewer filters\n\nAre you sure?"
|
|
dialog.title = "Reset All Settings"
|
|
add_child(dialog)
|
|
|
|
dialog.confirmed.connect(func():
|
|
settings.call("reset_to_defaults")
|
|
_set_default_values()
|
|
dialog.queue_free()
|
|
)
|
|
|
|
dialog.canceled.connect(func():
|
|
dialog.queue_free()
|
|
)
|
|
|
|
dialog.popup_centered()
|
|
|