@tool class_name WeaponCreatorSettings extends Resource # Settings manager for the Weapon Creator plugin # Stores configurable defaults and persists user preferences const SETTINGS_PATH = "user://weapon_creator_settings.tres" # Resource paths @export var weapons_dir: String = "res://Resources/Weapons/" @export var items_dir: String = "res://Resources/Items/" @export var bullets_dir: String = "res://Resources/Bullets/" @export var bullets_3d_dir: String = "res://Resources/Bullets/3D/" @export var enemies_dir: String = "res://Resources/Enemies/" @export var items_database_path: String = "res://Resources/ItemsDatabase.tres" # Default bullet paths @export var default_bullet_2d: String = "res://Resources/Bullets/simple_ice_bullet.tres" @export var default_bullet_3d: String = "res://Resources/Bullets/3D/icicle_repeater_bullets_3D.tres" # Default enemy paths @export var default_enemy_prefab_3d: String = "res://Scenes/Actors/Generic_Enemy_FSM_3D.tscn" # Dialog sizes (saved automatically) @export var weapon_dialog_size: Vector2i = Vector2i(750, 950) @export var bullet_dialog_size: Vector2i = Vector2i(750, 850) @export var item_dialog_size: Vector2i = Vector2i(750, 850) @export var enemy_dialog_size: Vector2i = Vector2i(750, 950) @export var settings_dialog_size: Vector2i = Vector2i(600, 600) # Dialog positions (saved automatically) @export var weapon_dialog_position: Vector2i = Vector2i.ZERO @export var bullet_dialog_position: Vector2i = Vector2i.ZERO @export var item_dialog_position: Vector2i = Vector2i.ZERO @export var enemy_dialog_position: Vector2i = Vector2i.ZERO @export var settings_dialog_position: Vector2i = Vector2i.ZERO # Viewer filters (saved automatically) @export var weapon_viewer_filter: String = "" @export var bullet_viewer_filter: String = "" @export var item_viewer_filter: String = "" @export var enemy_viewer_filter: String = "" static func load_settings(): if ResourceLoader.exists(SETTINGS_PATH): var loaded = ResourceLoader.load(SETTINGS_PATH) if loaded != null: return loaded var new_settings = WeaponCreatorSettings.new() return new_settings func save_settings() -> void: var err = ResourceSaver.save(self, SETTINGS_PATH) if err != OK: push_error("Failed to save weapon creator settings: " + str(err)) func reset_to_defaults() -> void: weapons_dir = "res://Resources/Weapons/" items_dir = "res://Resources/Items/" bullets_dir = "res://Resources/Bullets/" bullets_3d_dir = "res://Resources/Bullets/3D/" enemies_dir = "res://Resources/Enemies/" items_database_path = "res://Resources/ItemsDatabase.tres" default_bullet_2d = "res://Resources/Bullets/simple_ice_bullet.tres" default_bullet_3d = "res://Resources/Bullets/3D/icicle_repeater_bullets_3D.tres" default_enemy_prefab_3d = "res://Scenes/Actors/Generic_Enemy_FSM_3D.tscn" weapon_dialog_size = Vector2i(750, 950) bullet_dialog_size = Vector2i(750, 850) item_dialog_size = Vector2i(750, 850) enemy_dialog_size = Vector2i(750, 950) settings_dialog_size = Vector2i(600, 600) weapon_dialog_position = Vector2i.ZERO bullet_dialog_position = Vector2i.ZERO item_dialog_position = Vector2i.ZERO enemy_dialog_position = Vector2i.ZERO settings_dialog_position = Vector2i.ZERO weapon_viewer_filter = "" bullet_viewer_filter = "" item_viewer_filter = "" enemy_viewer_filter = "" save_settings()