cirnogodot/addons/weapon_creator/WeaponCreatorSettings.gd

86 lines
3.3 KiB
GDScript

@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()