aboutsummaryrefslogtreecommitdiff
path: root/client/player
diff options
context:
space:
mode:
Diffstat (limited to 'client/player')
-rw-r--r--client/player/controllable_player.gd25
-rw-r--r--client/player/player.gd13
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()