47 lines
1.5 KiB
GDScript3
47 lines
1.5 KiB
GDScript3
|
|
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")
|