Fixed annoying error

This commit is contained in:
Rendo 2025-11-28 18:59:23 +05:00
commit aa1c1c8d64
8 changed files with 38 additions and 49 deletions

View file

@ -7,9 +7,3 @@ const IMPULSE = 10
@export var slot: StringName
@export var weapon: WeaponSubStateMachine
@export var team: Session.TEAMS
@rpc("any_peer","call_local","reliable")
func drop(direction: Vector3,new_position: Vector3):
apply_impulse(direction * IMPULSE)
global_position = new_position

View file

@ -55,14 +55,15 @@ func add(state: WeaponSubStateMachine, slot: StringName) -> void:
state.player = player
state.request_return.connect(return_to_previous)
func switch(to: StringName):
func switch(to: StringName, exit: bool = true):
if slots.has(to) == false or slots[to] == null or slots[to] == current_state or is_multiplayer_authority() == false:
return
current_state.exit()
if current_state.can_be_previous:
last_slot = slots.find_key(current_state)
else:
last_slot = ""
if current_state != null and exit:
current_state.exit()
if current_state.can_be_previous:
last_slot = slots.find_key(current_state)
else:
last_slot = ""
current_state = slots[to]
current_state.enter()
@ -85,8 +86,8 @@ func drop():
$"../PickupRange".start_temp_ignore()
Session.despawn(current_state.get_path())
return_to_previous()
current_state.queue_free()
return_to_previous(false)
# Spawn function
# Data should be a dictionary with these keys:
@ -105,15 +106,16 @@ func pick_up_weapon(data: Variant) -> Node:
func on_weapon_added(weapon: Node):
add(weapon,weapon.slot)
func return_to_previous():
func return_to_previous(exit: bool = true):
if last_slot != "":
switch(last_slot)
switch(last_slot, exit)
else:
switch("knife")
switch("knife", exit)
@rpc("authority","call_remote","reliable")
func update_remotes(to: StringName):
current_state.exit()
if current_state != null:
current_state.exit()
current_state = slots[to]
current_state.enter()