Add enemy creation and viewer functionality with filtering options

This commit is contained in:
MaddoScientisto 2026-02-26 21:58:48 +01:00
commit 18683c0680
32 changed files with 1009 additions and 411 deletions

View file

@ -10,6 +10,7 @@ const SETTINGS_PATH = "user://weapon_creator_settings.tres"
signal create_weapon_requested(weapon_data: Dictionary)
signal create_bullet_requested(bullet_data: Dictionary)
signal create_item_requested(item_data: Dictionary)
signal create_enemy_requested(enemy_data: Dictionary)
# UI elements
var clear_button: Button
@ -18,6 +19,7 @@ var log_output: RichTextLabel
var weapon_viewer: PanelContainer
var bullet_viewer: PanelContainer
var item_viewer: PanelContainer
var enemy_viewer: PanelContainer
var tab_container: TabContainer
var _is_creating: bool = false
@ -123,11 +125,22 @@ func _build_ui() -> void:
item_viewer.item_duplication_started.connect(_on_item_duplication_started)
tab_container.add_child(item_viewer)
# Enemy Viewer Tab
var enemy_viewer_script = load("res://addons/weapon_creator/EnemyViewer.gd")
enemy_viewer = PanelContainer.new()
enemy_viewer.set_script(enemy_viewer_script)
enemy_viewer.name = "Enemies"
enemy_viewer.duplicate_enemy_requested.connect(_on_enemy_data_confirmed)
enemy_viewer.enemy_deleted.connect(_on_enemy_deleted)
enemy_viewer.enemy_duplication_started.connect(_on_enemy_duplication_started)
tab_container.add_child(enemy_viewer)
# Setup after adding to scene tree
if _editor_interface:
weapon_viewer.setup(_editor_interface, self)
bullet_viewer.setup(_editor_interface, self)
item_viewer.setup(_editor_interface, self)
enemy_viewer.setup(_editor_interface, self)
# Log header with label and clear button
var log_header_hbox = HBoxContainer.new()
@ -184,11 +197,13 @@ func _on_options_pressed() -> void:
settings = WeaponCreatorSettings.new()
# Refresh all viewers to pick up new settings
if weapon_viewer:
weapon_viewer.call("refresh_weapons")
weapon_viewer.call("refresh")
if bullet_viewer:
bullet_viewer.call("refresh_bullets")
bullet_viewer.call("refresh")
if item_viewer:
item_viewer.call("refresh_items")
item_viewer.call("refresh")
if enemy_viewer:
enemy_viewer.call("refresh")
)
func _on_weapon_deleted(weapon_name: String, weapon_path: String, item_path: String) -> void:
@ -228,6 +243,21 @@ func _on_item_deleted(item_name: String, item_path: String) -> void:
func _on_item_duplication_started(item_name: String) -> void:
pass
func _on_enemy_data_confirmed(enemy_data: Dictionary) -> void:
if _is_creating:
return
_is_creating = true
log_output.clear()
create_enemy_requested.emit(enemy_data)
func _on_enemy_deleted(enemy_name: String, enemy_path: String) -> void:
pass
func _on_enemy_duplication_started(enemy_name: String, is_3d: bool) -> void:
pass
func add_log(message: String, color: Color = Color.WHITE) -> void:
# Add colored message to log output
log_output.append_text("[color=#" + color.to_html(false) + "]" + message + "[/color]\n")
@ -236,8 +266,10 @@ func set_creation_complete() -> void:
_is_creating = false
if weapon_viewer:
weapon_viewer.call("refresh_weapons")
weapon_viewer.call("refresh")
if bullet_viewer:
bullet_viewer.call("refresh_bullets")
bullet_viewer.call("refresh")
if item_viewer:
item_viewer.call("refresh_items")
item_viewer.call("refresh")
if enemy_viewer:
enemy_viewer.call("refresh")