eNEMIES!!!!!!!!!
Enemys and enemy spawner - Press N to spawn wave - Press H to togglt hitboxs
This commit is contained in:
+30
-2
@@ -6,6 +6,8 @@ extends Node3D
|
||||
@onready var players_container: Node3D = $PlayersContainer
|
||||
@onready var weapons_container: Node3D = $WeaponsContainer
|
||||
@onready var enemies_container: Node3D = $EnemiesContainer
|
||||
@onready var enemy_spawner: EnemySpawner = $EnemySpawner
|
||||
@onready var player_spawn_points: Node3D = $PlayerSpawnPoints
|
||||
@onready var menu: Control = $Menu
|
||||
@onready var main_menu: VBoxContainer = $Menu/MainContainer/MainMenu
|
||||
@export var player_scene: PackedScene
|
||||
@@ -17,6 +19,8 @@ var _weapon_spawn_counter: int = 0
|
||||
var _active_weapons: Dictionary = {} # weapon_id -> WorldWeapon reference
|
||||
# Track if we've already initialized to prevent double-spawning
|
||||
var _multiplayer_initialized: bool = false
|
||||
# Track next spawn point for round-robin spawning (server-side only)
|
||||
var _next_spawn_index: int = 0
|
||||
|
||||
# multiplayer chat
|
||||
@onready var message: LineEdit = $MultiplayerChat/VBoxContainer/HBoxContainer/Message
|
||||
@@ -342,8 +346,22 @@ func _spawn_player_local(id: int, spawn_pos: Vector3):
|
||||
# rpc("sync_player_position", id, player.position)
|
||||
|
||||
func get_spawn_point() -> Vector3:
|
||||
var spawn_point = Vector2.from_angle(randf() * 2 * PI) * 10 # spawn radius
|
||||
return Vector3(spawn_point.x, 0, spawn_point.y)
|
||||
# Use PlayerSpawnPoint container if available
|
||||
if player_spawn_points and player_spawn_points.get_child_count() > 0:
|
||||
var spawn_children = player_spawn_points.get_children()
|
||||
|
||||
# Use round-robin to distribute players across spawn points
|
||||
var spawn_index = _next_spawn_index % spawn_children.size()
|
||||
_next_spawn_index = (spawn_index + 1) % spawn_children.size()
|
||||
|
||||
var spawn_node = spawn_children[spawn_index]
|
||||
print("[Level] Using spawn point ", spawn_index, " at ", spawn_node.global_position)
|
||||
return spawn_node.global_position
|
||||
else:
|
||||
# Fallback to random circle spawn if no spawn points defined
|
||||
print("[Level] Warning: No PlayerSpawnPoint container found, using fallback random spawn")
|
||||
var spawn_point = Vector2.from_angle(randf() * 2 * PI) * 10 # spawn radius
|
||||
return Vector3(spawn_point.x, 0, spawn_point.y)
|
||||
|
||||
func _remove_player(id):
|
||||
if not multiplayer.is_server() or not players_container.has_node(str(id)):
|
||||
@@ -388,6 +406,16 @@ func _input(event):
|
||||
toggle_chat()
|
||||
elif event is InputEventKey and event.keycode == KEY_ENTER:
|
||||
_on_send_pressed()
|
||||
elif event is InputEventKey and event.keycode == KEY_N and event.pressed:
|
||||
# Start next wave (server only, press N)
|
||||
if multiplayer.is_server() and enemy_spawner:
|
||||
enemy_spawner.start_next_wave()
|
||||
print("[Level] Starting wave via N key")
|
||||
elif event is InputEventKey and event.keycode == KEY_H and event.pressed:
|
||||
# Toggle hitbox/hurtbox debug visualization
|
||||
HitBox.debug_visible = not HitBox.debug_visible
|
||||
HurtBox.debug_visible = not HurtBox.debug_visible
|
||||
print("[Level] Hitbox/Hurtbox debug visibility: ", HitBox.debug_visible)
|
||||
|
||||
func _on_send_pressed() -> void:
|
||||
var trimmed_message = message.text.strip_edges()
|
||||
|
||||
Reference in New Issue
Block a user