From f5593483ba906b66779cb4466a7f2c5b2ed004a8 Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Sun, 12 May 2024 12:38:10 +0200 Subject: screen drag + visible object collision shapes --- Start.gd | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Start.gd (limited to 'Start.gd') diff --git a/Start.gd b/Start.gd new file mode 100644 index 0000000..e7b0896 --- /dev/null +++ b/Start.gd @@ -0,0 +1,35 @@ +extends Node2D + + +var drag_anchor = Vector2(0,0) + +# todo: set camera base limit and adjust based on zoom + + +func _input(event): + if event.is_action_pressed("ui_cancel"): + if %Tray.is_open: + %Tray.close() + else: + %Tray.open() + + if event.is_action_pressed("drag_screen"): + drag_anchor = get_global_mouse_position() + + if event is InputEventMouseButton: + if event.is_pressed(): + if event.button_index == MOUSE_BUTTON_WHEEL_UP: + var zoom = min(%Viewport/Camera2D.zoom.x + 0.1, 2) + %Viewport/Camera2D.zoom = Vector2(zoom, zoom) + if event.button_index == MOUSE_BUTTON_WHEEL_DOWN: + var zoom = max(%Viewport/Camera2D.zoom.x - 0.1, 1) + %Viewport/Camera2D.zoom = Vector2(zoom, zoom) + + +func _process(_delta): + if Input.is_action_pressed("drag_screen"): + %Viewport.position += drag_anchor - get_global_mouse_position() + %Viewport.position.x = min(%Viewport.position.x, %Viewport/Camera2D.limit_right - get_viewport_rect().size.x/2) + %Viewport.position.x = max(%Viewport.position.x, %Viewport/Camera2D.limit_left + get_viewport_rect().size.x/2) + %Viewport.position.y = min(%Viewport.position.y, %Viewport/Camera2D.limit_bottom - get_viewport_rect().size.y/2) + %Viewport.position.y = max(%Viewport.position.y, %Viewport/Camera2D.limit_top + get_viewport_rect().size.y/2) -- cgit v1.2.3