bazar_alea/client/player/character.gd
2023-12-04 22:14:32 +01:00

186 lines
5.2 KiB
GDScript

extends CharacterBody3D
@export var speed = 5.0
@export var jump_velocity = 4.5
var camrot_h:float = 0.0
var camrot_v:float = 0.0
@export var h_acceleration:float = 10.0
@export var v_acceleration:float = 10.0
@export var h_sensitivity:float = 0.5
@export var v_sensitivity:float = 0.5
var save_rot:Vector3
var tick:int = 0
var jump:Vector3 = Vector3(0.0, 0.0, 0.0)
var tickjump: int = 0
# Get the gravity from the project settings to be synced with RigidBody nodes.
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
@export var otherplayer:bool = true:
get:
return otherplayer
set(value):
otherplayer = value
func set_otherplayer(value:bool):
otherplayer = value
#
#func _set(property:String, value) -> bool:
# if property == "position":
# print("changed position ",value)
# return false
func _ready():
$SpringArm3D/Camera3D.set_current(false)
set_process(false)
$CharacterMovementComponent.start_jump.connect(_on_start_jump)
# $CameraComponent.set_process(false)
# $PlayerController.set_process(false)
# $PlayerNetworkingComponent.set_process(false)
# $CharacterMovementComponent.set_process(false)
# $TargetingComponent.set_process(false)
# $CombatSystem.set_process(false)
# $AttributesManager.set_process(false)
# $AttributesManager/HealthAttribute.set_process(false)
# $AttributesManager/StaminaAttribute.set_process(false)
#$PlayerGameplayComponent.update_animations()
func _on_start_jump(vertical_velocity:Vector3):
jump = vertical_velocity
tickjump += 1
func get_my_position() -> Vector3:
#return $SpringArm3D/Camera3D.get_global_position()
return self.get_global_position()
func get_my_rotation() -> Vector3:
#return $SpringArm3D/Camera3D.get_global_rotation()
#return $Armature/Skeleton3D.get_global_rotation()
#print($Armature/Skeleton3D.get_global_rotation(), "---", $Armature.get_global_rotation())
return $Armature.get_global_rotation()
func is_jump() -> bool:
return jump != Vector3( 0.0, 0.0, 0.0)
func get_jump() -> Vector3:
var ret:Vector3 = jump
jump = Vector3(0.0, 0.0, 0.0)
return ret
func get_tickjump() -> int:
return tickjump
func update_player(ctick:int, pos:Vector3, rot:Vector3, extra:int, ctickjump:int, vel:Vector3):
#print(tick, " - ", ctick)
if tick != ctick:
set_my_rotation(rot)
print("extra:", extra, " ctickjump:", ctickjump, " tickjump:", tickjump)
if extra & 1:
set_my_position_onlyground(pos)
if tickjump == ctickjump:
print("Already Jump")
return
tickjump = ctickjump - 1
$CharacterMovementComponent.jump()
print("Go Jump")
elif tickjump == 0 or $GroundCheck.is_colliding():
print("No Jump")
tickjump = 0
set_my_position(pos)
else:
set_my_position_onlyground(pos)
print("Always Jump")
tick = ctick
func set_my_position(pos:Vector3):
self.set_global_position(pos)
func set_my_position_onlyground(pos:Vector3):
var newpos:Vector3 = Vector3(pos.x, self.get_global_position().y ,pos.z)
self.set_global_position(newpos)
func set_my_rotation(rot:Vector3):
save_rot = rot
print("Update ->" + str(rot))
$Armature.set_global_rotation(rot)
#$CharacterMovementComponent.input_direction = rot
pass
func set_current_camera() -> void:
$SpringArm3D/Camera3D.set_current(true)
func set_id(value:int) -> void:
$PlayerNetworkingComponent.set_id(value)
func set_activate() -> void:
#$AnimationTree.set_active(true)
#$AnimationTree.set("parameters/Transition/transition_request","Idle")
set_process(true)
#func set_animation_tree_blend_positions(input_vector: Vector2) -> void:
# #print("Blend Position: ", input_vector)
# $AnimationTree.set("parameters/Idle/blend_position", input_vector)
# $AnimationTree.set("parameters/Walk/blend_position", input_vector)
func get_comment() -> String:
return str(save_rot) + \
" -> " + str($PlayerNetworkingComponent.is_local_authority()) + \
" -> " + str($CharacterMovementComponent.input_direction)
func get_animation() -> String:
return $AnimationTree.get("parameters/Transition/current_state") + \
", " + str($AnimationTree.get("parameters/InAir/blend_amount"))
# return $AnimationTree.get("parameters/Transition/current_state") + \
# ", " + str($AnimationTree.get("parameters/InAir/blend_amount")) + \
# ", active:" + str($AnimationTree.is_active()) + \
# ", " + str($AnimationPlayer.get_current_animation()) + \
# ", " + str($AnimationPlayer.get_current_animation_position()) + \
# ", " + str($AnimationPlayer.get_autoplay()) + \
# ", playing:" + str($AnimationPlayer.is_playing()) + \
# ", " + str($AnimationTree.get("parameters/Transition/current_state")) + \
# ", " + str($AnimationTree.get("parameters/Transition/current_index"))
func get_gait() -> String:
return Global.GAIT.keys()[$CharacterMovementComponent.gait]
func get_stance() -> String:
return Global.STANCE.keys()[$CharacterMovementComponent.stance]
func get_rotation_mode() -> String:
return Global.ROTATION_MODE.keys()[$CharacterMovementComponent.rotation_mode]
func get_movement_state() -> String:
return Global.MOVEMENT_STATE.keys()[$CharacterMovementComponent.movement_state]
#
func _process(_delta):
if ! $PlayerNetworkingComponent.is_local_authority():
if get_my_rotation() != save_rot:
print("Ohhhhhh : " + str( get_my_rotation()) + " != " + str(save_rot))
print("Ohhhhhh")
else:
print("Superrrr")
# $Armature.set_global_rotation(save_rot)