aboutsummaryrefslogtreecommitdiff
path: root/game/src/Game
diff options
context:
space:
mode:
author Spartan322 <Megacake1234@gmail.com>2024-08-01 09:20:01 +0200
committer Spartan322 <Megacake1234@gmail.com>2024-08-01 09:21:53 +0200
commit6312f027306360f2afb941fdfbc791277ea6c969 (patch)
tree4ff726ed0fb31eaf66c3efc504bef2a758a3e9e3 /game/src/Game
parentbf4d061b06374cd696f1f1644548f4d7af86f5ec (diff)
Add movement prevention if any gui has focus
Remove _cardinal_movement_vector function in favor of variable Move map movement handling to _unhandled_input Fixes #248
Diffstat (limited to 'game/src/Game')
-rw-r--r--game/src/Game/GameSession/MapView.gd26
1 files changed, 15 insertions, 11 deletions
diff --git a/game/src/Game/GameSession/MapView.gd b/game/src/Game/GameSession/MapView.gd
index 01755ec..bbae02f 100644
--- a/game/src/Game/GameSession/MapView.gd
+++ b/game/src/Game/GameSession/MapView.gd
@@ -190,11 +190,22 @@ func _input(event : InputEvent) -> void:
# REQUIREMENTS
# * SS-31
+# * SS-75
+var _cardinal_movement_vector := Vector2.ZERO
func _unhandled_input(event : InputEvent) -> void:
if event is InputEventMouseMotion:
_mouse_over_viewport = true
queue_province_hover_update()
+ elif event.is_action(_action_north) or event.is_action(_action_south)\
+ or event.is_action(_action_east) or event.is_action(_action_west):
+ _cardinal_movement_vector = Input.get_vector(
+ _action_west,
+ _action_east,
+ _action_north,
+ _action_south
+ ) * _cardinal_move_speed
+
elif event.is_action_pressed(_action_click):
if _mouse_over_viewport:
# Check if the mouse is outside of bounds
@@ -217,6 +228,9 @@ func _unhandled_input(event : InputEvent) -> void:
zoom_out()
func _process(delta : float) -> void:
+ if _cardinal_movement_vector != Vector2.ZERO and get_window().gui_get_focus_owner() != null:
+ _cardinal_movement_vector = Vector2.ZERO
+
if _is_viewport_inactive():
_mouse_over_viewport = false
unset_hovered_province()
@@ -244,7 +258,7 @@ func _movement_process(delta : float) -> void:
if _drag_active:
direction = (_drag_anchor - _mouse_pos_map) * _map_mesh_dims
else:
- direction = _edge_scrolling_vector() + _cardinal_movement_vector()
+ direction = _edge_scrolling_vector() + _cardinal_movement_vector
if direction != Vector2.ZERO:
queue_province_hover_update()
# Scale movement speed with height
@@ -262,16 +276,6 @@ func _edge_scrolling_vector() -> Vector2:
return Vector2()
return mouse_vector * _edge_move_speed
-# REQUIREMENTS
-# * SS-75
-func _cardinal_movement_vector() -> Vector2:
- return Input.get_vector(
- _action_west,
- _action_east,
- _action_north,
- _action_south
- ) * _cardinal_move_speed
-
func _clamp_over_map() -> void:
_camera.position.x = _map_mesh_corner.x + fposmod(_camera.position.x - _map_mesh_corner.x, _map_mesh_dims.x)
_camera.position.z = clamp(_camera.position.z, _map_mesh_corner.y, _map_mesh_corner.y + _map_mesh_dims.y)