mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-18 12:33:47 +00:00
Add bullet creation and viewer dialogs with 2D/3D support
- Implement BulletCreatorDialog for configuring bullet parameters. - Introduce BulletViewer to display bullets in a grid format. - Add filtering options for 2D and 3D bullets in the viewer. - Enhance WeaponCreatorDock to include bullet creation functionality.
This commit is contained in:
parent
4787cd6691
commit
ac96dabf2e
8 changed files with 1045 additions and 76 deletions
|
|
@ -18,6 +18,8 @@ func _enter_tree() -> void:
|
|||
# Connect the create button signal from the dock
|
||||
if dock_instance.has_signal("create_weapon_requested"):
|
||||
dock_instance.create_weapon_requested.connect(_on_create_weapon_requested)
|
||||
if dock_instance.has_signal("create_bullet_requested"):
|
||||
dock_instance.create_bullet_requested.connect(_on_create_bullet_requested)
|
||||
|
||||
# Add the dock to the editor (bottom dock area)
|
||||
add_control_to_bottom_panel(dock_instance, "Weapon Creator")
|
||||
|
|
@ -249,3 +251,77 @@ func _add_to_items_database(database_path: String, item_resource_path: String) -
|
|||
return false
|
||||
|
||||
return true
|
||||
|
||||
func _on_create_bullet_requested(bullet_data: Dictionary) -> void:
|
||||
var bullet_name: String = bullet_data.get("bullet_name", "new_bullet")
|
||||
var is_3d: bool = bullet_data.get("is_3d", true)
|
||||
|
||||
var bullets_dir = "res://Resources/Bullets/"
|
||||
if is_3d:
|
||||
bullets_dir += "3D/"
|
||||
|
||||
var bullet_path = bullets_dir + bullet_name + ".tres"
|
||||
|
||||
dock_instance.call("add_log", "=== Starting Bullet Creation ===")
|
||||
dock_instance.call("add_log", "Bullet Name: " + bullet_name)
|
||||
dock_instance.call("add_log", "Mode: " + ("3D" if is_3d else "2D"))
|
||||
|
||||
if _create_bullet_resource(bullet_path, bullet_data):
|
||||
dock_instance.call("add_log", "✓ Created BulletResource at: " + bullet_path, Color.GREEN)
|
||||
else:
|
||||
dock_instance.call("add_log", "✗ Failed to create BulletResource", Color.RED)
|
||||
dock_instance.call("set_creation_complete")
|
||||
return
|
||||
|
||||
dock_instance.call("add_log", "=== Bullet Creation Complete ===", Color.CYAN)
|
||||
dock_instance.call("add_log", "Next steps:")
|
||||
dock_instance.call("add_log", "1. Test the bullet in-game")
|
||||
dock_instance.call("add_log", "2. Adjust properties as needed")
|
||||
dock_instance.call("set_creation_complete")
|
||||
|
||||
get_editor_interface().get_resource_filesystem().scan()
|
||||
|
||||
func _create_bullet_resource(path: String, bullet_data: Dictionary) -> bool:
|
||||
if ResourceLoader.exists(path):
|
||||
dock_instance.call("add_log", "Warning: BulletResource already exists at " + path, Color.YELLOW)
|
||||
return false
|
||||
|
||||
var bullet_script = load("res://Scripts/Resources/BulletResource.cs")
|
||||
if bullet_script == null:
|
||||
dock_instance.call("add_log", "Error: Could not load BulletResource.cs script", Color.RED)
|
||||
return false
|
||||
|
||||
var bullet_resource = Resource.new()
|
||||
bullet_resource.set_script(bullet_script)
|
||||
|
||||
# Set properties from bullet_data
|
||||
var bullet_sprite = bullet_data.get("bullet_sprite", null)
|
||||
if bullet_sprite:
|
||||
bullet_resource.set("BulletSprite", bullet_sprite)
|
||||
|
||||
var bullet_scene = bullet_data.get("bullet_scene", null)
|
||||
if bullet_scene:
|
||||
bullet_resource.set("BulletScene", bullet_scene)
|
||||
|
||||
bullet_resource.set("BulletSize", bullet_data.get("bullet_size", 1.0))
|
||||
bullet_resource.set("BulletSpeed", bullet_data.get("bullet_speed", 100.0))
|
||||
bullet_resource.set("BulletDamage", bullet_data.get("bullet_damage", 1.0))
|
||||
bullet_resource.set("MaxDamage", bullet_data.get("max_damage", 1.0))
|
||||
bullet_resource.set("Knockback", bullet_data.get("knockback", 1.0))
|
||||
bullet_resource.set("LifeTime", bullet_data.get("life_time", 10.0))
|
||||
bullet_resource.set("GrazeValue", bullet_data.get("graze_value", 0.2))
|
||||
|
||||
var destruction_particles = bullet_data.get("destruction_particles_scene", null)
|
||||
if destruction_particles:
|
||||
bullet_resource.set("DestructionParticlesScene", destruction_particles)
|
||||
|
||||
# Set default Direction
|
||||
bullet_resource.set("Direction", Vector2.RIGHT)
|
||||
|
||||
var err = ResourceSaver.save(bullet_resource, path)
|
||||
if err != OK:
|
||||
dock_instance.call("add_log", "Error saving BulletResource: " + str(err), Color.RED)
|
||||
return false
|
||||
|
||||
return true
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue