summaryrefslogtreecommitdiff
path: root/scripts/characters
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/characters')
-rw-r--r--scripts/characters/player_controller_new.gd21
1 files changed, 11 insertions, 10 deletions
diff --git a/scripts/characters/player_controller_new.gd b/scripts/characters/player_controller_new.gd
index 9c8f4ee..f58c689 100644
--- a/scripts/characters/player_controller_new.gd
+++ b/scripts/characters/player_controller_new.gd
@@ -92,16 +92,12 @@ func _process(_delta: float) -> void:
func initiate_use():
if controlling_machine:
machine.relinquish_control()
- machine = null
- controlling_machine = false
- if is_player:
- cam.current = true
return
if $Head/Camera/UseRay.is_colliding():
var area_c = $Head/Camera/UseRay.get_collider()
match area_c.name:
"SteerArea":
- world.rpc_id(1, "_call_on_server", "_client_request_control_vehicle", {"id" : world.client_id, "machine" : area_c.get_parent().name})
+ world.rpc_id(1, "_call_on_server", "_client_request_control_vehicle", {"id" : world.client_id, "machine" : area_c.get_parent().name, "char_name" : name})
#controlling_machine = true
#machine = $Head/Camera/UseRay.get_collider().get_parent().take_control(self)
#var gt = global_transform.origin
@@ -135,7 +131,13 @@ func deselect_character():
world.get_node("DEFAULTCAM").current = true
rpc("set_net_owner", 1)
-func regain_control(_gt):
+func take_control_of_machine(slave_machine):
+ machine = slave_machine
+ controlling_machine = true
+
+func lose_machine():
+ if is_player:
+ cam.current = true
controlling_machine = false
machine = null
@@ -153,10 +155,7 @@ func _physics_process(delta: float) -> void:
func on_floor_test() -> bool:
if $Feet.is_colliding():
is_on_floor = true
- if $Feet.get_collider().has_method("get_linear_velocity"):
- floorspeed = $Feet.get_collider().get_linear_velocity()
- else:
- floorspeed = Vector3.ZERO
+ floorspeed = $Feet.get_collider().get_linear_velocity() if $Feet.get_collider().has_method("get_linear_velocity") else Vector3.ZERO
return true
if player_state:
for i in range(player_state.get_contact_count()):
@@ -247,6 +246,8 @@ remotesync func damage(dmg_amt, type, shooter, extra = ""):
if shooter[0] != get_network_master(): world.rpc_id(shooter[0], "game_hitsound")
remotesync func remove_dead_character():
+ if is_network_master() and machine != null:
+ machine.relinquish_control()
deselect_character()
queue_free()