mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-15 21:13:48 +00:00
Enhance weapon creation dialog with 2D/3D mode support and prefill functionality
This commit is contained in:
parent
b5a1c8c759
commit
c78fa8aa45
4 changed files with 425 additions and 53 deletions
|
|
@ -36,7 +36,8 @@ func _on_create_weapon_requested(weapon_data: Dictionary) -> void:
|
|||
var weapon_short_name: String = weapon_data.get("weapon_short_name", "NW-1")
|
||||
var weapon_description: String = weapon_data.get("weapon_description", "A new weapon")
|
||||
var sprite_resource: Texture2D = weapon_data.get("sprite_resource", null)
|
||||
var default_bullet_path: String = weapon_data.get("default_bullet_path", "res://Resources/Bullets/simple_ice_bullet.tres")
|
||||
var default_bullet_path: String = weapon_data.get("default_bullet_path", "res://Resources/Bullets/3D/icicle_repeater_bullets_3D.tres")
|
||||
var is_3d: bool = weapon_data.get("is_3d", true)
|
||||
|
||||
# Weapon stats
|
||||
var priority: int = weapon_data.get("priority", 10)
|
||||
|
|
@ -51,10 +52,11 @@ func _on_create_weapon_requested(weapon_data: Dictionary) -> void:
|
|||
var spread_angle: float = weapon_data.get("spread_angle", 0.0)
|
||||
var random_spread: float = weapon_data.get("random_spread", 0.0)
|
||||
|
||||
# Build resource paths
|
||||
var weapon_resource_path := "res://Resources/Weapons/" + weapon_item_key + ".tres"
|
||||
var item_resource_path := "res://Resources/Items/" + weapon_item_key + "_Item.tres"
|
||||
var items_database_path := "res://Resources/ItemsDatabase.tres"
|
||||
# Append 2D or 3D to the end of the key
|
||||
var dimension_suffix = "_3D" if is_3d else "_2D"
|
||||
var weapon_resource_path: String = "res://Resources/Weapons/" + weapon_item_key + dimension_suffix + ".tres"
|
||||
var item_resource_path: String = "res://Resources/Items/" + weapon_item_key + "_Item" + dimension_suffix + ".tres"
|
||||
var items_database_path: String = "res://Resources/ItemsDatabase.tres"
|
||||
|
||||
# Feedback to the UI
|
||||
dock_instance.call("add_log", "=== Starting Weapon Creation ===")
|
||||
|
|
@ -74,7 +76,7 @@ func _on_create_weapon_requested(weapon_data: Dictionary) -> void:
|
|||
|
||||
# Step 2: Create LootItem resource
|
||||
if _create_loot_item_resource(item_resource_path, weapon_name, weapon_short_name,
|
||||
weapon_description, weapon_item_key, weapon_resource_path, sprite_resource):
|
||||
weapon_description, weapon_item_key, weapon_resource_path, sprite_resource, is_3d):
|
||||
dock_instance.call("add_log", "✓ Created LootItem at: " + item_resource_path, Color.GREEN)
|
||||
else:
|
||||
dock_instance.call("add_log", "✗ Failed to create LootItem", Color.RED)
|
||||
|
|
@ -154,7 +156,7 @@ func _create_weapon_resource(path: String, weapon_name: String, item_key: String
|
|||
|
||||
func _create_loot_item_resource(path: String, item_name: String, short_name: String,
|
||||
description: String, item_key: String,
|
||||
weapon_resource_path: String, sprite_resource: Texture2D) -> bool:
|
||||
weapon_resource_path: String, sprite_resource: Texture2D, is_3d: bool) -> bool:
|
||||
# Check if file already exists
|
||||
if ResourceLoader.exists(path):
|
||||
dock_instance.call("add_log", "Warning: LootItem already exists at " + path, Color.YELLOW)
|
||||
|
|
@ -181,8 +183,17 @@ func _create_loot_item_resource(path: String, item_name: String, short_name: Str
|
|||
loot_item.set("ShortName", short_name)
|
||||
loot_item.set("ItemDescription", description)
|
||||
loot_item.set("ItemKey", item_key)
|
||||
loot_item.set("Item", 13) # ItemTypes.Weapon = 13
|
||||
loot_item.set("WeaponData3D", weapon_resource)
|
||||
|
||||
# ItemTypes.Weapon enum value
|
||||
var item_types_script = load("res://Scripts/ItemTypes.cs")
|
||||
var weapon_enum_value = 9 # ItemTypes.Weapon = 9 (from enum definition)
|
||||
loot_item.set("Item", weapon_enum_value)
|
||||
|
||||
# Set weapon data in appropriate property based on mode
|
||||
if is_3d:
|
||||
loot_item.set("WeaponData3D", weapon_resource)
|
||||
else:
|
||||
loot_item.set("WeaponData", weapon_resource)
|
||||
loot_item.set("Amount", 1)
|
||||
loot_item.set("Max", 1)
|
||||
loot_item.set("Selectable", true)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue