diff options
Diffstat (limited to 'client/player')
| -rw-r--r-- | client/player/controllable_player.gd | 25 | ||||
| -rw-r--r-- | client/player/player.gd | 13 | 
2 files changed, 19 insertions, 19 deletions
| diff --git a/client/player/controllable_player.gd b/client/player/controllable_player.gd index da2cffcd..f83a08f6 100644 --- a/client/player/controllable_player.gd +++ b/client/player/controllable_player.gd @@ -28,7 +28,6 @@ var onscreen_controls = preload("res://player/onscreen_controls/controls.tscn").  var facing = Vector2(1, 0)  var velocity_ = Vector2(0, 0)  var stamina = 0 -var boosting := false  var was_boosting := false  var chat_open := false @@ -41,7 +40,7 @@ func _ready():  	add_child(timer)  	timer.start()  	timer.connect("timeout", func(): -		game.mp.send_position(position_, rotation_) +		game.mp.send_position(position_, rotation_, boosting)  	)  	add_child(onscreen_controls)  	super() @@ -67,8 +66,6 @@ func _process_movement(delta):  	var input = Input.get_vector("left", "right", "forward", "backwards")  	var boost = Input.is_action_pressed("boost") or (Global.get_setting("latch_boost") and boosting)  	input = input.rotated( - game.camera.angle_target) -	position_anim = position_ -	rotation_anim = rotation_  	if Input.is_action_pressed("interact") or Input.is_action_just_released("interact"):  		input *= 0  	else: @@ -77,9 +74,13 @@ func _process_movement(delta):  			int(floor(position.z + cos(rotation.y)))  		)  	interact() +	var was_boosting = boosting  	update(delta, input, boost) -	character.walking = input.length_squared() > 0.1 -	character.boosting = boosting +	if boosting and not was_boosting: +		Input.start_joy_vibration(0, 0, 1, 0.15) +	walking = input.length_squared() > 0.1 +	position_anim = position_ +	rotation_anim = rotation_  func update(dt: float, input: Vector2, boost: bool):  	input = input.limit_length(1.); @@ -88,14 +89,8 @@ func update(dt: float, input: Vector2, boost: bool):  	rotation_ = atan2(self.facing.x, self.facing.y);  	boost = boost and input.length() > 0.1  	boosting = boost and (boosting or stamina >= 1.0) and stamina > 0 -	if boosting: -		stamina -= dt / BOOST_DURATION -		if not was_boosting: -			Input.start_joy_vibration(0, 0, 1, 0.15) -		was_boosting = true -	else: -		stamina += dt / BOOST_RESTORE -		was_boosting = false +	if boosting: stamina -= dt / BOOST_DURATION +	else: stamina += dt / BOOST_RESTORE  	stamina = max(min(stamina, 1.0), 0.0)  	var speed = PLAYER_SPEED * (BOOST_FACTOR if boosting else 1.)  	self.velocity_ += input * dt * speed; @@ -132,7 +127,7 @@ func collide(dt: float):  func aabb_point_distance(mi: Vector2, ma: Vector2, p: Vector2) -> float:  	return (p - p.clamp(mi, ma)).length() -func update_position(_new_position: Vector2, _new_rotation: float): +func update_position(_new_position: Vector2, _new_rotation: float, _new_boosting: bool):  	pass  func submit_message(text: String): diff --git a/client/player/player.gd b/client/player/player.gd index 1b82b90e..569c1b88 100644 --- a/client/player/player.gd +++ b/client/player/player.gd @@ -26,6 +26,8 @@ var rotation_ = 0.  var rotation_anim = 0.  var position_ = Vector2(0, 0)  var position_anim = Vector2(0, 0) +var boosting := false +var walking := false  var username: String  var character: Character = preload("res://player/character/character.tscn").instantiate() @@ -67,13 +69,14 @@ func _init(_id: int, new_name: String, pos: Vector2, new_character_idx: int, new  func _ready():  	character.select_hairstyle(character_idx)  	clear_timer.timeout.connect(clear_message) -	 +  	update_username_tag()  	Global.settings_changed.connect(update_username_tag) -func update_position(new_position: Vector2, new_rotation: float): +func update_position(new_position: Vector2, new_rotation: float, new_boosting: bool):  	position_ = new_position  	rotation_ = new_rotation +	boosting = new_boosting  func update_username_tag():  	var tag: Label3D = character.username_tag @@ -131,8 +134,10 @@ func _process(delta):  	position.x = position_anim.x  	position.z = position_anim.y  	rotation.y = rotation_anim -	character.walking = position_.distance_squared_to(position_anim) > 0.001 - +	walking = walking or position_.distance_squared_to(position_anim) > 0.001 +	character.walking = walking +	character.boosting = boosting +	walking = false  func clear_message():  	item_bubble.remove_item() | 
