diff options
| author | Anson Bridges <bridges.anson@gmail.com> | 2022-09-04 14:57:56 -0700 |
|---|---|---|
| committer | Anson Bridges <bridges.anson@gmail.com> | 2022-09-04 14:57:56 -0700 |
| commit | a0967ebe815cd229b69fb9578f2288b95b2ddb28 (patch) | |
| tree | ce1b06b1d8226c64e3550d674df96a2308f18130 /scripts/characters | |
| parent | 5dbe6302e437c5c1d4431b853c410aa1d52f9b3d (diff) | |
networked machine project. added broken airplane from previous project
Diffstat (limited to 'scripts/characters')
| -rw-r--r-- | scripts/characters/player_controller_new.gd | 21 |
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() |
