Files
Billiards/scenes/individual_parts/cue/cue_multiplayer.gd

47 lines
1.5 KiB
GDScript3
Raw Normal View History

2026-08-07 02:50:54 -05:00
class_name CueMultiplayer extends CueBase
func setup_multiplayer() -> void:
if not Globals.multiplayer_data.is_multiplayer_active: return
self.set_multiplayer_authority(1)
Globals.multiplayer_data.set_tracking_of_cue(get_path())
Globals.multiplayer_data.set_tracking_of_cue(inclination.get_path())
Globals.multiplayer_data.set_tracking_of_cue(pool_cue_tip.get_path())
if multiplayer.is_server(): return
pool_cue_tip.monitoring = false
@rpc("any_peer", "call_remote", "reliable")
func rpc_input(event: String) -> void:
if not Globals.multiplayer_data.can_do_request(): return
if event == "aim_pulse":
animation_player.play("aim_pulse")
elif event == "aim_release":
# NOTE: Here, 'anim_pos' is used to gague strength of impulse
pool_cue_tip.anim_pos = animation_player.get_current_animation_position()
cue_shape.set_deferred("disabled", false)
cue_kick()
@rpc("any_peer", "call_remote", "reliable")
func rpc_process(action: String, delta: float) -> void:
if not Globals.multiplayer_data.can_do_request(): return
Globals.game_state.update_cue_cam_position.emit(
cue_cam_marker.global_rotation,
cue_cam_marker.global_position
)
if action == "aim_rotate_left":
cue_rotation = rewind_anim(delta, cue_rotation, "aim_rotate")
elif action == "aim_rotate_right":
cue_rotation = forward_anim(delta, cue_rotation, "aim_rotate")
elif action == "aim_incline":
cue_inclination = forward_anim(delta, cue_inclination, "aim_inclination")
elif action == "aim_decline":
cue_inclination = rewind_anim(delta, cue_inclination, "aim_inclination")