Chelimbalo/scripts/multiplayer/spawn_system/dyn_objects_spawner.gd
2025-12-03 20:50:47 +05:00

44 lines
1.2 KiB
GDScript

extends MultiplayerSpawner
func _ready() -> void:
spawn_function = request_spawn
Session.dynamic_objects_spawner = self
func request_spawn(data: Variant) -> Node:
if is_multiplayer_authority() == false: return
if data.has("type") == false or data.has("spawn_name") == false:
return Node.new()
match data.type:
"weapon":
var weapon: DroppableWeapon = Registry.weapons[data.spawn_name].dropped_scene.instantiate()
weapon.apply_central_impulse(data.impulse)
weapon.weapon.ammo = data.ammo
weapon.weapon.remaining_ammo = data.remaining_ammo
weapon.slot = Registry.weapons[data.spawn_name].slot
for key in data.keys():
if key == "impulse" or key == "ammo" or key == "remaining_ammo":
continue
weapon.set(key,data[key])
return weapon
"projectile":
var projectile: RigidBody3D = Registry.spawnable_objects[data.spawn_name].instantiate()
projectile.apply_central_impulse(data.impulse)
for key in data.keys():
if key == "impulse":
continue
projectile.set(key,data[key])
return projectile
"object":
var object: Node3D = Registry.spawnable_objects[data.spawn_name].instantiate()
for key in data.keys():
object.set(key,data[key])
return object
_:
return Node.new()