bazar_alea/client/player/PlayerGameplayComponent.gd
2023-11-19 20:41:38 +01:00

52 lines
2 KiB
GDScript

extends CharacterMovementComponent
class_name PlayerGameplayComponent
@export_group("Stamina System", "stamina_")
@export var stamina_use: bool = false
@export var stamina_energy_consumption: float = 15.0#per second
@export var stamina_attribute: GameAttribute
@export var networking : PlayerNetworkingComponent
@export var targeting_component : TargetingComponent
func _ready():
targeting_component.connect("detected", func(p): print(p))
func _process(delta):
if gait != Global.GAIT.sprinting and stamina_use:
stamina_attribute.being_used = false
if gait == Global.GAIT.sprinting and stamina_use:
if !stamina_attribute.can_use or stamina_attribute.current_value < stamina_energy_consumption*delta:
gait = Global.GAIT.running
return
stamina_attribute.being_used = true
stamina_attribute.current_value -= stamina_energy_consumption*delta
func _physics_process(delta):
super._physics_process(delta)
# Debug()
if !networking.is_local_authority():
if input_is_moving:
if gait == Global.GAIT.sprinting:
add_movement_input(input_direction, current_movement_data.sprint_speed,current_movement_data.sprint_acceleration)
elif gait == Global.GAIT.running:
add_movement_input(input_direction, current_movement_data.run_speed,current_movement_data.run_acceleration)
else:
add_movement_input(input_direction, current_movement_data.walk_speed,current_movement_data.walk_acceleration)
else:
add_movement_input(input_direction,0,deacceleration)
return
#------------------ Look At ------------------#
match rotation_mode:
Global.ROTATION_MODE.velocity_direction:
if input_is_moving:
ik_look_at(actual_velocity + Vector3(0.0,1.0,0.0))
Global.ROTATION_MODE.looking_direction:
ik_look_at(camera_root.SpringArm.transform.basis.z * 2.0 + Vector3(0.0,1.5,0.0))
Global.ROTATION_MODE.aiming:
ik_look_at(camera_root.SpringArm.transform.basis.z * 2.0 + Vector3(0.0,1.5,0.0))
#func Debug():
# $Status/Label.text = "InputSpeed : %s" % input_velocity.length()
# $Status/Label2.text = "ActualSpeed : %s" % get_velocity().length()