summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authortpart <tpart120@proton.me>2025-06-20 18:28:54 +0200
committertpart <tpart120@proton.me>2025-06-20 18:29:02 +0200
commit251cf2fb5c356b2fd69621c3de6152934cdbc6bd (patch)
treea0fa6c023561f39ad5ff31893f07de22a172c25f /client
parent071dba66042381950c361cdf8e83b1d07720d1d8 (diff)
downloadhurrycurry-251cf2fb5c356b2fd69621c3de6152934cdbc6bd.tar
hurrycurry-251cf2fb5c356b2fd69621c3de6152934cdbc6bd.tar.bz2
hurrycurry-251cf2fb5c356b2fd69621c3de6152934cdbc6bd.tar.zst
Fix incorrect player cursor behaviour
Diffstat (limited to 'client')
-rw-r--r--client/player/controllable_player.gd12
1 files changed, 8 insertions, 4 deletions
diff --git a/client/player/controllable_player.gd b/client/player/controllable_player.gd
index 5fb99872..d329aeea 100644
--- a/client/player/controllable_player.gd
+++ b/client/player/controllable_player.gd
@@ -273,7 +273,7 @@ func update_interact_target_dirsnap():
var tile_center := Vector2(offset_cursor) + Vector2(0.5, 0.5)
if game.get_tile_interactive(offset_cursor):
- var cursor_tile_distance := (interact_target - tile_center).length()
+ var cursor_tile_distance := interact_target.distance_to(tile_center)
var player_tile_distance := Vector2(
movement_base.position.x - tile_center.x,
movement_base.position.z - tile_center.y
@@ -288,6 +288,7 @@ func update_interact_target_dirsnap():
# Check if there are any players on this tile.
# If there are multilpe, remember the player closest to the center of the tile
# (They will be the interact target)
+ var best_cursor_tile_distance := 100.
var best_player_tile_distance := 100.
var best_player_pos: Vector3
for p_id: int in player_positions.keys():
@@ -295,13 +296,16 @@ func update_interact_target_dirsnap():
var p_pos: Vector3 = player_positions[p_id]
var p_pos_2d := Vector2(p_pos.x, p_pos.z)
var tile_center_distance := p_pos_2d.distance_to(tile_center)
+ var cursor_tile_distance := interact_target.distance_to(tile_center)
var player_tile_distance := Vector2(movement_base.position.x, movement_base.position.z).distance_to(tile_center)
if tile_center_distance < 0.7:
- if player_tile_distance < best_player_tile_distance:
+ if cursor_tile_distance < best_cursor_tile_distance:
+ best_cursor_tile_distance = cursor_tile_distance
best_player_tile_distance = player_tile_distance
best_player_pos = p_pos
- if best_player_tile_distance < MAX_PLAYER_INTERACT_DIST && best_player_tile_distance < best_distance:
+
+ if best_player_tile_distance < MAX_PLAYER_INTERACT_DIST && best_cursor_tile_distance < best_distance:
found_interact_target = true
- best_distance = best_player_tile_distance
+ best_distance = best_cursor_tile_distance
target_visual = best_player_pos
target_tile = offset_cursor